15

特定の Debian サーバーで、iostat (および同様の) が、予期せぬ大量のディスク書き込み (バイト単位) を報告します。これらの書き込みを行っているプロセスを特定するのに苦労しています。

2 つの興味深い点:

  1. システム サービスを一度に 1 つずつ無効にしようとしましたが、役に立ちませんでした。ディスク アクティビティはかなり安定しており、予想外に高くなっています。

  2. 書き込みにもかかわらず、ディスク上の全体的なスペースをより多く消費しているようには見えません。

どちらも、書き込みはカーネルが行っていることかもしれないと思いますが、私はスワップしていないので、Linux が何を書き込もうとしているかは明確ではありません。

上で試すことができます:

http://www.atcomputing.nl/Tools/atop/

しかし、カーネルにパッチを当てることは避けたいです。

これを追跡する方法についてのアイデアはありますか?

4

8 に答える 8

17

iotop は優れています (実際には素晴らしい)。

2.6.20 より前のカーネルを使用している場合、これらのツールのほとんどを使用できません。

代わりに、以下を試すことができます (ほとんどの 2.6 カーネル IIRC で機能するはずです)。

    
sudo-s
dmesg -c
/etc/init.d/klogd 停止
エコー 1 > /proc/sys/vm/block_dump
rm /tmp/ディスクログ
「dmesg -c >> /tmp/disklog」を見る
   データの収集が完了したら CTRL-C
エコー 0 > /proc/sys/vm/block_dump
/etc/init.d/klogd 開始
exit (ルートシェルを終了)

猫/tmp/ディスクログ | awk -F"[() \t]" '/(READ|WRITE|dirtied)/ {activity[$1]++} END {for (x in activity) print x, activity[x]}'| 並べ替え -nr -k2

dmesg -c 行は、カーネル ログをクリアします。次に、ロガーが停止され、手動で (watch を使用して) ディスクにダンプされます (メモリ バッファーが小さいため、これを行う必要があります)。約 5 分間実行してから、CTRL-c で監視プロセスを実行します。ロギングを停止して klogd を再始動した後、最後に少しの awk を使用して結果を分析します。

于 2009-01-08T08:03:02.553 に答える
3

2.6.20 より新しいカーネルを使用している場合、これは非常に簡単です。これは、I/O アカウンティングを含む Linux カーネルの最初のバージョンであるためです。独自のカーネルをコンパイルする場合は、必ず以下を含めてください。

CONFIG_TASKSTATS=y
CONFIG_TASK_IO_ACCOUNTING=y

Debian パッケージのカーネルにはこれらのフラグが既に含まれているため、カーネルを再コンパイルする必要はありません。I/O アカウンティング データにリアルタイムでアクセスするための標準ユーティリティは、iotop(1) です。I/O スケジューラによって管理されるプロセスの完全なリストを提供し、プロセスごとの読み取り、書き込み、および使用された合計 I/O 帯域幅の統計を表示します。

于 2008-12-27T20:17:45.507 に答える
2

Linux の iotopを調査することをお勧めします。Solaris のバージョンがいくつか出回っていますが、たとえば Debian パッケージがあります。

于 2008-10-30T12:39:01.150 に答える
1

htopを使用して、IO_RATR列を有効にすることもできます。Htopは優れたトップの代替品です。

于 2009-06-21T10:05:09.503 に答える
1

Brendan Gregg の iosnoopスクリプトは、(ヒューリスティックに) 最近のカーネルで現在使用されているディスクについて教えてくれます (例 iosnoop output )。

于 2014-08-03T07:59:08.900 に答える
1

UNIX コマンドlsof (開いているファイルのリスト) を使用できます。これにより、開いているファイルのプロセス、プロセス ID、ユーザーが出力されます。

于 2008-10-30T08:42:41.610 に答える
0

最近、Filemon のクローンである Mortadelo について聞いたことがありますが、まだ自分で確認していません。

http://gitorious.org/mortadelo

于 2010-02-17T00:59:02.473 に答える
0

SystemTapを試してみることもできます。これには多くの例があり、私が間違っていなければ、この種のことを行う方法を示しています。

于 2008-10-30T08:28:18.440 に答える