psコマンドで認識できないプロセス状態の出力

psコマンドで認識できないプロセス状態の出力

作業ps aux中に、一部のプロセスに次のUbuntu 18.04状態があることを確認しました。I

root         1  0.0  0.0 225520  9144 ?        Ss   10:36   0:02 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    10:36   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        I<   10:36   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        I<   10:36   0:00 [mm_percpu_wq]

ただし、マンページにはこの状態は記載されていませんps

プロセス状態コード以下は、s、stat、およびステータス出力指定子(タイトル「STAT」または「S」)がプロセスの状態を説明するために表示するさまざまな値です。

           D    uninterruptible sleep (usually IO)
           R    running or runnable (on run queue)
           S    interruptible sleep (waiting for an event to complete)
           T    stopped by job control signal
           t    stopped by debugger during the tracing
           W    paging (not valid since the 2.6.xx kernel)
           X    dead (should never be seen)
           Z    defunct ("zombie") process, terminated but not reaped by its parent

   For BSD formats and when the stat keyword is used, additional characters may be displayed:

           <    high-priority (not nice to other users)
           N    low-priority (nice to other users)
           L    has pages locked into memory (for real-time and custom IO)
           s    is a session leader
           l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
           +    is in the foreground process group

このI状態は何ですか?

ベストアンサー1

「怠け者」という意味

    /* states beyond TASK_REPORT: */
    "I (idle)",             /* 0x80 */
引用:トップ出力のLinuxプロセスステータス「I」とはどういう意味ですか?

カーネルのソースコードを詳しく調べると、TASK_REPORT_IDLEプロセスがTASK_IDLE状態にあるときにカーネル(関数)内で返されるように文書化されていることがわかりました__get_task_state

#define TASK_IDLE   (TASK_UNINTERRUPTIBLE | TASK_NOLOAD)

次のカーネルへのコミットも参照してください。スケジュール/スタンバイ:TASK_NOLOADとTASK_IDLEの導入

現在、人々は平均負荷が増加するため、アイドルTASK_INTERRUPTIBLE状態kthreadsで「日」を待つのに慣れています。TASK_UNINTERRUPTIBLEすべてのアイドル状態がkthreads負荷平均に寄与するのは少し愚かです。

kthreadsこれで、すべての信号がブロックされているため、ほとんどがうまく機能します。ただし、loadavgの問題に加えて問題を引き起こす可能性があるため、代わり TASK_UNINTERRUPTIBLEに使用する必要があるいくつかのサイトがあります。

このパッチは、loadavgアカウントの防止TASK_NOLOADと組み合わせて使用​​できる機能を追加します。TASK_UNINTERRUPTIBLE

ほとんどの仮想使用サイトは、スレッドがアイドル状態でタスクを待つループであるため、ヘルパーが導入されTASK_IDLEました。

メモ:これが追加されたと思います。4.14-rc3のLinuxカーネル:

sched/debug: 明示的な TASK_IDLE 印刷の追加

/プロセス

これがLinuxカーネルからのものであることを考えると、ダウンストリームツール(および)は情報を取得するため、明示的に知らせずにこの新しい状態をすぐに表示psできます。topI/proc

/proc以下でステータスを確認できます/proc/<PID>/stat

$ cat /proc/10/stat
10 (lru-add-drain) S 2 0 0 0 -1 69247072 ....
                   ^--- state = S = Sleep

引用する

おすすめ記事