ファイルディスクリプタ
パフォーマンスチェックについてはファイルディスクリプタも1つの指針になってきます。ファイルを同時にたくさん開きすぎている状態というのは、場合によってはリソースを使い切り過剰なプロセス数が動作している可能性があります。
最も簡単な方法はpstat(1)コマンドを実行することでしょう。
これと同じ値はsysctl(8)経由でも取得できます。次のようにkern.openfilesの値を取得すると、現在開いているファイルの数を表示させることができます。
同時に開けるファイルの最大数も同じようにsysctl(8)経由で取得できます。調べる値はkern.maxfilesです。
プロセスが開いているファイルディスクリプタについて調べたい場合には次のようにfstat(1)コマンドを実行します。
これ以上の情報を取得したい場合にはDTraceの機能を使うことになります。たとえば、コマンドが特定の時間内にread(2)システムコールをコールした回数を調べるなら、次のようにdtrace(1)コマンドを実行します。
プロセスが開いたファイルを時系列に順次拾っていきたいのであれば、次のようにdtrace(1)コマンドを実行します。
やはりDTraceが利用できるようになってから、この手のリソース情報の収集や統計情報の収集はDTraceを使うようになったと思います。既存のコマンドを比較して強力なうえに柔軟で、さまざまな情報を欲しいように取得できるからです。
ただし、DTraceの利用はそれほど簡単ではありません。ある程度システムコールやカーネルプログラミングを知っておく必要があります。しかし、強力な機能であり、いまもっとも開発者から注目を浴びている機能のひとつでもあり、今後も開発が続けられるものとみられます。状況をみつつ、次回からはDTraceの使い方についてまとめていこうかなと考えています。
さて、しばらく続けてきたパフォーマンスチェックシリーズは今回でいったん締めようと思います。これまで取り上げてきたコマンドの使い方のほとんどは「USE Method: FreeBSD Performance Checklist」にまとまっていますので、ブックマークしておいてパフォーマンスチェックが必要になった場合には参考にしてみてください。
勉強会
2016年最後のFreeBSD勉強会、日程が変更になりましたのでご注意ください。
第59回 12月13日(水) 19:00- FreeBSD勉強会
ストレージシステムの基盤として使われることの多いZFS。いったん運用を開始あるとあとはボリュームの管理や、ハードウェアの管理、またはより高速なハードウェアの利用などを行いたくなってきます。第59回のFreeBSD勉強会ではそうした部分にフォーカスしてZFSの扱い方を紹介します。このところ続けているFreeBSD ZFS解説シリーズです。
参加申請はこちらから。