/proc/*
最近では、各システムのシステムメトリックを集計するクラスタ監視ツール(ganglia)が使用されています。
- データはどのように
/proc/*
収集されますか?
誰がそこにデータを書きますか?データはどのくらいの頻度で更新されますか? - より正確に収集するために収集方法を調整できますか?
答え1
http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
/procは仮想ファイルシステムなので、非常に特別です。プロセス情報疑似ファイルシステムとも呼ばれます。これには「実際の」ファイルは含まれていませんが、ランタイムシステム情報(システムメモリ、取り付けられているデバイス、ハードウェア構成など)が含まれています。したがって、カーネルの制御と情報センターと見なすことができます。実際、かなりの数のシステムユーティリティはこのディレクトリにあるファイルを呼び出します。たとえば、「lsmod」は「cat /proc/modules」に等しく、「lspci」は「cat /proc/pci」と同義です。このディレクトリのファイルを変更すると、システムの実行中にカーネルパラメータ(sysctl)を読み取ったり変更したりできます。
つまり、定期的に更新されるファイルではなく、カーネルなどから直接入ってくるリアルタイム情報です。
答え2
内部データは/proc
まったく更新されません。要求時に生成されます。
ファイルを読み込むとき/proc
(または実際にどんなファイルを読み込むか)、カーネルを呼び出すことになります。 「実際の」ファイルを読み取ると、カーネルは(キャッシュ、権限などに応じて)ファイルシステムを参照して、要求されたデータを取得します。 「ファイル」を読み込むと、/proc
カーネルはすぐに関連データを生成します。
この技術は非常に普及しており、現在様々なファイルシステム領域で広く使用されている。例えば、/sys
仮想ファイルシステム/proc
アーキテクチャの観点から見ると、内容はまったく異なりますが、非常に似ています。最新のシステムでは、これ/dev
も可能であることがわかります。仮想ファイルシステムそうでなければ、/dev
ファイルをハードウェアの現実と同期させるのはかなり難しいからです。一部のユーザーレベルのサービスは、以下を介して独自の仮想ファイルシステムを提供します。ヒューズ。
答え3
のファイルは/proc
ほとんどの場合デバイスドライバとして実装されています。/dev/ttyS*
プログラマは、ハードウェアからデータを返すのではなく、プログラムによって生成されたデータを返すことを除いて、デフォルトではシリアルデバイス()のように実装されています。
どうすればWebサーバーに似ています。ただし、ファイルがTCPソケットを受信して応答するのではなく、/proc
読み取り要求を受信して応答するデバイスドライバです。
Unixカーネルドライバの設計にはデバイスノードのみをインストールできるように強制することはなかったので、人々はいくつかのランタイム情報を返す仮想デバイスを含むディレクトリを/dev
開発して標準化する機会を得ました。/proc
今日、Linuxカーネルには/proc
ドライバを処理するための特別な方法が含まれています。
以下は、ドライバの例を含むデバイスドライバの記事です/proc
。http://www.linuxdevcenter.com/pub/a/linux/2007/07/05/devhelloworld-a-simple-introduction-to-device-drivers-under-linux.html