作業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
できます。top
I
/proc
/proc
以下でステータスを確認できます/proc/<PID>/stat
。
$ cat /proc/10/stat
10 (lru-add-drain) S 2 0 0 0 -1 69247072 ....
^--- state = S = Sleep