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

Linux シェル/bash

LinuxのCPU使用率を調べる人

LinuxのCPU使用率を調べる人
「Linux環境でCPU使用率の表示方法を調べています。どのようなコマンドにどのようなオプションを指定すればいいでしょうか?コマンドごとの出力結果の違いや機能の違いもわかりやすく比較してほしいです。」

こんな悩みを解決します。

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事で扱うのはLinux/Macのコマンドです

本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。

本記事の内容

1. CPU使用率をsarコマンドで確認する

Linuxのsarコマンドは、1分ごとのCPU使用率を出力するシンプルなコマンドです。sarコマンドは、過去のCPU使用率を遡って確認できるのがポイントです。

※ macをお使いの場合、sarコマンドは標準でインストールされていませんのでご注意ください

過去日のCPU使用率をsarで確認する

過去1ヶ月以内のCPU使用率を確認したい時はsarのログを使います。構文は以下の通りです。

sar -f /var/log/sa/sa[日付]

例えば当月の2日(2日前ではなく、カレンダー上の2日)のCPU使用率を確認したい場合、以下のように指定します。

sarで間隔を指定して現在の情報を取得する

過去のCPU使用率は1分間隔で出力されていますが、現在のCPU使用率を取得する際は間隔と回数を指定可能です。

2. CPU使用率をvmstatコマンドで確認する

vmstatは指定した間隔でCPU使用率やメモリ使用率を集計することができます。1秒や60分というように、負荷を評価したい時間と回数をカスタマイズしたい時に使います。

出力結果のうち、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 仮想マシンから“盗まれた”時間 ※※

3. CPU使用率をtopコマンドで確認する

Linuxのtopコマンドとは、Windowsのタスクマネージャのように現在稼働しているプロセスがどのようなリソースをどのくらい消費しているか定量的に確認できるコマンドです。使い方は簡単で、単にtopと打つだけ。どのユーザでも実行できる便利なコマンドです。

実行結果はこのような感じに、リアルタイム(1秒間隔)でCPU使用率の高い順に起動中のプロセスが表示されます。
Linux topコマンド実行例

topコマンドの実行結果の上部にCPU使用率が表示されます。100からidleを引いた数がその瞬間のCPU使用率になります(上の例では、100-90.33=9.67%がCPU使用率です)。

topコマンドの表示間隔設定

目がチカチカする場合には間隔を調整します。Linuxの場合は-d 《間隔(秒)》、Macの場合は-s 《間隔(秒)》です。

4. sar,vmstat,topの機能比較

sar,vmstat,topの機能の違いを3点挙げたうえで、他の観点も含め比較した結果を表に示します。

  • sarはCPU使用率に特化したコマンドであるのに対し、
    vmstatやtopは他のインフラリソースも評価が可能です(★1)
  • topはサーバ全体のCPU使用率だけでなく、
    プロセス単位でCPU使用率を取得可能です(★2)
sar vmsat top
CPU使用率の表示
CPU使用率 取得間隔の指定
過去のCPU使用率の確認 × ×
CPU以外のリソース
(メモリ、ネットワーク負荷など)の表示★1
×
プロセス単位でのCPU使用率表示★2 × ×

業務上の注意点

今回、CPU使用率を確認するための3つのコマンドを紹介しました。
いずれも特徴が異なり、どれか1つを使えば十分というものではありませんので、調査目的に応じて使い分ける事になります。

なお、sarによる過去のCPU使用率の情報は、定期的にログを取得していなくては参照できません(標準的なLinuxではデフォルトで取得されています)。使いたいときに無かった、という事にならないよう、新しいサーバを利用する場合はログ出力が行われているか事前に確認しておくと良いでしょう(macをお使いの場合、sarコマンドは標準でインストールされていませんのでご注意ください)。

おわりに

今回は以上です。LinuxのCPU使用率を確認する方法を解説しました。実務等で利用する場合の参考になりますと幸いです。