Solaris 10がリリースされてから随分経つが、目玉機能の一つであるSMFがあまり利用されてないように思う。理由は恐らく次のようなことからだろう。
- ドキュメントが乏しい(または難解である)
- XMLを編集しなければならないのが煩わしい
- 既存の仕組み(init.d)でも別に問題がない
しかしSMFは使いこなせば非常に有用なツールである。最も便利だと思うのは、プロセスが停止してしまった時に自動的に再起動してくれる点だ。世の中のすべてのプログラムにはバグがあり、バグによりプロセスが停止することは世の常である。従って、システム管理者たるものプロセスをすぐさま再起動するような仕組みを設けていなければならない。
既存の仕組みではそのようなことをシステムレベルで実装することができず、従って独自のプロセス監視方法などを導入する必要があった。しかしSMFを使えばその仕組みを比較的簡単に実装することができる。SMFはOpenSolarisでも利用可能であり、SMFにサービスを対応させる価値は大いにあるだろう。
DTraceで何かをトレースするときはProbe名を限定してヒットするProbeを減らすべし!述語(predicates)による条件判定のみで解決しようとしてはいけない。さもなくば、トレースする対象のプログラムがスローダウンしてしまうことだろう。
努々次のようなDプログラムを書いてはならない。
PCREのビルドに手こずったので防備録。
shell> ./configure --build=x86_64-solaris && make
:
(snip)
:
ld: fatal: library -lgcc_s: not found
ld: warning: file /usr/sfw/lib/amd64/libstdc++.so: attempted multiple inclusion of file
ld: fatal: File processing errors. No output written to .libs/pcrecpp_unittest
collect2: ld returned 1 exit status
gmake[1]: *** [pcrecpp_unittest] Error 1
gmake[1]: Leaving directory `/export/home/mikiya/src/pcre/pcre-7.6'
gmake: *** [all] Error 2
というエラーが出たらおもむろに
shell> vi libpcrecpp.la
とファイルを編集するべし。そしてlgcc_sとなっている箇所をlgcc_s_amd64にしてmakeを再開する。これでコンパイルが通る。
オトコたるもの、無駄な贅肉を増やさないように心がけねばならぬ。
Solarisを初期インストールすると一つだけやたらと(100MBほど)メモリを食っているプロセスが居る。
javaだ。この
javaプロセスが動かしているアプリケーションは何だ?と思って
shell> /usr/ucb/ps auxwww
を叩いて調べると(
javaはこういうところが面倒臭い)、毎度おなじみ
webconsoleだった。
オトコたるもの、何事も一度決めたら最後まで諦めてはいけない。
2008-04-03
HFX Micro購入。Solaris 10をインストールするも起動せず。H/W故障の可能性を切り分けるためCentOS 5.1をインストール。しかしNICが認識せず!故障を疑ったが単にドライバが足りなかっただけらしい。事前にちゃんと調べていなかったのだが、
Realtek社のRTL8111Cはリリースされて間もないチップだったのだ・・・。RealTek社のサイトで公開されているドライバをインストールすることでNICが認識。
最新のマシンで動作するCentOSは感動的な快適さである!
しかしzoneを使いたいのでSolarisを捨てきれず。
既婚のオトコたるもの、家庭での居場所は狭くてしかるべきである。しかしオタクたるもの、常時起動しているPCが欲しいのは定めである。しかし妻帯者はスペースも予算も厳しいのでなかなか購入には至らなかった。とにかく常時起動モノが欲しくて欲しくて仕方がなく、悩みに悩み抜いた結果、ついに結論を出すこととなった。
皆さんはdtraceをご存じでしょうか?このようなシビレル機能はオトコとしては見逃せません。今回は皆さんにdtraceを紹介しようと思います。