モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

負荷試験などでボトルネックを特定する (sarコマンド)

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2014/11/03
最終更新最終更新
2022/11/07
記事区分記事区分
一般公開

目次

    AWSとAzureが好きです。

    0
    ステッカーを贈るとは?

    sysstatというパッケージに含まれる "sar" (System Admin Reporter) コマンドを利用すると、PCの各リソースの使用状況を表示することができます。これは、負荷試験などでボトルネックを特定するために役立ちます。

    使い方

    インストール例

    $ yum install sysstat
    

    インストールされたrpmパッケージ

    $ rpm -qa | grep sysstat
    sysstat-9.0.4-22.el6_5.1.i686
    

    cronが自動設置されたことが確認可能

    $ rpm -ql sysstat-9.0.4-22.el6_5.1.i686 | grep cron
    /etc/cron.d/sysstat
    

    sarコマンドでは過去のシステムの状況を確認できます。その際に参照するログをcronで取得しているのです。取得間隔を変更するためには

    $ vi /etc/cron.d/sysstat
    

    を編集します。ログを参照するには単に

    $ sar
    

    と実行すればよいです。manなどでも参照可能な後述のオプション "-u" や "-q" も指定可能です。

    数秒間隔でリアルタイムに調査

    過去の情報を参照するだけでなく、リアルタイムに現在のシステムの使用状況をレポートできます。

    $ sar 1 5
    

    とすると1秒間隔で5秒間出力します。

    Linux 2.6.32-431.23.3.el6.i686 (localhost.localdomain)  2014年10月24日  _i686_  (1 CPU)
    00時39分11秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
    00時39分12秒     all      0.00      0.00      1.00      0.00      0.00     99.00
    00時39分13秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    00時39分14秒     all      0.00      0.00      1.00      0.00      0.00     99.00
    00時39分15秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    00時39分16秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    平均値:      all      0.00      0.00      0.40      0.00      0.00     99.60
    

    CPU使用率

    オプションを指定しなかった場合は "-u" を指定したことと同じ内容が出力されます。つまり "sar 1 1 -u" と "sar 1 1" は同義です。「%user」はユーザのプロセスがCPUを使用している時間の割合 (CPU使用率) です。「%system」はシステムプロセスのCPU使用率です。「%iowait」はCPUがI/Oへの読み書きを待っている時間の割合です。「%idle」はCPUが使用されていない時間の割合です。

    $ sar 1 1 -u
    00時53分33秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
    00時53分34秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    平均値:      all      0.00      0.00      0.00      0.00      0.00    100.00
    

    ディスクへの読み書き

    「tps」は "transfers per second" の略で、一秒あたりのI/O読み書きリクエスト数です。「rtps」と「wtps」はそれぞれ read と write で、合計すると "tps" と等しくなります。「bread/s」は "blocks read per second" の意味で、一秒あたりに read されたブロック数です。「bwrtn/s」は "blocks written per second" の意味で、一秒あたりに written されたブロック数です。

    $ sar 1 1 -b
    01時01分19秒       tps      rtps      wtps   bread/s   bwrtn/s
    01時01分20秒      0.00      0.00      0.00      0.00      0.00
    平均値:       0.00      0.00      0.00      0.00      0.00
    

    CPUの使用を要求しているタスク数

    CPUの使用を要求しているタスク (実行待ちまたは実行中) の平均個数をロードアベレージとよび、PCのCPUコア数よりも高くなると処理ができず、実行待ちプロセスが発生します。「runq-sz」は "run queue size" の意味で、実行待ち状態のタスク数です。「ldavg-N」は過去 N 分前までの load average の平均値です。

    $ sar 1 1 -q
    01時20分39秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
    01時20分40秒         0        95      0.00      0.00      0.00
    平均値:          0        95      0.00      0.00      0.00
    

    メモリの使用状況

    例えば「%memused」でメモリ使用率が確認できます

    $ sar 1 1 -r
    01時25分27秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    01時25分28秒    354440    156384     30.61      9332     82420    198784     12.75
    平均値:     354440    156384     30.61      9332     82420    198784     12.75
    

    すべての情報をファイルに書き出して後で解析する

    "-o" ですべての情報のファイル出力ができます。これを1時間実行してみます。

    $ sar -o output.txt 1 3600
    

    負荷試験などが完了したあとで、このファイルを参照すればよいのです。

    $ sar -f output.txt -u
    $ sar -f output.txt -b
    $ sar -f output.txt -q
    $ sar -f output.txt -r
    

    しきい値は 40 % を基準に考える

    二重に冗長化した場合は 40% が基準になります。冗長化したホストのうち、どちらかが落ちたとしても 80% 程度になるため耐えられます。

    過去の日付を指定

    /var/log/sa/ に保存されているファイルを指定することで、直近の X 月 YY 日 の情報を利用できます。

    $ sar -f /var/log/sa/saXX -u
    $ sar -f /var/log/sa/saXX -b
    $ sar -f /var/log/sa/saXX -q
    $ sar -f /var/log/sa/saXX -r
    

    これらの情報はテキストファイルでも保存されています。

    $ less /var/log/sa/sarXX
    

    CPU クロック周波数

    sar -m CPU 1
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    AWSとAzureが好きです。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん12/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん3/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken12/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん3/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ9/30/2017に更新
        いいねアイコン画像0