【Linux】CPU使用率を確認する3つの方法
こんにちは。
普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】
今回は、LinuxのCPU使用率についての解説記事です。
LinuxのCPU使用率を調べる人
「Linux環境でCPU使用率の表示方法を調べています。どのようなコマンドにどのようなオプションを指定すればいいでしょうか?コマンドごとの出力結果の違いや機能の違いもわかりやすく比較してほしいです。」
こんな悩みを解決します。
この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。
これまでの経験を踏まえ、ブログを執筆しています。今回はCPU使用率の確認コマンドの解説に留まらず、実務視点でコマンドの使い方をまとめました。お役にたちましたら幸いです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】
本記事で扱うのはLinux/Macのコマンドです
本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。
本記事の内容
- 1.
sar
コマンドでCPU使用率を確認する - 2.
vmstat
コマンドでCPU使用率を確認する - 3.
top
コマンドでCPU使用率を確認する - 4. sar,vmstat,topの
機能比較
- 5. 業務上の注意点
メモリ使用率&ディスク容量の確認は、以下の2記事で解説
Linuxでメモリ使用率を確認する|メモリ容量/空き容量の確認方法も メモリ容量・メモリ使用量・空き容量を確認する メモリ使用率を確認する メモリ使用率を計算するコマンド リアルタイムにメモリ使用率を確認する 1分に1回&1時間に1回、メモリ使用率を確認する
【Linux】ディスク容量を確認する|ディスク容量監視も解説 dfでディスク容量を確認する dfでディスク容量を監視する
sarでCPU使用率を確認する
Linuxのsarコマンドは、1分ごとのCPU使用率を出力するシンプルなコマンドです。sarコマンドは、過去のCPU使用率を遡って確認できるのが特徴です。
$ sar
※ macをお使いの場合、sarコマンドは標準でインストールされていませんのでご注意ください
過去日のCPU使用率をsarで確認する
過去1ヶ月以内のCPU使用率を確認したい時はsarのログを使います。構文は以下の通りです。
sar -f /var/log/sa/sa[日付]
例えば当月の2日(2日前ではなく、カレンダー上の2日)のCPU使用率を確認したい場合、以下のように指定します。
$ sar -f /var/log/sa/sa02
sarで間隔を指定して現在の情報を取得する
過去のCPU使用率は1分間隔で出力されていますが、現在のCPU使用率を取得する際は間隔と回数を指定可能です。
$ sar 60 60 ←60秒間の平均負荷を60回(=1時間)取得する。
vmstatでCPU使用率を確認する
vmstatは指定した間隔でCPU使用率やメモリ使用率を集計することができます。1秒や60分というように、負荷を評価したい時間と回数をカスタマイズしたい時に使います。
$ vmstat 60 60 ←60秒間の平均負荷を60回(=1時間)取得する。
出力結果のうち、CPUのid
を見ます。idはアイドル状態のことを示しますから、CPU使用率は、(100-id)
です。
vmstatはCPUのほか、メモリやネットワークなど様々なリソース情報を表示しるコマンドです。CPU使用率以外の情報の意味は以下の通りです。
欄 | 記号 | 数値の意味 |
---|---|---|
procs | r | 実行中と実行待ち中のプロセス数の合計 |
b | 割り込み不可能なスリープ状態にあるプロセス数 | |
memory | swpd | 使用中の仮想メモリの量 |
free | 空きメモリの量 | |
buff | バッファとして使用しているメモリの量 | |
cache | キャッシュに使用している量 | |
inact | アクティブではないメモリの量 ※ | |
active | アクティブなメモリの量 ※ | |
swap | si | ディスクからスワップインしているメモリの量 |
so | スワップアウトしている量 | |
io | bi | HDDのようなブロック型デバイスから受け取ったブロック数 |
bo | ブロック型デバイスに送ったブロック数 | |
system | in | 1秒当たりの割り込み回数 |
cs | コンテクストスイッチの回数 | |
cpu | us | カーネルコード以外の実行(ユーザー時間)に使用した時間(ユーザー時間) |
sy | カーネルコードの実行に使用した時間(システム時間) | |
id | 空転していたアイドル時間 | |
wa | I/O待ち時間 | |
st | 仮想マシンから“盗まれた”時間 ※※ |
topでCPU使用率を確認する
Linuxのtopコマンドとは、Windowsのタスクマネージャのように現在稼働しているプロセスがどのようなリソースをどのくらい消費しているか定量的に確認できるコマンドです。使い方は簡単で、単にtop
と打つだけ。どのユーザでも実行できる便利なコマンドです。
$ top
実行結果はこのような感じに、リアルタイム(1秒間隔)でCPU使用率の高い順に起動中のプロセスが表示されます。
topコマンドの実行結果の上部にCPU使用率が表示されます。100からidleを引いた数がその瞬間のCPU使用率になります(上の例では、100-90.33=9.67%がCPU使用率です)。
topコマンドの表示間隔設定
目がチカチカする場合には間隔を調整します。Linuxの場合は-d 《間隔(秒)》
、Macの場合は-s 《間隔(秒)》
です。
$ top -d 3 ←3秒間隔で表示する
topコマンドでCPU消費の原因プロセスを特定する
topコマンドはプロセス単位でCPU使用率を表示できるため、CPU消費の原因となるプロセスを特定することができます….
Linux | topコマンドでCPU消費の原因を特定する
【基本】 topコマンドとは
【実践】 高負荷状態のプロセスを特定する
【応用】 サーバ運用にtopコマンドの実行を組み込む
4. sar,vmstat,topの機能比較
sar,vmstat,topの機能の違いを3点挙げたうえで、他の観点も含め比較した結果を表に示します。
- sarは過去のCPU使用率を遡って確認できます(★1)
- sarはCPU使用率に特化したコマンドであるのに対し、
vmstatやtopは他のインフラリソースも評価が可能です(★2) - topはサーバ全体のCPU使用率だけでなく、
プロセス単位でCPU使用率を取得可能です(★3)
sar | vmsat | top | |
---|---|---|---|
CPU使用率の表示 | |||
CPU使用率 取得間隔の指定 | |||
過去のCPU使用率の確認★1 | |||
CPU以外のリソース (メモリ、ネットワーク負荷など)の表示★2 |
|||
プロセス単位でのCPU使用率表示★3 |
【CPU使用率確認】業務上の注意点
今回、CPU使用率を確認するための3つのコマンドを紹介しました。
いずれも特徴が異なり、どれか1つを使えば十分というものではありませんので、調査目的に応じて使い分ける事になります。
なお、sarによる過去のCPU使用率の情報は、定期的にログを取得していなくては参照できません(標準的なLinuxではデフォルトで取得されています)。
使いたいときに無かった、という事にならないよう、新しいサーバを利用する場合はログ出力が行われているか事前に確認しておくと良いでしょう(macをお使いの場合、sarコマンドは標準でインストールされていませんのでご注意ください)。
おわりに
今回は以上です。LinuxのCPU使用率を確認する方法を解説しました。実務等で利用する場合の参考になりますと幸いです。
Blog TOP Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ
Linux&Linuxコマンドを勉強したい人向けの記事もくじ
用語解説・技術一般
"UNIXとLINUX"の違いについて解説します
CUIとGUIの違い・特徴について解説します
サーバリソースを確認するコマンドの使い方
【Linux】CPU使用率を確認する3つの方法を解説します
【Linux】topコマンドで,CPU消費の原因を特定する方法
【Linux】ps実行時に-efオプションを付ける理由について
【Linux】メモリ使用率を確認する|容量・空きの確認も
【Linux】ディスク容量を確認する|ディスク容量監視も
ファイル操作に関するコマンドの使い方
【Linux】ファイルの行数をカウントする方法を解説
【Linux】文字コード変換ならiconvコマンド1択です
【Linux】/dev/nullを、エンジニアが使う2つの目的
【Linux】findのexecオプションの使い方とその注意点
【Linux】findの結果から圧縮ファイルを作るコマンド
【Linux】hostsの場所はどこ?→/etc/hostsにあります
【Linux】touchコマンドで,時刻更新&空ファイル作成
Linux管理者用コマンドの使い方
【Linux】再起動コマンド(shutdown)の使い方と注意点
よく使う便利なコマンドの使い方
【Linux】改行なしでechoコマンドを使う時の -nオプション
【Linux】sleepコマンドの使用例と注意点について解説する
【Linux】rmコマンドでディレクトリを削除する方法を解説
【Linux】ファイルを削除するコマンド2選【rm以外もあり】
【Linux】awkの区切り文字を指定する,-Fオプションを解説
【Linux】sedで文字列の置換をするeオプションを解説する
【Linux】dateコマンドのフォーマットとその便利な使い方
【Linux】大文字から小文字に変換する方法【小文字から大文字も】
シェルの便利機能
「今の会社を辞めて転職します。エンジニア職に強みのあるおすすめの転職サイト・転職エージェントを教えて欲しい。また好条件で転職するにはどうすれば良いですか?」こんな悩みに答えます。 ITエンジニアに強いおすすめの転職サイト・転職エージェント3選 転職成功には強くてニューゲームが条件。どうやって実現する?