青木日記

<前の日 | この月 | 次の日>

2007-01-26

Mac Book での bitclust update が死ぬほど遅い

ReFe が入ってないことに気付き入れようとしたが、やっぱり BitClust を使うべきだなと思いなおす。

インストール自体は何事もなく終わったのだが、bitclust update が死ぬほど遅い。あまりの遅さに time で計測したら 2 分もかかっていた。メインマシンだと 20 秒で終わる。なんだこれは。メインマシンは Athlon64 の 1.8GHz なので、CPU は Mac Book のほうが速いはずだ。となるとディスクまわりか。

BitClust データベースのサイズが 70MB くらいだったのでとりあえず 80MB を一つのファイルに書いてみると、これは 2 秒で終わる。つまり小さいファイルを作りまくってるのがよくないわけだ。

うーむ。tar フォーマットかなんかで書くようにしようかなあ。

Mac OS X の ps

何気なく 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)


<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|