iotopが "?err"を表示するのはなぜですか?

iotopが "?err"を表示するのはなぜですか?

を実行すると、iotop2番目の列「PRIO」がどこにでも?err表示されます。

ここに画像の説明を入力してください。

どういう意味ですか?マニュアルページでエラーの言及が見つかりませんでした。

私はカスタムコンパイルされたカーネルを使用しています。私のカーネルにいくつかのオプションがありませんか?どちらをどのように探しますか?

編集する

私のカーネルには必要なすべてのオプションがあります。

CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_VM_EVENT_COUNTERS=y

答え1

iotopに必要なカーネルオプションを確認するには?マニュアルページから:

CONFIG_TASK_DELAY_ACCTおよびCONFIG_TASK_IO_ACCOUNTINGオプションは、Linuxカーネルビルド構成で有効にする必要があり、これらのオプションはCONFIG_TASKSTATSによって異なります。

つまり、make menuconfigメニュー(私は5.4用)の一部で、CPU / Task Time and Statisticsサブメニューの下でも確認する必要がありますExport task/process statistics through netlinkEnable per-task delay accountingEnable per-task storage I/O accounting

CONFIG_VM_EVENT_COUNTERS()を確認しても何の害もありません。Enable VM event counters for /proc/vmstat in the General menuなぜですか?ハ、iotopパッケージにvmstat.cというファイルがあるので...もしかして...もしかして...

ちなみに、最終的に必須のCONFIGオプションがない場合、iotopは実行時にエラーを表示する必要があります。

これが最新のカーネルでも機能しているかどうかはわかりませんが、5.4では、かなりのオーバーヘッドが原因でCONFIG_TASK_DELAY_ACCT = yにもかかわらず、ジョブ固有の遅延計算は自動的に有効になりません。実際には、ジョブ固有のレイテンシ計算を有効にするには、カーネルコマンドラインにも追加する
必要があります。delayacct


これでディスプレイの問題について?err:そうだと思います。呪い(iotopが依存するGUIツールキット)は部分的に責任があります。このライブラリは、しばしば現在の言語設定で定義されていない疑問符文字を表示するためです。
したがって、ロケールが一致しないか、... PRIO 値を印刷できません。

しかし、スレッドIRQのIOWを使用してSCHED_RRを実行しますか?スレッドリアルタイムスケジューリングの場合、get_ioprio_from_sched関数(ioprio.cにある)の出力をほとんど把握できないことを認めることができます。 (この場合、nice値は意味がないので(psがそれを表示しようとしなくても)、ioprio-niceの戻り値はioprio_niceに依存します。)

inline int get_ioprio_from_sched(pid_t pid) {
    int scheduler=sched_getscheduler(pid);
    int nice=getpriority(PRIO_PROCESS,pid);
    int ioprio_nice=(nice+20)/5;

    if (scheduler==SCHED_FIFO||scheduler==SCHED_RR)
        return (IOPRIO_CLASS_RT<<IOPRIO_CLASS_SHIFT)+ioprio_nice;
    if (scheduler==SCHED_IDLE)
        return IOPRIO_CLASS_IDLE<<IOPRIO_CLASS_SHIFT;
    return (IOPRIO_CLASS_BE<<IOPRIO_CLASS_SHIFT)+ioprio_nice;
}

関連情報