htopは、ルートなしで現在のユーザープロセスのIO読み書きデータをどこで収集しますか?

htopは、ルートなしで現在のユーザープロセスのIO読み書きデータをどこで収集しますか?

htopIO_RATE IO_READ_RATE IO_WRITE_RATEに関連する単一プロセスの出力をキャプチャする方法が見つかりません。

プロセスが正しく実行されていないことを確認して自動的に再開するには、この情報(フル累積IOではなくIOの最後の数秒(またはわずか1秒))が必要です。

ルートが必要なため使用できませんiotop。これは明らかに不要であるため、ワークフローを複雑にします。

私は可能なすべてを試しましたが、/proc/$PID/...バイトIOに適したものが見つかりませんでした。存在しないのではなく、見つけることができないだけです。

htopしたがって、パイプを介して出力を取得することも解決策で十分かもしれませんが、それは私が必要とするものではありません。

すでに%CPUの出力を取得できますが、top十分ではありませんtop

以下の他のすべての答えは、iotop(いいえ)またはhtop(出力をキャプチャできません)、または役に立たない他のアプリケーションに関するものであるため、次の質問をすることにしました。
実行中のユーザーの実行可能ファイルが読み書きしたIOを監視します。
https://stackoverflow.com/questions/469159/an-htop-like-tool-to-display-disk-activity-in-linuxatopそれが可能であれば、まだどうなるのか理解できませんね…)

答え1

によると、man procあなたが探している情報は次の場所になければなりません/proc/(pid)/io

/proc/[pid]/io (カーネル 2.6.20 以降) このファイルには、プロセスの I/O 統計が含まれています。例: /proc/[pid]/io (カーネル 2.6.20 以降)...

もちろん、このダミーファイルは、構成オプションに基づいてカーネルによって生成された追加の統計に依存するため、見つからない可能性があります。

CONFIG_TASK_IO_ACCOUNTING(ジョブ別ストレージI/O統計の有効化)

したがって、このオプションが設定されていることを確認したら、カーネルを再構築する必要があります。上記のリンクを読むと、他のものを選択する必要があります。その他の構成オプション。 CONFIG_TASK_XACCT(taskstats を使用して拡張アカウントを有効にする) 特に、デフォルトは no で、CONFIG_TASK_IO_ACCOUNTING がこれに依存するためです。


ただし、rootとpidの所有者を除くすべての人がダミーファイルを読み取ることができるという保証はありません。しばらく前に、この問題について多くの議論がありました。これはカーネルのバージョンによって異なる可能性があります。


注:これらのオプションの必要性は、/usr/src/linux/kernel/tsacct.cコードを読むことで推論できます。

#ifdef CONFIG_TASK_XACCT
...
#ifdef CONFIG_TASK_IO_ACCOUNTING
    stats->read_bytes   = p->ioac.read_bytes & KB_MASK;
    stats->write_bytes  = p->ioac.write_bytes & KB_MASK;
    stats->cancelled_write_bytes = p->ioac.cancelled_write_bytes & KB_MASK;
...

関連情報