ruby 2.0.0p195
$ gem install chef-provider-service-daemontool -V
HEAD https://rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
HEAD https://s3.amazonaws.com/production.s3.rubygems.org/latest_specs.4.8.gz
304 Not Modified
ERROR: Could not find a valid gem 'chef-provider-service-daemontool' (>= 0) in any repository
HEAD https://rubygems.org/prerelease_specs.4.8.gz
302 Moved Temporarily
HEAD https://s3.amazonaws.com/production.s3.rubygems.org/prerelease_specs.4.8.gz
304 Not Modified
HEAD https://rubygems.org/specs.4.8.gz
302 Moved Temporarily
HEAD https://s3.amazonaws.com/production.s3.rubygems.org/specs.4.8.gz
304 Not Modified
ここで12秒ぐらいかかる
strace してみる. syscall じゃわからなさそう
$ strace -f -s0 gem install chef-provider-service-daemontool -V
[pid 15338] brk(0xd31c000) = 0xd31c000
[pid 15338] brk(0xd340000) = 0xd340000
[pid 15338] brk(0xd364000) = 0xd364000
[pid 15338] brk(0xd388000) = 0xd388000
[pid 15338] brk(0xd3ac000) = 0xd3ac000
[pid 15338] brk(0xd3d0000) = 0xd3d0000
ここで12秒ぐらいかかる
tmm1 氏の rbtrace 仕込んでみる
$ gem install rbtrace
$ bundle exec which gem
/home/sonots/.rbenv/versions/haikanko/bin/gem
$ vim /home/sonots/.rbenv/versions/haikanko/bin/gem
+ require 'rbtrace'
$ gem install chef-provider-service-daemontool -V
$ rbtrace -p $(ps -ef | grep -v grep | grep gem | awk '{print $2}') --firehose | grep Gem
...
Gem::NameTuple#match_platform? <0.000938>
Gem::Text#levenshtein_distance
Gem::Text#levenshtein_distance <0.000195>
Gem::NameTuple#match_platform?
Gem::Platform.match
Gem.platforms <0.000085>
Gem::Platform.match <0.000682>
Gem::NameTuple#match_platform? <0.000861>
Gem::Text#levenshtein_distance
Gem::Text#levenshtein_distance <0.000212>
Gem::NameTuple#match_platform?
Gem::Platform.match
Gem.platforms <0.000119>
Gem::Platform.match <0.000861>
Gem::NameTuple#match_platform? <0.001166>
Gem::Text#levenshtein_distance
Gem::Text#levenshtein_distance <0.000271>
Gem::NameTuple#match_platform?
Gem::Platform.match
Gem.platforms <0.000081>
Gem::Platform.match <0.000647>
Gem::NameTuple#match_platform? <0.000808>
Gem::Text#levenshtein_distance
Gem::Text#levenshtein_distance <0.000124>
Gem::NameTuple#match_platform?
Gem::Platform.match
Gem.platforms <0.000080>
Gem::Platform.match <0.000582>
Gem::NameTuple#match_platform? <0.000713>
Gem::Text#levenshtein_distance
Gem::Text#levenshtein_distance <0.000128>
Gem::NameTuple#match_platform?
Gem::Platform.match
以下ループ
ここかな https://github.com/ruby/ruby/blob/trunk/lib/rubygems/spec_fetcher.rb#L186-L206