• 検索結果がありません。

mruby/c におけるマークスイープ GC の実装と参照カウント GC との比較

N/A
N/A
Protected

Academic year: 2021

シェア "mruby/c におけるマークスイープ GC の実装と参照カウント GC との比較"

Copied!
1
0
0

読み込み中.... (全文を見る)

全文

(1)

令和元年度 学士学位論文梗概 高知工科大学 情報学群

mruby/c におけるマークスイープ GC の実装と参照カウント GC との比較

1200372 森 翔太郎 【 プログラミング言語研究室 】

1 はじめに

mruby/c

は,組込みシステム向けに開発された,

50KB

程度のメモリで実行できる

Ruby

処理系である1.組込 みシステムは一般にメモリが少なく

CPU

も非力である.

そのため,時間的オーバヘッドや空間的オーバヘッドが 小さい方法でプログラムを処理する必要がある.また,

リアルタイムアプリケーションではなるべく短い停止時 間が求められる.例えば,湿温度センサ

DHT11

のシリ アル通信では,26マイクロ秒の長さで送られる情報を 読み取る必要がある2.mruby/cには参照カウント方式 によるガベージコレクション

(GC)

が実装されている.

参照カウント

GC

は被参照数を記録し,被参照数がゼ ロになった時にオブジェクトを解放する

GC

アルゴリズ ムである.参照カウント

GC

は,マークスイープ

GC

と 比較すると,オブジェクトのサイズが大きく,プログラ ムの実行速度は低速であるが,最大停止時間は短い

[1].

しかし,オブジェクトを解放する時に子オブジェクトの 被参照数が連鎖的にゼロになることがある.このよう な連鎖的な解放が発生した場合には停止時間が長くな る.そこで,mruby/cにおける参照カウント

GC

の妥 当性を調査した.加えてその比較対象として

mruby/c

にマークスイープ

GC

を実装した.

2 評価

参照カウント

GC

,マークスイープ

GC

をそれぞれ実 装した

mruby/c

64bit

32bit

環境の両方でプログ ラムの実行に必要なヒープサイズや実行時間,最大停止 時間の観点から比較した.計測のためのベンチマーク プログラムには,Ruby-benchmark-suiteのサブセット を

mruby/c

用に改変したプログラムと,二分木を生成 するプログラムを用意した.二分木を生成するプログラ ムは,Ruby-benchmark-suiteのサブセットでは評価し きれない,連鎖的な解放の際の性能を調査するために用 意した.実験は以下の環境で行った.

CPU: Intel(R) Core(TM) i7-7820X CPU OS: Ubuntu 16.04.6 LTS

コンパイラ

: gcc 5.4.0

最適化オプション

: -O2

必要ヒープサイズは

32bit

環境ではマークスイープ

GC

の方が小さいプログラムが多かった.これは,

32bit

環境ではマークスイープ

GC

にすることでサイズが削 減できたオブジェクトが多かったためである.しかしフ

1https://www.s-itoc.jp/activity/research/mrubyc/

mrubyc_about/

2http://akizukidensi.com/download/ds/aosong/DHT11_

20180119.pdf

bm_app_fibbm_app_takbm_app_taraibm_partial_sumsbm_fractalbm_fannkuchbm_so_objectbinary_treegeo.mean

0 50 100

[%]150

1 32bit

環境での実行時間

binary_tree(50KB) binary_tree 0.00

0.02 0.04 0.06 0.08 0.10

[ms]

0.183ms

GC GC

2

二分木ベンチマークでの停止時間の比較 ラグメンテーションの影響はマークスイープ

GC

の方 が大きかった.32bit環境でのプログラムの実行時間を 図

1

に示す.実行時間はマークスイープ

GC

の方が概ね 短かったが,一部のプログラムではマークスイープ

GC

の方が実行に時間がかかることがあった.これは

GC

が 頻繁に実行されることが原因で,ヒープサイズを大きく することで軽減された.図

2

は,mruby/cが想定して いる

50KB

程度のメモリで実行できる

82

個のノードの 二分木を繰り返し作るプログラムと,3000個のノード の二分木を繰り返し作るプログラムの最大停止時間を 示している.

50KB

を想定した二分木の解放では,参照 カウント

GC

の最大停止時間はマークスイープ

GC

よ り短く

26

マイクロ秒を下回っていた.3000個のノード の二分木を解放したときの最大停止時間は参照カウン ト

GC

の方が長くなり,どちらの

GC

も最大停止時間 が長くなることを確認した.

3 まとめ

本研究では,mruby/cにおける参照カウント

GC

と マークスイープ

GC

を比較した.必要ヒープサイズは

32bit

環境ではマークスイープ

GC

の方が小さかった.

実行時間は概ねマークスイープ

GC

の方が短かった.最 大停止時間は,多くのメモリを使うプログラムでは問 題になることがあることが分かったが,mruby/cが想 定するメモリ量では問題とならなかった.これらの結果 から,フラグメンテーションや実行時間はプログラムに よって異なったため,プログラムと実行環境に合わせて

GC

を使い分けるべきだと考えた.

参考文献

[1] Stephen M. Blackburn, Perry Cheng and Kathryn

S. McKinley, Myths and Realities: The Per-

formance Impact of Garbage Collection, In

Proc.ACM SIGMETRICS Performance Evalua-

tion Review, 2004, pp.25–36

参照

関連したドキュメント

複合現実(MR)とは現実空間に仮想空間を重ね合わせ 拡張させ、その空間を違和感なく体験することが可能な 技術

概要:タスクの実行時間を考慮に入れるリアルタイムスケジューリング方式では,実行時間として最悪実

本実験は、通信衛星を用いた搬送波位相による衛星

概要:タスクの実行時間を考慮に入れるリアルタイムスケジューリング方式では,実行時間として最悪実

ンと,命令ローテーションなしでデータを再利用しないパ タンでは,約

スポーツ一般の現在の腕前は,上手と答えた者が全体では約 35% ,下手と答えた者が約

本発表では,C#に基づいたコンテキスト指向プログラムと Strategy パターンとの比較を行う.コンテ

実時間処理を妨げる要因の 1