mbed-mruby GVL版マルチスレッドのヒープ使用量を調べた

しばらく間が空いたけれども、mbed-mrubyのスレッドの話の続きです。

下のmrubyのGVLでのマルチスレッド実装がされていますので、これをmbedにのせてみました。目的はmaster版とのスレッドが動いている時のヒープ使用量の比較です。

mirb - Embeddable Interactive Ruby Shell

==================================================
size = 207299, acnt = 3860, fcnt = 562, max = 213044
==================================================
> a = DigitalOut.new LED1
 => #<DigitalOut:0x200b34c8>

==================================================
size = 214774, acnt = 3884, fcnt = 570, max = 263204
==================================================
> b = DigitalOut.new LED2
 => #<DigitalOut:0x200b3360>

==================================================
size = 222254, acnt = 3907, fcnt = 578, max = 270684
==================================================
> c = DigitalOut.new LED3
 => #<DigitalOut:0x200b32d0>

==================================================
size = 229748, acnt = 3931, fcnt = 586, max = 278178
==================================================
> t1 = Thread.new do
*   while 1
*     a.toggle
*     wait 1
*   end
* end
 => #<Thread:0x200b3198>

==================================================
size = 248814, acnt = 3992, fcnt = 607, max = 309523
==================================================
> t2 = Thread.new do
*   while 1
*     b.toggle
*     wait 2
*   end
* end
 => #<Thread:0x200b2fe8>

==================================================
size = 267892, acnt = 4053, fcnt = 628, max = 328601
==================================================
> t3 = Thread.new do
*   while 1
*     c.toggle
*     wait 3
*   end
* end
 => #<Thread:0x200b2f28>

==================================================
size = 286982, acnt = 4116, fcnt = 651, max = 347691
==================================================
> t1.join
 => nil

==================================================
size = 290201, acnt = 4138, fcnt = 668, max = 347691
==================================================
> t2.join
 => nil

==================================================
size = 293420, acnt = 4160, fcnt = 685, max = 347691
==================================================
> t3.join
 => nil

==================================================
size = 296639, acnt = 4182, fcnt = 702, max = 349366
==================================================
>

size がヒープ使用量ですが、VMコピー版マルチスレッドは1スレッド起動毎にVM分の200Kくらいのヒープをとっていたけれど、こちらは全然増えません。
うーん、こっちのが良いですが、GVLってシングルコアの場合も何か不利益あるんだろうか。MPCoreのmbedでたら、もう一度も考えなおさないといけないけど、今後M7のmbedがでてきてもシングルコアだからなあ。

今回、理解せずひとまず載せてしまったので、ちゃんとmasterとどう違うか把握したいのと、次は速度面の比較もしたいです。