【Linux】CPU使用率を確認する3つの方法

Linuxを勉強したい人向け

こんにちは。

普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】

今回は、LinuxのCPU使用率についての解説記事です。

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環境では一部の動作が異なることがあります。

本記事の内容

メモリ使用率&ディスク容量の確認は、以下の2記事で解説

Linuxでメモリ使用率を確認する|メモリ容量/空き容量の確認方法も

 メモリ容量・メモリ使用量・空き容量を確認する
 メモリ使用率を確認する
 メモリ使用率を計算するコマンド
 リアルタイムにメモリ使用率を確認する
 1分に1回&1時間に1回、メモリ使用率を確認する
【Linux】ディスク容量を確認する|ディスク容量監視も解説

 dfでディスク容量を確認する
 dfでディスク容量を監視する

sarでCPU使用率を確認する

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使用率を確認する

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使用率の高い順に起動中のプロセスが表示されます。
Linux topコマンド実行例

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消費の原因となるプロセスを特定することができます….

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使用率確認】業務上の注意点

今回、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】大文字から小文字に変換する方法【小文字から大文字も】

シェルの便利機能

  【Linux】コマンド履歴を検索する【Ctrl+r】