2007年01月17日
Yesterday's Discussions
学校に行くまで時間が空いたので昨日の事をつらつら。
0. DiskもMemoryもCPUもLinuxもglibcもlibstdc++もg++もboostも自分も信じられない。
定期的に陥る。特に次のような時。
- 言語処理系が落ちた時
- OSが吹っ飛びそうな負荷をかけた時
- 納期直前
要約すると同時期。
1. "nohup"コマンドの実装はどうなっているか?
ちゅんさんにdouble fork trickというのを教えてもらったのでそれかなと思っていたが、coreutilsのソースを読んでみると全然違った。
(その1) 子プロセスfork -> 孫プロセスfork -> 孫プロセスexecv -> 子プロセスexit (double fork trick)
(その2) signal(SIGHUP, SIG_IGN) -> execv (coreutils)
「no HUP」の名前の意味にはっと気づかされた。
2. 命令の依存関係は維持しつつも、Stallを減らしてかつDelay Slotを埋めるような最適な命令列並び替えアルゴリズム
近似解を得られそうなものをnuさんと頑張ってグラフを睨めっこしながら考案した。有名なアルゴリズムが有りそうなもんだが・・・。
3. インライン展開は諸刃の剣
大きい関数をインライン展開をすると命令数事態は減るが、キャッシュミス率が上がってしまい逆に性能が下がる。というのを肌で体感させられた。
4. Webのサムネイル生成プログラム
Ruby-Gnome2 + MozillaEmbeddedで作ってみたが、遅いし不安定。はてなスクリーンショットはどうやっているのかなと調べていたら「crenahtml2jpg」というソフトを外部コマンドで呼び出しているだけのようである。後は適当にサーバー化して(XMLRPCなりdRubyなり)、フロントエンドサーバーから叩けるようにしてあるんだろう。ちょっと興ざめ。
5. 寝れない
スケジューラー書いてたらこんな時間。
さて、今日はネットワークの授業。
- by
- at 08:44

comments