From: akr@... Date: 2014-09-28T12:42:50+00:00 Subject: [ruby-dev:48583] [ruby-trunk - misc #10297] [Feedback] r47670 make benchmark/bm_vm_thread_create_join.rb slow Issue #10297 has been updated by Akira Tanaka. 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 [pid 5241] 0.000006 futex(0x7f411ddef768, FUTEX_WAKE_PRIVATE, 1 ... ``` prctl のところがスレッドの名前を登録するところです。 ---------------------------------------- misc #10297: r47670 make benchmark/bm_vm_thread_create_join.rb slow https://bugs.ruby-lang.org/issues/10297#change-49129 * Author: Narihiro Nakamura * Status: Feedback * Priority: Normal * Assignee: Akira Tanaka * Category: core * Target version: current: 2.2.0 ---------------------------------------- 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 -- https://bugs.ruby-lang.org/