Project

General

Profile

Actions

Misc #10297

closed

r47670 make benchmark/bm_vm_thread_create_join.rb slow

Added by authorNari (Narihiro Nakamura) about 10 years ago. Updated about 10 years ago.

Status:
Closed
[ruby-dev:48578]

Description

nariです。

r47670でbm_vm_thread_create_join.rbが10%ほど遅くなったようです。
スレッドをバンバン生成するベンチマークなので、スレッドに名前付けするところの影響がでているかなと思いました(が詳しいところは計測できていません…)。

r47669
% time ./miniruby -e '10000.times{ Thread.new{}.join }'
./miniruby -e '10000.times{ Thread.new{}.join }' 1.83s user 3.90s system 90% cpu 6.320 total

r47670
% time ./miniruby -e '10000.times{ Thread.new{}.join }'
./miniruby -e '10000.times{ Thread.new{}.join }' 2.30s user 5.30s system 94% cpu 8.038 total

Updated by akr (Akira Tanaka) about 10 years ago

  • Status changed from Open to Feedback

なるほど。たしかに遅くなっているようです。

strace でみると、周辺の処理に比べて桁違いに時間がかかっているわけではないようなので、
ハングしたときとかにスレッドが何者なのか ps で見れるようにするコストということでどうかなぁ。

% strace -f -r ./miniruby -e 'Thread.new{}.join'
...
[pid  5243]      0.000015 munmap(0x7f4118000000, 54882304) = 0
[pid  5243]      0.000014 mprotect(0x7f4114000000, 135168, PROT_READ|PROT_WRITE) = 0
[pid  5243]      0.000017 sched_getaffinity(5243, 32, {f, 0, 0, 0}) = 32
[pid  5243]      0.000017 sigaltstack({ss_sp=0x7f411df7a230, ss_flags=0, ss_size=8192}, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
[pid  5243]      0.000022 prctl(PR_SET_NAME, 0x7f411b556e80, 0x4, 0x8, 0) = 0
[pid  5243]      0.000019 futex(0x7f411ddef6f4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7f411ddef6f0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
[pid  5241]      0.000013 <... futex resumed> ) = 0
[pid  5243]      0.000008 madvise(0x7f411b457000, 1028096, MADV_DONTNEED <unfinished ...>
[pid  5241]      0.000006 futex(0x7f411ddef768, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
...

prctl のところがスレッドの名前を登録するところです。

Updated by authorNari (Narihiro Nakamura) about 10 years ago

  • Status changed from Feedback to Closed

確認ありがとうございます。

ハングしたときとかにスレッドが何者なのか ps で見れるようにするコストということでどうかなぁ。

そうですね。では閉じておきます。

Actions

Also available in: Atom PDF

Like0
Like0Like0