1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Linux基礎】vmstatコマンド実行結果からみるCPUの仕事

1
Posted at

はじめに

この記事では、vmstatコマンドの実行結果から、CPUの仕事を図解で理解します。

CPUはOSの中心とはわかっているけど、
「どんな処理をしているのかはよくわからない…」
という方に向けた内容です。

この記事を読むことで、CPUの基本とvmstatのCPU項目(us, sy, wa, id, st)が何を意味しているのかは理解できるようになります。

CPUの基本〜おさらい〜

はじめに、CPUの基本をおさらいします。

主記憶装置とは?

まず、CPUを理解するためには主記憶装置を知っている必要があります。
主記憶装置とは、命令やデータを格納しておく装置を指します。

主記憶装置の内部は細かく区分けされていて、各区画にアドレス(番地)が割り振られています。

CPUとは?

image.png
主記憶装置を踏まえて、CPUの仕事が何かと言いますと、

主記憶装置から「命令」と「データ」を取り出して計算を行い、計算が完了したらその結果(データ)を記憶装置に格納する

ことになります。

image.png
処理の結果をどこに格納するのかというと、レジスタと呼ばれるCPU内の記憶装置に格納されます。

CPUとは?
コンピューター内のいろいろな命令を処理する処理装置。

vmstatで見るCPUの仕事

ここからは、vmstatでCPUの状態を見ていきます。
vmstatでは、-----cpu-----の欄で、CPUが処理する命令のざっくりとした内訳が見れます。
image.png

1. CPUの仕事内容

        CPU 100%(時間)
           │
 ┌────────┼────────┐────────┐
 │        │        │        │
ユーザ   カーネル   待ち・空き  他VMに奪われた
(us)     (sy)    (wa, id)  (st)  

CPUの時間は、上のように分かれていて、それぞれの枠で作業をしています。

仮想環境では、vCPUの割り当てなど物理CPUが共有資源のため、他VMにCPUが奪われる場合があります。
その時間がst(steal)です。

【CPUの1日の仕事】

┌──────────────────────┐
│ ① ユーザ作業 (us)       │ ← アプリ・プログラムを実行
│                      │
├──────────────────────┤
│ ② システム作業 (sy)     │ ← OS・カーネルの処理
│                      │
├──────────────────────┤
│ ③ I/O待ち (wa)         │ ← ディスク・ネット待ち
│                      │
├──────────────────────┤
│ ④ 何もしてない (id)     │ ← アイドル
└──────────────────────┘
│ ④ 何もしてない (st)     │ ← 他のVMに奪われている
└──────────────────────┘

これらの時間を割合すると、100%となります。

2.それぞれの意味(イメージ)

それぞれの命令の内訳と、数値が大きいとどういう問題があるのかというところを
まとめてみていきます。

項目 意味 具体例 現場での見方
us アプリケーションがCPUを使っている時間 Java、Python、Web、DB ビジネス処理が重い
sy OS・カーネルがCPUを使う時間 システムコール、割り込み、メモリ管理、ドライバ OS・ネットワーク・I/O処理
wa ディスク・ネットワーク待ち DBのディスク待ち、ファイル読み込み ストレージやDBが遅い
id CPUが完全に空いている 何も処理していない サーバに余裕あり
st 仮想環境で他VMにCPUを奪われた時間 CPUオーバーコミット、ノイジーネイバー 仮想基盤の問題

vmstatのCPU欄は、CPUがどの仕事に時間を使っているかの内訳で、
「CPUが遅い理由」を切り分けるヒントとなります。

  • waが高い:CPUではなくストレージが原因
  • stが高い:仮想基盤の問題

まとめ

CPUの時間は5つに分かれます。

  • us:アプリ
  • sy:OS
  • wa:I/O待ち
  • id:空き
  • st:仮想化競合

何に時間を使っているかを見ることで、問題切り分けに役立ちます。

参考:
https://for-spring.com/info_com/ft/basic_4-2/#toc1

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?