概要
サーバ監視時にユーザモードとカーネルモードのCPU使用率があり、何が違うのか、そもそも何なのか気になったので調べてみました。タスクマネージャで見る方法もあるのでまとめました。
ユーザモードとカーネルモード
WindowsのCPUの動作モードはユーザモードとカーネルモードがあります。
-
ユーザモード
アプリケーション(Excel、Wordなど)を実行したときのモード -
カーネルモード
メモリ、ディスク、NICなどのリソース、ディスク書き込み、画面表示などシステムを制御、管理を実行しているモード
タスクマネージャでの確認方法
CPUのグラフの上で右クリック、カーネル時間を表示するをクリック
そうすると、これが
これになります。わかりづらいですが、少し濃い水色で点線の部分がカーネルモードのCPU使用率です。
もう少しわかりやすいところを拡大しました。青の部分がユーザモードのCPU使用率、緑の部分がカーネルモードのCPU使用率です。
実験
PowerShellでカウントするだけのスクリプトを実行します。(ユーザモードでアプリケーションを実行することになります。)
カウントを表示する場合(画面表示でカーネルモードを使うと予想)と、しない場合で実行して、タスクマネージャで確認してみます。
while ($i -ne 0) { echo $i; $i++ }
while ($i -ne 0) { $i++ }
予想通り、表示ありだとカーネルモードのCPU使用率が高くなりました。表示なしの場合は、ユーザモードの使用率が大半を占めていました。
ちょっとだけ詳しく
- ほとんどのアプリケーションはユーザモードで実行されます。
- ユーザモードで実行されたアプリケーションはリソースに直接アクセスすることはできません。
- ユーザモードで実行されたアプリケーションがディスク書き込み(Wordで文書を作って保存など)をする場合、カーネルモードに処理を要求します。
なぜ2つのモードがあるのか
ユーザモードで実行されたアプリケーションが暴走したとき、そのアプリケーションだけで影響をとどめ、システム全体に影響しないようにするためです。