ReFe が入ってないことに気付き入れようとしたが、やっぱり BitClust を使うべきだなと思いなおす。
インストール自体は何事もなく終わったのだが、bitclust update が死ぬほど遅い。あまりの遅さに time で計測したら 2 分もかかっていた。メインマシンだと 20 秒で終わる。なんだこれは。メインマシンは Athlon64 の 1.8GHz なので、CPU は Mac Book のほうが速いはずだ。となるとディスクまわりか。
BitClust データベースのサイズが 70MB くらいだったのでとりあえず 80MB を一つのファイルに書いてみると、これは 2 秒で終わる。つまり小さいファイルを作りまくってるのがよくないわけだ。
うーむ。tar フォーマットかなんかで書くようにしようかなあ。
何気なく ps ax したときに思ったんだけど、ps はどっか らプロセス情報を取ってるのだろう。 うーん、/proc はないな。ということは kmem から取って るんだろうか。でも /dev/kmem ないなあ。
strace で調べ…… いや strace ないか。truss? ……で もないな BSD だから ktrace か。当たり。
~ % ktrace ps ax >/dev/null aamine@mac ~ % kdump aamine@mac 9118 ktrace RET ktrace 0 9118 ktrace CALL execve(0xbfffeb8c,0xbffff14c,0xbffff158) 9118 ktrace NAMI "/Users/aamine/bin/ps" 9118 ktrace RET execve -1 errno 2 No such file or directory 9118 ktrace CALL execve(0xbfffeb8c,0xbffff14c,0xbffff158) 9118 ktrace NAMI "/usr/local/bin/ps" 9118 ktrace RET execve -1 errno 2 No such file or directory 9118 ktrace CALL execve(0xbfffeb8c,0xbffff14c,0xbffff158) 9118 ktrace NAMI "/opt/local/bin/ps" 9118 ktrace RET execve -1 errno 2 No such file or directory 9118 ktrace CALL execve(0xbfffeb8c,0xbffff14c,0xbffff158) 9118 ktrace NAMI "/usr/bin/ps" 9118 ktrace RET execve -1 errno 2 No such file or directory 9118 ktrace CALL execve(0xbfffeb8c,0xbffff14c,0xbffff158) 9118 ktrace NAMI "/bin/ps" 9118 ktrace NAMI "/usr/lib/dyld"
……あれ? コマンド開始までしか出てないじゃん。 ダイナミックリンクの後が知りたいわけだが。
そうか、ps が set-uid されてるからだ。 sudo してとりなおし。
% sudo ktrace ps ax >/dev/null % sudo kdump > ps.log
よし。
……ううむ、なんか /dev 以下をアクセスしまくってるのはわか るんだが、 それしかわからん。 というか、これは単にプロセスの tty 情報を集めてるだけのよ うな気がするな。 たぶんプロセス ID を読んだりしてるのはその前だ。 大量の syscall がなんとなく怪しい。
sysctl(3) を見ると、KERN_PROC といういかにもそれっぽいフラ グがあった。 これか。KERN_PROC で検索するとそのものズバリなページが出て きた。
http://developer.apple.com/jp/qa/qa2001/qa1123.html
ちょっとググった感じ、OS X に限らず最近の BSD は sysctl っぽいな。 さすがに kmem 見たりはしてないのね。
(00:36)