お使いのシステムの状態を調査する際、提供されているプログラムやツール、ユーティリティは多数存在します。本章では、最も重要なものの紹介のほか、それらでよく使用されるパラメータについて説明しています。
以降のコマンドの説明では、コマンドの出力例も含めて示されています。たとえば下記の例では、最初の行 (tux
> や root # 以降) がコマンド自身で、それ以降がコマンドの出力になっています。出力が長い場合は大括弧とピリオド ( [...]
) で省略される場合があるほか、 1 行が長い場合は必要に応じて折り返して示しています。なお、行を折り返す場合、行末にはバックスラッシュ ( \
) が書かれます。
>
command -x -y
1 行目の出力 1
2 行目の出力
3 行目の出力 ... 非常に長い出力を行っているため、\
ここで改行しています
4 行目の出力
[...]
98 行目の出力
99 行目の出力
また、できる限り多くのユーティリティを紹介する目的から、説明は短くまとめられています。それぞれのコマンドの詳細については、対応するマニュアルページをお読みください。それ以外にも、ほとんどのコマンドには --help
というオプションが用意されていて、ここから指定可能なパラメータ一覧を取得することができます。
ほとんどの Linux におけるシステム監視ツールは、システム内の 1 つの要素しか参照しない仕組みになっていますが、ツールによっては幅広く監視を行ってくれるものもあります。システムの問題点を絞り込みたい場合は、まずこれらのツールをお使いのうえ、原因を探ってみてください:
vmstat
#Edit sourcevmstat はプロセスやメモリ、 I/O や割り込み、 CPU に関する情報を収集します:
vmstat [オプション] [待ち時間 [回数]]
待ち時間と回数のパラメータを指定しないで実行すると、直近の再起動以降の平均値のみを出力します。待ち時間 (秒単位) を指定して実行すると、指定した時間内 (下記の例では 2 秒) での値を表示します。回数を指定した場合は、 vmstat で情報を表示する回数を指定することができます。回数を指定しない場合は、停止するまで何度も情報を採取し続けます。
vmstat
の出力 #>
vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 44264 81520 424 935736 0 0 12 25 27 34 1 0 98 0 0
0 0 44264 81552 424 935736 0 0 0 0 38 25 0 0 100 0 0
0 0 44264 81520 424 935732 0 0 0 0 23 15 0 0 100 0 0
0 0 44264 81520 424 935732 0 0 0 0 36 24 0 0 100 0 0
0 0 44264 81552 424 935732 0 0 0 0 51 38 0 0 100 0 0
vmstat
の出力 #>
vmstat 2
procs -----------memory----------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
32 1 26236 459640 110240 6312648 0 0 9944 2 4552 6597 95 5 0 0 0
23 1 26236 396728 110336 6136224 0 0 9588 0 4468 6273 94 6 0 0 0
35 0 26236 554920 110508 6166508 0 0 7684 27992 4474 4700 95 5 0 0 0
28 0 26236 518184 110516 6039996 0 0 10830 4 4446 4670 94 6 0 0 0
21 5 26236 716468 110684 6074872 0 0 8734 20534 4512 4061 96 4 0 0 0
vmstat の出力のうち最初の行は、直近の再起動からの平均値を示しています。
それぞれの列の意味は下記のとおりです:
実行可能 (Runnable) 状態にあるプロセスの数を表します。これらのプロセスは実行中でするか、もしくは CPU スロットの空きを待っている状態であることになります。この列に表示されている値が、利用可能な CPU の数よりも定常的に高い場合は、 CPU の能力が不足している可能性を示しています。
CPU 以外のリソースを待機しているプロセスの数を表します。この列の値が高い場合、ネットワークやディスクなど I/O の問題が発生している可能性を示しています。
現在使用中の状態にあるスワップ領域 (キロバイト単位) を表します。
未使用のメモリ (キロバイト単位) を表します。
回収可能な未使用のメモリ量を表しています。この列は、 vmstat
に -a
オプション (推奨) を指定した場合にのみ表示されます。
通常は回収することのできない、使用中のメモリ量を表しています。この列は、 vmstat
に -a
オプション (推奨) を指定した場合にのみ表示されます。
ファイルシステムのメタデータを含む、メモリ内のファイルバッファキャッシュ量 (キロバイト単位) を表しています。こちらの列は、 vmstat
に -a
オプションを指定した場合、表示されません。
ファイル内の実際の内容を含む、メモリ内のページキャッシュ量 (キロバイト単位) を表しています。こちらの列は、 vmstat
に -a
オプションを指定した場合、表示されません。
スワップ領域からメモリ ( si
) 、もしくはメモリからスワップ領域 ( so
) に移動されたメモリ量を、キロバイト毎秒で表した値です。 so
の値が長時間にわたって高いままである場合、アプリケーション側でメモリリーク (漏洩) が発生している可能性があり、そのメモリリークによってメモリがスワップ領域内に書き込まれている可能性があります。また si
の値が長時間にわたって高いままである場合は、長い時間アプリケーションが休眠状態にあって、後から活動状態に戻ったことを表しています。 si
と so
の値が両方とも長時間にわたって高いままである場合は、スワップ領域が多用されていることになりますので、アプリケーションの作業に必要なメモリのほうが実際のメモリ量よりも大きいことを示しています。
ブロックデバイスから受信された (たとえばディスクから読み込んだ) ブロック数を毎秒単位で表した値です。この値は、スワップ領域を使用した場合にも上昇します。ただし、ブロックサイズはファイルシステムによっても異なりますが、 stat ユーティリティを使用することで知ることができます。スループットのデータをご希望の場合は、 iostat をお使いください。
ブロックデバイスに送信した (たとえばディスクに書き込んだ) ブロック数を毎秒単位で表した値です。この値は、スワップ領域を使用した場合にも上昇します。
毎秒の割り込み数を表します。この値が高い場合、 I/O (ネットワークもしくはディスク) の負荷が高いことを表していますが、他の処理でプロセッサ間割り込みを発生させているなど、他の理由によるものかもしれません。割り込みの詳細については、 /proc/interrupts
ファイルをご覧ください。
毎秒のコンテキスト切り替え数を表しています。この値は、カーネルが一方のプロセスから他方のプロセスに処理を移した回数を表しています。
アプリケーションコードを実行するのに消費した CPU 時間の割合を示しています。
カーネルコードを実行するのに消費した CPU 時間の割合を示しています。
待機状態にあった CPU 時間の割合を示しています。この値がずっと 0 であり続けているような場合、 CPU に空きがないことを示しています。ただし、この値が 0 であったからといって、それが悪い知らせであるとは限りません。十分な CPU 性能があるものとお考えの場合は、
や の列の値を読んで原因を探ってみることをお勧めします。"wa" の値が 0 以上になっている場合、入出力処理の待ちによってスループットが落ちていることを表しています。ただし、ファイルを最初に読み込んだ場合や、裏での書き込みが間に合っていないような場合など、どうしても避けられない場合もあります。また、ハードウエアのボトルネック (ネットワークもしくはハードディスク) を示している可能性もあります。このほか、仮想メモリマネージャ (詳しくは 第15章 「メモリ管理サブシステムのチューニング」 をお読みください) でチューニングを行う必要性を示していることもあります。
仮想マシンであることにより、 CPU 時間が確保できなかった割合を示しています。
その他のオプションについては、 vmstat
--help
をお読みください。
dstat
#Edit sourcedstat
は vmstat
, iostat
, netstat
, ifstat
などに対する代替として提供されているツールです。 dstat
はシステムリソースの情報をリアルタイムに表示します。たとえばディスクの使用率と IDE コントローラの割り込みを比較したり、ネットワークの帯域とディスクの帯域を同じタイミングで計測したりすることができます。
既定では読みやすい表形式で出力しますが、表計算プログラムなどに取り込む目的で、 CSV などの出力形式を指定することもできます。
また、このプログラムは Python 言語で記述され、プラグインで機能を拡張することができます。
一般的な書式は下記のとおりです:
dstat [-afv] [オプション..] [間隔 [回数]]
オプションやパラメータは全て必要に応じて設定します。何もパラメータを指定しない場合、 dstat は CPU に関する統計情報 ( -c
, --cpu
), ディスクに関する統計情報 ( -d
, --disk
), ネットワーク に関する統計情報 ( -n
, --net
), ページング ( -g
, --page
), システムの割り込みおよびコンテキストスイッチに関する統計情報 ( -y
, --sys
) をそれぞれ表示します。また、 1 秒間隔で情報を採取するほか、停止するまで半永久的に動作し続けるようになります:
#
dstat
You did not select any stats, using -cdngy by default. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 100 0 0 0| 15k 44k| 0 0 | 0 82B| 148 194 0 0 100 0 0 0| 0 0 |5430B 170B| 0 0 | 163 187 0 0 100 0 0 0| 0 0 |6363B 842B| 0 0 | 196 185
-a
, --all
-cdngy
(既定値) と同じ意味を持ちます
-f
, --full
-C
, -D
, -I
, -N
, -S
にそれぞれ検出されたデバイスを指定したものとして処理されます
-v
, --vmstat
-pmgdsc
, -D total
と同じ意味を持ちます
データを出力する間隔を秒単位で指定します
指定した回数だけ情報を出力して終了するようにします
既定では 1 秒間隔で回数は無制限になります。
詳しくは dstat
のマニュアルページ、もしくは http://dag.wieers.com/home-made/dstat/ にある Web ページをお読みください。
sar
#Edit sourcesar
コマンドを使用することで、 CPU やメモリ、 IRQ の使用状況や I/O 、ネットワーキングに至るまで、ほとんど全ての主なシステム動作状況に対するレポートを生成することができます。必要であれば、リアルタイムなレポートを生成することもできます。また、 sar
は元となるデータを /proc
ファイルシステムを利用して収集します。
sar
コマンドは sysstat パッケージ内に含まれています。 YaST を利用してインストールするか、 zypper in sysstat
と入力して実行し、インストールを行ってください。なお、 sysstat.service
は既定では動作しないようになっていますので、下記のようにして有効化し、起動しておく必要があります:
>
sudo
systemctl enable --now sysstat
sar
によるレポートの生成 #Edit sourceリアルタイムなレポートを生成したい場合は、 sar
コマンドに間隔 (秒単位) と回数を指定してください。また、指定したファイルからレポートを生成したい場合は、間隔と回数の代わりに -f
でファイル名を指定してください。ファイル名も間隔と回数も指定しない場合、 sar
は /var/log/sa/saDD
からレポートを生成しようとします。ここで、 DD は今日の月内日を表します。これは sadc
(System Activity Data Collector) コマンドがデータを書き込む際の既定の場所として決められているものです。複数のファイルを使用したい場合は、 -f
オプションを複数回指定してください。
sar 2 10 # リアルタイムなレポートを生成 (2 秒間隔で 10 回) sar -f ~/reports/sar_2014_07_17 # sar_2014_07_17 ファイルからレポートを生成 sar # /var/log/sa/ 内にある本日分のデータからレポートを生成 cd /var/log/sa && \ sar -f sa01 -f sa02 # /var/log/sa/0[12] ファイルからレポートを生成
下記には、便利な sar
コマンドのオプションと、その解釈が示されています。各列の詳しい意味については、 sar
のマニュアルページ (1)
をお読みください。オプションやレポートに関する詳細についてもマニュアルページをお読みください。
システムの再起動やシャットダウンなどで sysstat
サービスが停止されていた場合でも、ツールは /usr/lib64/sa/sa1 -S ALL 1 1
コマンドを自動的に実行して直近の統計情報を採取し続けます。収集されたバイナリデータはシステムの動作データファイル内に保存されます。
sar
#Edit source何もオプションを指定しないで sar
を実行すると、 CPU 使用率に関する基本的なレポートを生成します。マルチプロセッサ環境では、全ての CPU の結果がまとめて出力されます。個別の CPU について出力を行いたい場合は、 -P ALL
オプションを指定してください。
#
sar 10 5
Linux 6.4.0-150600.9-default (jupiter) 2024年11月03日 _x86_64_ (2 CPU)
17時51分29秒 CPU %user %nice %system %iowait %steal %idle
17時51分39秒 all 57.93 0.00 9.58 1.01 0.00 31.47
17時51分49秒 all 32.71 0.00 3.79 0.05 0.00 63.45
17時51分59秒 all 47.23 0.00 3.66 0.00 0.00 49.11
17時52分09秒 all 53.33 0.00 4.88 0.05 0.00 41.74
17時52分19秒 all 56.98 0.00 5.65 0.10 0.00 37.27
平均値: all 49.62 0.00 5.51 0.24 0.00 44.62
は CPU が I/O リクエストに対する応答を待っていて、待機状態になった時間の割合を示しています。この値が長時間にわたって 0 より高いままである場合は、 I/O システム (ネットワークまたはハードディスク) 内にボトルネックが存在するものと考えられます。また、 が長い時間にわたって 0 になっている場合、お使いの CPU には余裕が無くなっていることを表しています。
sar
-r
#Edit sourceシステムに搭載されたメモリ (RAM) に関する概要を知りたい場合は、オプション -r
を使用します:
#
sar -r 10 5
Linux 6.4.0-150600.9-default (jupiter) 2024年03月11日 _x86_64_ (2 CPU)
17時55分27秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
17時55分37秒 104232 1834624 94.62 20 627340 2677656 66.24 802052 828024 1744
17時55分47秒 98584 1840272 94.92 20 624536 2693936 66.65 808872 826932 2012
17時55分57秒 87088 1851768 95.51 20 605288 2706392 66.95 827260 821304 1588
17時56分07秒 86268 1852588 95.55 20 599240 2739224 67.77 829764 820888 3036
17時56分17秒 104260 1834596 94.62 20 599864 2730688 67.56 811284 821584 3164
平均値: 96086 1842770 95.04 20 611254 2709579 67.03 815846 823746 2309
と の列は、それぞれ現在の処理内容に応じた最大メモリ量 (物理メモリとスワップ領域) の概算を表しています。 はキロバイト単位で、 は割合でそれぞれ表現されています。
sar
-B
#Edit sourceカーネルのページングに関する統計情報を表示したい場合は、 -B
オプションを使用します。
#
sar -B 10 5
Linux 6.4.0-150600.9-default (jupiter) 2024年11月03日 _x86_64_ (2 CPU)
18時23分01秒 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
18時23分11秒 366.80 11.60 542.50 1.10 4354.80 0.00 0.00 0.00 0.00
18時23分21秒 0.00 333.30 1522.40 0.00 18132.40 0.00 0.00 0.00 0.00
18時23分31秒 47.20 127.40 1048.30 0.10 11887.30 0.00 0.00 0.00 0.00
18時23分41秒 46.40 2.50 336.10 0.10 7945.00 0.00 0.00 0.00 0.00
18時23分51秒 0.00 583.70 2037.20 0.00 17731.90 0.00 0.00 0.00 0.00
平均値: 92.08 211.70 1097.30 0.26 12010.28 0.00 0.00 0.00 0.00
(メジャーフォルト毎秒) の列には、ディスクからメモリに読み込まれたページ数が表示されています。フォルトを発生させる要因としては、ファイルへのアクセスのほか、アプリケーションのバグによるものである場合もあります。ただし、メジャーフォルトが大きいからといって、それがそのまま何らかの問題を表しているとは限りません。たとえばアプリケーションの起動時には、一般的に様々なファイルを読み込むことから、メジャーフォルトも大きくなりがちです。メジャーフォルトがアプリケーションの動作中ずっと高いままで、特にダイレクトスキャンも同時に大きくなっているような場合は、メインメモリが不足していることを表している場合があります。
の列には、メインメモリやスワップ領域のキャッシュ ( ) から再利用されたページに対する、スキャン済みページ数 ( ) の割合を示しています。これはページの回収処理の効率性を表している値で、性能に問題のないシステムであれば、 100 (スワップアウトした全ての非活動ページが再利用された) もしくは 0 (ページをスキャンしていない) に近い値になるはずです。この値は通常、 30 を下回るべきではありません。
sar
-d
#Edit source-d
オプションを使用することで、ブロックデバイス (ハードディスク、光学ドライブ、 USB ストレージデバイスなど) の統計情報を表示することができます。 列を読みやすくしたい場合は、追加オプション -p
(pretty-print, わかりやすい表示) を指定してください。
#
sar -d -p 10 5
Linux 6.4.0-150600.9-default (jupiter) 2024年11月03日 _x86_64_ (2 CPU)
18時46分09秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
18時46分19秒 sda 1.70 33.60 0.00 19.76 0.00 0.47 0.47 0.08
18時46分19秒 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18時46分19秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
18時46分29秒 sda 8.60 114.40 518.10 73.55 0.06 7.12 0.93 0.80
18時46分29秒 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18時46分29秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
18時46分39秒 sda 40.50 3800.80 454.90 105.08 0.36 8.86 0.69 2.80
18時46分39秒 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18時46分39秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
18時46分49秒 sda 1.40 0.00 204.90 146.36 0.00 0.29 0.29 0.04
18時46分49秒 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18時46分49秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
18時46分59秒 sda 3.30 0.00 503.80 152.67 0.03 8.12 1.70 0.56
18時46分59秒 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均値: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
平均値: sda 11.10 789.76 336.34 101.45 0.09 8.07 0.77 0.86
平均値: sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
内にある , , の各値を、全てのディスクに対して比較してください。 列や 列の値が定常的に高い場合は、 I/O サブシステムがボトルネックなっている可能性があります。
お使いのマシンに複数のディスクが接続されている場合、それらのディスクの速度と性能が等しい場合は、 I/O を分散させることが最適です。また、ストレージが複数階層で構成されているかどうかも考慮する必要があります。これに加えて、ストレージへのアクセス方式が複数存在するような場合は、その使用方法を均等にする場合のリンク飽和度についても検討してください。
sar
-n キーワード
#Edit source-n
オプションを使用することで、様々なネットワーク関連のレポートを生成することができます。 -n
の後ろに指定することのできるキーワードには、下記のものがあります:
DEV : 全てのネットワークデバイスに対する統計レポートを生成
EDEV : 全てのネットワークデバイスに対するエラー統計レポートを生成
NFS : NFS クライアントに対する統計レポートを生成
NFSD : NFS サーバに対する統計レポートを生成
SOCK : ソケットに対する統計レポートを生成
ALL : 全てのネットワーク統計レポートを生成
sar
データの可視化 #Edit sourcesar
が生成するレポートは、必ずしも読みやすいものであるとは言い切れません。その代わり、 kSar と呼ばれる sar
データを可視化するための Java アプリケーションを使用することで、読みやすいグラフを生成することができます。このソフトウエアは PDF 形式のレポートにも対応しているほか、リアルタイムなデータとファイルに保存された過去データの両方に対応しています。 kSar は BSD ライセンスで提供されています。詳しくは https://sourceforge.net/projects/ksar/ をお読みください。
iostat
#Edit sourceシステムのデバイス負荷を監視したい場合は、 iostat
をお使いください。このソフトウエアは、お使いのシステムに接続された複数のディスクの間で、負荷を分散させたいような場合に有用なレポートを生成します。
iostat
を使用するには、 sysstat パッケージをインストールしてください。
最初の iostat
レポートには、システムの起動以降の収集データが表示されます。 2 つ目以降のレポートには、前回のレポート生成以降の収集データが表示されます。
>
iostat
Linux 6.4.0-150600.9-default (jupiter) 2024年11月03日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
17.68 4.49 4.24 0.29 0.00 73.31
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 2.02 36.74 45.73 3544894 4412392
sda 1.05 5.12 13.47 493753 1300276
sdc 0.02 0.14 0.00 13641 37
この方法で iostat
を動作させることで、まずはスループットが期待通りの値になっているかどうかを確認することができます。ただし、原因については示されません。原因を調べたい場合は、 iostat
-x
のように入力して実行し、さらに詳しい拡張レポートを生成してください。拡張レポートには、平均キューサイズや平均待機時間などの追加情報が含まれます。なお、動作していないブロックデバイスを除外して表示したい場合は、 -z
オプションを追加してください。それぞれの列の意味について、詳しくは iostat
のマニュアルページ ( man 1 iostat
) をお読みください。
指定したデバイスを指定した間隔で監視することもできます。たとえば 3 秒間隔で合計 5 回、 sda
デバイスを監視したい場合は、下記のように実行します:
>
iostat
-p sda 3 5
ネットワークファイルシステム (NFS) の統計情報を表示したい場合は、下記に示す 2 種類の類似ユーティリティをお使いいただくことができます:
nfsiostat-sysstat
: sysstat パッケージ内に含まれています。
nfsiostat
: nfs-client パッケージ内に含まれています。
iostat
の使用についてiostat
を利用しても、 nvme list-subsys
で一覧表示されるコントローラを全て表示するわけではありません。既定では iostat
は、 I/O の発生していないブロックデバイスを表示しないためです。 iostat
で 全て のデバイスを表示するようにしたい場合は、下記のようなコマンドを実行してください:
>
iostat -p ALL
mpstat
#Edit sourcempstat
ユーティリティは、利用可能なプロセッサに対して、動作状況を調べることができます。お使いのシステムにプロセッサが 1 つしか接続されていない場合、グローバルな平均統計情報が出力されます。
間隔の指定は iostat
コマンドと同じです。たとえば mpstat 2 5
のように入力して実行すると、 2 秒間隔で合計 5 回のレポートを生成します。
#
mpstat 2 5
Linux 6.4.0-150600.9-default (jupiter) 2024年11月03日 _x86_64_ (2 CPU)
13時51分10秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
13時51分12秒 all 8,27 0,00 0,50 0,00 0,00 0,00 0,00 0,00 0,00 91,23
13時51分14秒 all 46,62 0,00 3,01 0,00 0,00 0,25 0,00 0,00 0,00 50,13
13時51分16秒 all 54,71 0,00 3,82 0,00 0,00 0,51 0,00 0,00 0,00 40,97
13時51分18秒 all 78,77 0,00 5,12 0,00 0,00 0,77 0,00 0,00 0,00 15,35
13時51分20秒 all 51,65 0,00 4,30 0,00 0,00 0,51 0,00 0,00 0,00 43,54
平均値: all 47,85 0,00 3,34 0,00 0,00 0,40 0,00 0,00 0,00 48,41
mpstat
のデータは、下記のようにして判断します:
まずは
と の比率を調べます。たとえば 10:1 のように、 のほうがずっと高い場合、負荷はアプリケーション側のコードによって生み出されているもので、アプリケーション側の調査を行う必要があることを示しています。逆に 1:10 のように、 のほうがずっと高い場合、負荷はカーネル側が生み出しているもので、カーネルのチューニングを検討する必要があることになります。このほか、アプリケーションがなぜカーネルを頼りがちなのかや、それを軽減できないかを調べる手もあります。システム全体では負荷が軽いのに、特定の CPU に負荷が集中しているような事象が発生していないかどうかを調べます。特定の CPU に負荷が集中する場合、それは負荷が適切に並列化されていないことを表しているため、より高速で少ない数のプロセッサの環境に構成し直したほうが良いことを示していることもあります。
turbostat
#Edit sourceturbostat
は AMD64/Intel 64 プロセッサに対して、周波数や負荷、温度や速度を表示するためのコマンドです。このコマンドには 2 つのモードが存在しています。 turbostat
の後ろに実行したいコマンドラインを指定した場合は、指定したコマンドラインを実行し、完了時に統計情報を表示します。コマンドラインを指定しない場合、 5 秒間隔で統計情報を更新して表示します。なお turbostat
を実行するには、 msr
カーネルモジュールを読み込んでおく必要があります。
>
sudo
turbostat find /etc -type d -exec true {} \; 0.546880 sec CPU Avg_MHz Busy% Bzy_MHz TSC_MHz - 416 28.43 1465 3215 0 631 37.29 1691 3215 1 416 27.14 1534 3215 2 270 24.30 1113 3215 3 406 26.57 1530 3214 4 505 32.46 1556 3214 5 270 22.79 1184 3214
出力される内容は CPU によって異なります。温度や消費電力などの追加情報を表示したい場合は、 --debug
オプションを指定してください。コマンドラインオプションの説明や、各項目の意味について、詳しくは man 8 turbostat
をお読みください。
pidstat
#Edit sourceお使いのシステム内で、どの処理 (プロセス) が重いのかを調べたい場合は、 pidstat
コマンドをお使いください。選択したプロセスのみの動作状況を表示することができるほか、 Linux カーネルが管理する全てのプロセスを表示することもできます。また、生成するレポート数や生成間隔なども指定することができます。
たとえば pidstat
-C
firefox 2 3 のように入力して実行すると、コマンド名に 「firefox」 という文字列を含むプロセスに関する情報を出力します。レポートは 2 秒間隔で計 3 回出力します。
#
pidstat -C firefox 2 3
Linux 6.4.0-150600.9-default (jupiter) 2024年11月03日 _x86_64_ (2 CPU)
14時09分11秒 UID PID %usr %system %guest %CPU CPU Command
14時09分13秒 1000 387 22,77 0,99 0,00 23,76 1 firefox
14時09分13秒 UID PID %usr %system %guest %CPU CPU Command
14時09分15秒 1000 387 46,50 3,00 0,00 49,50 1 firefox
14時09分15秒 UID PID %usr %system %guest %CPU CPU Command
14時09分17秒 1000 387 60,50 7,00 0,00 67,50 1 firefox
平均値: UID PID %usr %system %guest %CPU CPU Command
平均値: 1000 387 43,19 3,65 0,00 46,84 - firefox
同様に、 pidstat
-d
と入力して実行することで、プロセスがどれだけ I/O を実行しているのか、その I/O の間にプロセスが休眠状態にあるのかどうか、そしてどれだけの時間タスクが停止していたのかを調べることができます。
dmesg
#Edit sourceLinux カーネルは出力したメッセージをリングバッファ内に保持しています。保持しているメッセージを表示したい場合は、 dmesg -T
のように入力して実行します。
ここに保持されていない古いメッセージは、 systemd
のジャーナル内に保存されています。ジャーナルに関する詳細は、 第11章 「journalctl
: systemd
ジャーナルへの問い合わせコマンド」 をお読みください。
lsof
#Edit sourceプロセス ID を指定して開いているファイルを表示したい場合は、 lsof
-p
プロセス_ID のように入力して実行します。たとえば現在のシェルが開いているファイルを表示したい場合は、下記のようにします:
#
lsof -p $$
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 8842 root cwd DIR 0,32 222 6772 /root
bash 8842 root rtd DIR 0,32 166 256 /
bash 8842 root txt REG 0,32 656584 31066 /bin/bash
bash 8842 root mem REG 0,32 1978832 22993 /lib64/libc-2.19.so
[...]
bash 8842 root 2u CHR 136,2 0t0 5 /dev/pts/2
bash 8842 root 255u CHR 136,2 0t0 5 /dev/pts/2
ここで、 $$
は特殊なシェル変数で、現在使用しているシェルのプロセス ID を表します。
-i
オプションを指定すると、 lsof
はネットワーク接続を表示することができます:
#
lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
wickedd-d 917 root 8u IPv4 16627 0t0 UDP *:bootpc
wickedd-d 918 root 8u IPv6 20752 0t0 UDP [fe80::5054:ff:fe72:5ead]:dhcpv6-client
sshd 3152 root 3u IPv4 18618 0t0 TCP *:ssh (LISTEN)
sshd 3152 root 4u IPv6 18620 0t0 TCP *:ssh (LISTEN)
master 4746 root 13u IPv4 20588 0t0 TCP localhost:smtp (LISTEN)
master 4746 root 14u IPv6 20589 0t0 TCP localhost:smtp (LISTEN)
sshd 8837 root 5u IPv4 293709 0t0 TCP jupiter.suse.de:ssh->venus.suse.de:33619 (ESTABLISHED)
sshd 8837 root 9u IPv6 294830 0t0 TCP localhost:x11 (LISTEN)
sshd 8837 root 10u IPv4 294831 0t0 TCP localhost:x11 (LISTEN)
udevadm monitor
#Edit sourceudevadm monitor
のように入力して実行すると、カーネルが生成する udev のイベントや udev ルールによって送信されたイベントのほか、そのイベントのデバイスパス (DEVPATH) をコンソールに出力することができます。下記は USB メモリを接続した場合のイベント例です:
udevadm
コマンドを実行して udev イベントを監視するには、 root 権限が必要となります。
UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2 UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2 UEVENT[1138806687] add@/class/scsi_host/host4 UEVENT[1138806687] add@/class/usb_device/usbdev4.10 UDEV [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2 UDEV [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2 UDEV [1138806687] add@/class/scsi_host/host4 UDEV [1138806687] add@/class/usb_device/usbdev4.10 UEVENT[1138806692] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2 UEVENT[1138806692] add@/block/sdb UEVENT[1138806692] add@/class/scsi_generic/sg1 UEVENT[1138806692] add@/class/scsi_device/4:0:0:0 UDEV [1138806693] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2 UDEV [1138806693] add@/class/scsi_generic/sg1 UDEV [1138806693] add@/class/scsi_device/4:0:0:0 UDEV [1138806693] add@/block/sdb UEVENT[1138806694] add@/block/sdb/sdb1 UDEV [1138806694] add@/block/sdb/sdb1 UEVENT[1138806694] mount@/block/sdb/sdb1 UEVENT[1138806697] umount@/block/sdb/sdb1
ipcs
#Edit sourceipcs
コマンドは、現在使用されている IPC リソースの一覧を表示します:
#
ipcs
------ メッセージキュー --------
キー msqid 所有者 権限 使用済みバイト数 メッセージ
------ 共有メモリセグメント --------
キー shmid 所有者 権限 バイト nattch 状態
0x00000000 65536 tux 600 524288 2 dest
0x00000000 98305 tux 600 4194304 2 dest
0x00000000 884738 root 600 524288 2 dest
0x00000000 786435 tux 600 4194304 2 dest
0x00000000 12058628 tux 600 524288 2 dest
0x00000000 917509 root 600 524288 2 dest
0x00000000 12353542 tux 600 196608 2 dest
0x00000000 12451847 tux 600 524288 2 dest
0x00000000 11567114 root 600 262144 1 dest
0x00000000 10911763 tux 600 2097152 2 dest
0x00000000 11665429 root 600 2336768 2 dest
0x00000000 11698198 root 600 196608 2 dest
0x00000000 11730967 root 600 524288 2 dest
------ セマフォ配列 --------
キー semid 所有者 権限 nsems
0xa12e0919 32768 tux 666 2
ps
#Edit sourceps
コマンドはプロセスの一覧を表示します。このコマンドでは、ほとんどのパラメータをハイフン無しで指定しなければなりません。簡潔なヘルプを読みたい場合は ps --help
と入力して実行し、より詳細な説明を読みたい場合はマニュアルページを参照してください。
ユーザとコマンドライン情報を含めて全てのプロセスを一覧表示するには、 ps axu
のように入力して実行します:
>
ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 34376 4608 ? Ss Jul24 0:02 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S Jul24 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jul24 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Jul24 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S Jul24 0:00 [kworker/u2:0]
root 7 0.0 0.0 0 0 ? S Jul24 0:00 [migration/0]
[...]
tux 12583 0.0 0.1 185980 2720 ? Sl 10:12 0:00 /usr/lib/gvfs/gvfs-mtp-volume-monitor
tux 12587 0.0 0.1 198132 3044 ? Sl 10:12 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
tux 12591 0.0 0.1 181940 2700 ? Sl 10:12 0:00 /usr/lib/gvfs/gvfs-goa-volume-monitor
tux 12594 8.1 10.6 1418216 163564 ? Sl 10:12 0:03 /usr/bin/gnome-shell
tux 12600 0.0 0.3 393448 5972 ? Sl 10:12 0:00 /usr/lib/gnome-settings-daemon-3.0/gsd-printer
tux 12625 0.0 0.6 227776 10112 ? Sl 10:12 0:00 /usr/lib/gnome-control-center-search-provider
tux 12626 0.5 1.5 890972 23540 ? Sl 10:12 0:00 /usr/bin/nautilus --no-default-window
[...]
どれだけの数の sshd
プロセスが動作しているのかを調べたい場合は、 -p
オプションとともに pidof
コマンドを併用してください。 pidof
コマンドは、指定した名前のプロセス ID を列挙するためのコマンドです。
>
ps -p $(pidof sshd)
PID TTY STAT TIME COMMAND
1545 ? Ss 0:00 /usr/sbin/sshd -D
4608 ? Ss 0:00 sshd: root@pts/0
プロセス一覧の表示は、必要に応じて書式を変更することができます。 L
オプションを使用すると、全てのキーワードの一覧を表示することができます。たとえばメモリの使用率順に全てのプロセスを一覧表示したい場合は、下記のように入力して実行します:
>
ps ax --format pid,rss,cmd --sort rss
PID RSS CMD
PID RSS CMD
2 0 [kthreadd]
3 0 [ksoftirqd/0]
4 0 [kworker/0:0]
5 0 [kworker/0:0H]
6 0 [kworker/u2:0]
7 0 [migration/0]
8 0 [rcu_bh]
[...]
12518 22996 /usr/lib/gnome-settings-daemon-3.0/gnome-settings-daemon
12626 23540 /usr/bin/nautilus --no-default-window
12305 32188 /usr/bin/Xorg :0 -background none -verbose
12594 164900 /usr/bin/gnome-shell
ps
のオプション #ps aux
--sort 列名
列名 で指定した項目の値で並べ替えを行います。 列名 には下記の名前を指定することができます:
pmem : 物理メモリの比率 |
pcpu : CPU 使用率 |
rss : 常駐セットサイズ (スワップ領域に移動していない物理メモリ) |
ps axo pid,%cpu,rss,vsz,args,wchan
各プロセスに対して、プロセス ID, CPU 使用率, メモリサイズ (常駐および仮想), 名前, システムコールをそれぞれ表示します。
ps axfo pid,args
プロセスをツリー形式で表示します。
pstree
#Edit sourcepstree
コマンドは、プロセスの一覧をツリー形式で出力します:
>
pstree
systemd---accounts-daemon---{gdbus}
| |-{gmain}
|-at-spi-bus-laun---dbus-daemon
| |-{dconf worker}
| |-{gdbus}
| |-{gmain}
|-at-spi2-registr---{gdbus}
|-cron
|-2*[dbus-daemon]
|-dbus-launch
|-dconf-service---{gdbus}
| |-{gmain}
|-gconfd-2
|-gdm---gdm-simple-slav---Xorg
| | |-gdm-session-wor---gnome-session---gnome-setti+
| | | | |-gnome-shell+++
| | | | |-{dconf work+
| | | | |-{gdbus}
| | | | |-{gmain}
| | | |-{gdbus}
| | | |-{gmain}
| | |-{gdbus}
| | |-{gmain}
| |-{gdbus}
| |-{gmain}
[...]
-p
オプションを指定すると、プロセス名に加えてプロセス ID が表示されるようになります。コマンドラインについても表示したい場合は、 -a
を指定してください。
top
#Edit sourcetop
(「Table Of Processes」 (プロセス表) の略) コマンドは、 2 秒間隔で更新されるプロセス表を表示します。プログラムを終了するには Q を押します。 -n 1
とパラメータを指定すると、プロセス表を一度だけ表示して終了します。下記は top -n 1
コマンドの出力例です:
>
top -n 1
Tasks: 128 total, 1 running, 127 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.4 us, 1.2 sy, 0.0 ni, 96.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1535508 total, 699948 used, 835560 free, 880 buffers
KiB Swap: 1541116 total, 0 used, 1541116 free. 377000 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 116292 4660 2028 S 0.000 0.303 0:04.45 systemd
2 root 20 0 0 0 0 S 0.000 0.000 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.000 0.000 0:00.07 ksoftirqd+
5 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 kworker/0+
6 root 20 0 0 0 0 S 0.000 0.000 0:00.00 kworker/u+
7 root rt 0 0 0 0 S 0.000 0.000 0:00.00 migration+
8 root 20 0 0 0 0 S 0.000 0.000 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.000 0.000 0:00.24 rcu_sched
10 root rt 0 0 0 0 S 0.000 0.000 0:00.01 watchdog/0
11 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 khelper
12 root 20 0 0 0 0 S 0.000 0.000 0:00.00 kdevtmpfs
13 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 netns
14 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 writeback
15 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 kintegrit+
16 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 bioset
17 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 crypto
18 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 kblockd
既定では、出力は CPU の使用率 (Shift–P を押します) :
列) の降順に並んでいます。下記のキー入力を行うことで、並べ替えに使用する項目を変更することができます (CPU の使用率に戻したい場合は、Shift–M : 常駐メモリ ( ) |
Shift–N : プロセス ID ( ) |
Shift–T : CPU 時間 ( ) |
その他の項目で並べ替えを行いたい場合は、 F を押し表示された項目から選んでください。並べ替えの順序を逆にしたい場合は、 Shift–R を押してください。
また、 -U UID
のようにオプションを指定することで、特定のユーザに結びついているプロセスのみを監視することができます。なお、 UID はユーザの ID を表します。現在使用しているユーザのプロセスを表示したい場合は、 top -U $(id -u)
と入力して実行してください。
iotop
#Edit sourceiotop
ユーティリティは、プロセスやスレッドごとの I/O 使用率を表示します。
iotop
のインストールについてiotop
は既定ではインストールされません。 root
で zypper in iotop
と入力して実行し、インストールを行ってください。
iotop
は一定のサンプリング期間内に行われた読み込みおよび書き込みの処理を、プロセスごとにまとめて表示します。スワップ領域の読み込みや I/O の完了待ちなどで消費されたプロセス時間の割合も表示することができます。また、各プロセスの I/O 優先度 (クラス/レベル) も表示されます。これに加えて、システム全体での読み込みおよび書き込みの処理を、インターフェイスの上部に表示します。
← や → のキーを押すことで、並べ替える項目を選択することができます。
R を押すと並び順を逆にすることができます。
O を押すと、全てのプロセスおよびスレッドを表示するビュー (既定の表示) と、 I/O が実際に行われているもののみを表示するビューとの間を切り替えることができます (この機能は、コマンドラインに --only
オプションを追加した場合に似た表示になります) 。
P を押すと、スレッド表示 (既定の表示) とプロセス表示との間を切り替えることができます (この機能は、コマンドラインに --only
オプションを追加した場合に似た表示になります) 。
A を押すと、現在の I/O 帯域 (既定の表示) と iotop
起動時からの累積値表示との間を切り替えることができます (この機能は、コマンドラインに --only
オプションを追加した場合に似た表示になります) 。
I を押すと、スレッドやプロセス内のスレッドに対して、優先順位を変更することができます。
Q を押すと iotop
を終了することができます。
上記以外のキーを押すと、強制的な更新処理を行います。
下記は iotop --only
の出力例で、ここでは find
と emacs
が動作しています:
#
iotop --only
Total DISK READ: 50.61 K/s | Total DISK WRITE: 11.68 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
3416 be/4 tux 50.61 K/s 0.00 B/s 0.00 % 4.05 % find /
275 be/3 root 0.00 B/s 3.89 K/s 0.00 % 2.34 % [jbd2/sda2-8]
5055 be/4 tux 0.00 B/s 3.89 K/s 0.00 % 0.04 % emacs
iotop
コマンドはバッチモード ( -b
) でも動作させることができます。この場合、ファイルに出力して後から分析するような使い方をすることもできます。オプションの一覧について、詳しくは ( man 8 iotop
) で表示されるマニュアルページをお読みください。
nice
および renice
#Edit sourceカーネルはプロセスの優先順位 (nice レベル, niceness) を利用して、他のプロセスとの間の CPU 時間の調整を行います。プロセスの 「nice」 レベルが高いほど、割り当てられる CPU 時間は少なくなります。 nice レベルは -20 (最も低い 「nice」 レベル) から 19 までの間で指定します。また、負の値の nice レベルは、 root
のみが設定可能です。
niceness レベルの調整は、長時間 CPU 時間を占有し続けるような処理で、特に時間的な制約のない処理を動作させるような場合に有用です。たとえば他の処理も同時に動作しているシステム内で、カーネルのコンパイル処理を行ったりするような場合が該当します。このような処理の 「nice」 レベルを上げることで、たとえば Web サーバの処理をより優先して動作させることができるようになります。
nice
コマンドに何もパラメータを指定しないで実行すると、現在の niceness を表示することができます:
>
nice
0
nice
コマンド のようにしてコマンドを実行すると、そのコマンドを起動する際に nice レベルを 10 足して実行します。また、 nice
-n レベル
コマンド のように入力して実行すると、現在の nice レベルに指定したレベルを足して、コマンドを実行することができます。
動作中のプロセスに対して nice レベルを変更したい場合は、 renice
レベル -p プロセス_ID
のように入力して実行します。たとえば下記のようになります:
>
renice +5 3266
特定のユーザが所有する全てのプロセスの nice レベルを変更したい場合は、 -u ユーザ
のように指定して実行します。 プロセスグループを指定して nice レベルを変更する場合は、 -g プロセスグループ_ID
のように入力して実行します。
free
#Edit sourcefree
コマンドはメモリとスワップ領域の使用量を表示します。それぞれ空き/使用中のメモリとスワップ領域の詳細が出力されます:
>
free
total used free shared buffers cached
Mem: 32900500 32703448 197052 0 255668 5787364
-/+ buffers/cache: 26660416 6240084
Swap: 2046972 304680 1742292
表示の単位を変更したい場合は、 -b
(バイト単位), -k
(キロバイト単位), -m
(メガバイト単位), -g
(ギガバイト単位) のように指定します。 -s 遅延時間
のようにオプションを指定すると、 遅延時間 で指定した時間ごとに更新を行って表示します。たとえば free -s 1.5
のように入力して実行すると、 1.5 秒間隔で更新して表示します。
/proc/meminfo
#Edit sourcefree
で出力されるメモリ使用率よりも詳しい情報を取得したい場合は、 /proc/meminfo
ファイルをお使いください。このファイルは free
コマンドも使用しているファイルです。 64 ビット環境での出力例を下記に示します。なお、 32 ビット環境ではメモリの管理方式が異なるため、出力が少し異なることに注意してください:
MemTotal: 1942636 kB MemFree: 1294352 kB MemAvailable: 1458744 kB Buffers: 876 kB Cached: 278476 kB SwapCached: 0 kB Active: 368328 kB Inactive: 199368 kB Active(anon): 288968 kB Inactive(anon): 10568 kB Active(file): 79360 kB Inactive(file): 188800 kB Unevictable: 80 kB Mlocked: 80 kB SwapTotal: 2103292 kB SwapFree: 2103292 kB Dirty: 44 kB Writeback: 0 kB AnonPages: 288592 kB Mapped: 70444 kB Shmem: 11192 kB Slab: 40916 kB SReclaimable: 17712 kB SUnreclaim: 23204 kB KernelStack: 2000 kB PageTables: 10996 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 3074608 kB Committed_AS: 1407208 kB VmallocTotal: 34359738367 kB VmallocUsed: 145996 kB VmallocChunk: 34359588844 kB HardwareCorrupted: 0 kB AnonHugePages: 86016 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 79744 kB DirectMap2M: 2017280 kB
項目の意味は下記のとおりです:
搭載されているメモリ量です。
未使用のメモリ量です。
新しく起動するアプリケーションで、スワップ処理を行わずに確保できるメモリ量の見積値です。
ファイルシステムのメタデータを含むメモリ内のバッファキャッシュ量です。
メモリ内のページキャッシュ量です。この量にはバッファキャッシュとスワップキャッシュが含まれていませんが、
のメモリ量は含まれています。スワップアウトされたメモリに対するページキャッシュ量です。
どうしても必要な場合や明示的に指定されたりした場合以外には回収されることのない、使用中のメモリ量。
は と の合計値です:はスワップ領域に結びつけられているメモリ量です。この量には、コピーオンライト後のプライベート, 共有匿名マッピング, プライベートファイルページが含まれています。
はファイルシステムに結びつけられているメモリ量です。
通常は真っ先に回収される、直近では未使用のメモリ量です。
は と の合計値です:はスワップ領域に結びつけられているメモリ量です。この量には、コピーオンライト後のプライベート, 共有匿名マッピング, プライベートファイルページが含まれています。
はファイルシステムに結びつけられているメモリ量です。
回収することのできない (たとえば
されているものや RAM ディスクとして使用されているものなど) メモリ量です。mlock
システムコールに結びつけられているメモリ量です。 mlock
はプロセスに対して、仮想メモリをどの物理メモリに割り当てるのかを指定できる仕組みです。しかしながら、 mlock
はその配置を保証できるものではありません。
スワップ領域の量です。
未使用のスワップ領域の量です。
ディスクに書き込むべきデータを保持していて、ディスクへの書き込みを待っているメモリの量です。 sysctl
パラメータの vm.dirty_ratio
もしくは vm.dirty_bytes
で設定することができます (詳しくは 15.1.5項 「ライトバック」 をお読みください) 。
現在ディスクに書き込もうとしているメモリの量です。
mmap
システムコールで確保されたメモリ量です。
IPC データや tmpfs
、および共有匿名メモリなどのプロセス間共有メモリの量です。
カーネルの内部データ構造向けの割り当て済みメモリ量です。
キャッシュ (inode, dentry ほか) などの回収可能な Slab セクションの量です。
回収することのできない Slab セクションの量です。
システムコールを介して、アプリケーションが使用しているカーネル領域メモリの量です。
全てのプロセスのページテーブル専用メモリ量です。
既にサーバ宛には送信されたものの、まだコミットされていない NFS ページの量です。
ブロックデバイスのバウンスバッファ向けに使用されているメモリ量です。
一時的な書き戻しバッファのために FUSE が使用するメモリ量です。
オーバーコミット比率設定をベースにした、システムで利用できるメモリ量です。この項目は、厳密なオーバーコミットアカウンティングが有効な場合にのみ強制されます。
現在の負荷量で、最悪の場合に必要となるメモリ量 (物理メモリとスワップ) の合計見積値です。
割り当て済みのカーネル仮想アドレス領域の量です。
カーネルの仮想アドレス領域のうち、使用中の量です。
利用可能なカーネルの仮想アドレス領域のうち、最も大きく連続したブロックの量です。
障害の発生しているメモリの量です (ECC メモリを使用している場合にのみ検出可能です) 。
ユーザスペースのページテーブルにマップされている、匿名の hugepage の量です。これらは特にプロセス側から要求されることなく透過的に割り当てられるため、 透過型 hugepage としても知られています。
SHM_HUGETLB
と MAP_HUGETLB
、もしくは hugetlbfs
ファイルシステムを介して使用することのできる、事前割り当て型の hugepage の量です。 /proc/sys/vm/nr_hugepages
で定義されています。
利用可能な hugepage の量です。
コミット済みの hugepage の量です。
「surplus」 ) の量です。 /proc/sys/vm/nr_overcommit_hugepages
で定義されています。
hugepage のサイズです。 AMD64/Intel 64 の既定値は 2048 KB です。
指定のサイズ (例: 4 kB) でページにマップされたカーネルメモリの量です。
top
や ps
コマンドのような標準ツールを使用しても、特定のプロセスがどれだけのメモリを使用しているのかを正確に知るのは困難です。正確なデータを必要とする場合は、カーネルバージョン 2.6.14 で導入された smaps サブシステムをお使いください。 smaps サブシステムでは、プロセスごとに /proc/プロセス_ID/smaps
ファイルが提供されます。ここには、その時点で特定のプロセスが使用していたメモリ量のうち、クリーンなものとダーティなものの両方を表示することができます。また、共有メモリとプライベートメモリを区別して表示しますので、他のプロセスとは共有していないメモリ量を正確に知ることができます。詳しくは /usr/src/linux/Documentation/filesystems/proc.txt
ファイル (英語, kernel-source
パッケージをインストールする必要があります) をお読みください。
smaps は読みにくい出力形態になってしまっています。そのため、定期的な監視としては使用せず、プロセスを特定してからお読みになることをお勧めします。
numaTOP は NUMA (Non-uniform Memory Access) システム向けのツールです。このツールは、 NUMA システムのリアルタイム分析機能を提供して、 NUMA に関する性能ボトルネックを発見することができるツールです。
一般的には、 numaTOP はローカリティの低い (ローカルメモリよりもリモートメモリを多く使用している) プロセスやスレッドを識別したり、調査したりすることができます。これは、それぞれ Remote Memory Accesses (RMA) と Local Memory Accesses (LMA) の数値と、 RMA/LMA の比率を分析することで行います。
numaTOP は PowerPC プロセッサのほか、 Intel Xeon プロセッサのうち 5500 シリーズ, 6500/7500 シリーズ, 5600 シリーズ, E7-x8xx シリーズ, E5-16xx/24xx/26xx/46xx シリーズでそれぞれ動作します。
numaTOP は公式のソフトウエアリポジトリ内に用意されています。 sudo zypper in numatop
コマンドを実行してインストールしてください。 numaTOP を起動するには numatop
コマンドを実行してください。 numaTOP の機能や使用方法に関する概要を知りたい場合は、 man numatop
コマンドを実行してください。
ネットワーク帯域が期待よりも狭いと感じた場合、まずはお使いのネットワークセグメント内で、トラフィックシェイピングルールが有効化されているかどうかをご確認ください。
ip
#Edit sourceip
はシステム内のネットワークインターフェイスを設定したり制御したりすることのできるパワフルなツールです。ネットワークインターフェイスの基本的な統計情報なども取得することができます。たとえばインターフェイスが動作しているかどうかや、エラーの数、廃棄されたパケットやコリジョン (衝突) などの数を表示することができます。
何もパラメータを指定せずに ip
コマンドを実行すると、ヘルプメッセージが表示されます。ネットワークインターフェイスの一覧を表示したい場合は、 ip addr show
(もしくは省略形で ip a
) と入力して実行してください。 ip addr show up
と入力して実行すると、動作中のネットワークインターフェイスのみを表示することができます。また、 ip -s link show
デバイス名 のように入力して実行すると、指定したインターフェイスの統計情報のみを表示します:
#
ip -s link show br0
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
link/ether 00:19:d1:72:d4:30 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
6346104756 9265517 0 10860 0 0
TX: bytes packets errors dropped carrier collsns
3996204683 3655523 0 0 0 0
ip
コマンドはインターフェイスの表示 ( link
) のほか、ルーティングテーブルの表示 ( route
) など、多数の機能が用意されています。詳しくは man 8 ip
をお読みください。
#
ip route
default via 192.168.2.1 dev eth1
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.100
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.101
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.102
#
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:44:30:51 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:a3:c1:fb brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:32:a4:09 brd ff:ff:ff:ff:ff:ff
nethogs
#Edit sourceたとえばネットワークトラフィックが急激に増加したような場合、その原因となるアプリケーションを素早く見つけることができたほうが都合のよいことがあります。 nethogs
コマンドは top
コマンドに似た設計で、それぞれのプロセスが処理している送受信トラフィックを表示することができます:
PID USER PROGRAM DEV SENT RECEIVED 27145 root zypper eth0 5.719 391.749 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30015 0.102 2.326 KB/sec 26635 tux /usr/lib64/firefox/firefox eth0 0.026 0.026 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30045 0.000 0.021 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30045 0.000 0.018 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30015 0.000 0.018 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30045 0.000 0.017 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30045 0.000 0.017 KB/sec ? root ..0:113:80c0:8080:10:160:0:100:30045 0.069 0.000 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 5.916 394.192 KB/sec
top
コマンドと同様に、 nethogs
コマンドも対話的にコマンドを入力することができます:
M : 表示モードの切り替え (kb/s, kb, b, mb) |
R : (受信) で並べ替え |
S : (送信) で並べ替え |
Q : 終了 |
ethtool
はお使いのイーサネットデバイスの詳細な要素を表示したり、変更したりすることのできるツールです。既定では、指定したデバイスに対する現在の設定値を表示します。
#
ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
[...]
Link detected: yes
下記の表には、様々な情報を取得するための ethtool
オプションを示しています:
ethtool
の問い合わせオプションの一覧 #
|
意味 |
---|---|
-a |
Pause パラメータの情報の表示 |
-c |
Interrupt Coalescing の情報の表示 |
-g |
Rx/Tx (送信/受信) の Ring パラメータ情報の表示 |
-i |
対応するドライバに関する情報の表示 |
-k |
オフロード設定の表示 |
-S |
NIC およびドライバ固有の統計情報の表示 |
ss
#Edit sourcess
はソケットの統計情報を表示するコマンドで、以前に用いられていた netstat
コマンドを置き換えるものです。全ての接続を表示したい場合は、何もパラメータを指定せずに ss
を実行してください:
#
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 14082 * 14083
u_str ESTAB 0 0 * 18582 * 18583
u_str ESTAB 0 0 * 19449 * 19450
u_str ESTAB 0 0 @/tmp/dbus-gmUUwXABPV 18784 * 18783
u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 19383 * 19382
u_str ESTAB 0 0 @/tmp/dbus-gmUUwXABPV 18617 * 18616
u_str ESTAB 0 0 @/tmp/dbus-58TPPDv8qv 19352 * 19351
u_str ESTAB 0 0 * 17658 * 17657
u_str ESTAB 0 0 * 17693 * 17694
[..]
現在開いている全てのネットワークポートを表示したい場合は、下記のように実行してください:
#
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 rtnl:4195117 *
nl UNCONN 0 0 rtnl:wickedd-auto4/811 *
nl UNCONN 0 0 rtnl:wickedd-dhcp4/813 *
nl UNCONN 0 0 rtnl:4195121 *
nl UNCONN 0 0 rtnl:4195115 *
nl UNCONN 0 0 rtnl:wickedd-dhcp6/814 *
nl UNCONN 0 0 rtnl:kernel *
nl UNCONN 0 0 rtnl:wickedd/817 *
nl UNCONN 0 0 rtnl:4195118 *
nl UNCONN 0 0 rtnl:nscd/706 *
nl UNCONN 4352 0 tcpdiag:ss/2381 *
[...]
ネットワーク接続を表示する際、特定のソケットタイプに限定することもできます。それぞれ TCP ( -t
) もしくは UDP ( -u
) などを指定してください。また、 -p
オプションを指定すると、それぞれのソケットが属するプロセス ID と、その名前を表示することができます。
下記の例では、全ての TCP 接続とそれに結びつけられたプログラムを表示しています。 -a
オプションは、確立済みの全ての接続 (待ち受け中のものを含む) を表示するためのオプションです。 -p
オプションを指定すると、それぞれのソケットが属するプロセス ID と、その名前を表示することができます。
#
ss -t -a -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:* users:(("sshd",1551,3))
LISTEN 0 100 127.0.0.1:smtp *:* users:(("master",1704,13))
ESTAB 0 132 10.120.65.198:ssh 10.120.4.150:55715 users:(("sshd",2103,5))
LISTEN 0 128 :::ssh :::* users:(("sshd",1551,4))
LISTEN 0 100 ::1:smtp :::* users:(("master",1704,14))
/proc
ファイルシステム #Edit source/proc
ファイルシステムは擬似的なファイルシステムで、仮想的なファイルの形式で、カーネル内の様々な情報にアクセスすることができます。たとえば CPU の種類を表示したい場合は、下記のように実行します:
>
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 30
model name : Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
stepping : 5
microcode : 0x6
cpu MHz : 1197.000
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 5333.85
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
[...]
AMD64/Intel 64 アーキテクチャでプロセッサの詳細情報を取得したい場合は、 x86info
コマンドをお使いいただいてもかまいません。
割り込みの割り当てと使用状況を確認するには、下記のように実行します:
>
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 121 0 0 0 IO-APIC-edge timer
8: 0 0 0 1 IO-APIC-edge rtc0
9: 0 0 0 0 IO-APIC-fasteoi acpi
16: 0 11933 0 0 IO-APIC-fasteoi ehci_hcd:+
18: 0 0 0 0 IO-APIC-fasteoi i801_smbus
19: 0 117978 0 0 IO-APIC-fasteoi ata_piix,+
22: 0 0 3275185 0 IO-APIC-fasteoi enp5s1
23: 417927 0 0 0 IO-APIC-fasteoi ehci_hcd:+
40: 2727916 0 0 0 HPET_MSI-edge hpet2
41: 0 2749134 0 0 HPET_MSI-edge hpet3
42: 0 0 2759148 0 HPET_MSI-edge hpet4
43: 0 0 0 2678206 HPET_MSI-edge hpet5
45: 0 0 0 0 PCI-MSI-edge aerdrv, P+
46: 0 0 0 0 PCI-MSI-edge PCIe PME,+
47: 0 0 0 0 PCI-MSI-edge PCIe PME,+
48: 0 0 0 0 PCI-MSI-edge PCIe PME,+
49: 0 0 0 387 PCI-MSI-edge snd_hda_i+
50: 933117 0 0 0 PCI-MSI-edge nvidia
NMI: 2102 2023 2031 1920 Non-maskable interrupts
LOC: 92 71 57 41 Local timer interrupts
SPU: 0 0 0 0 Spurious interrupts
PMI: 2102 2023 2031 1920 Performance monitoring int+
IWI: 47331 45725 52464 46775 IRQ work interrupts
RTR: 2 0 0 0 APIC ICR read retries
RES: 472911 396463 339792 323820 Rescheduling interrupts
CAL: 48389 47345 54113 50478 Function call interrupts
TLB: 28410 26804 24389 26157 TLB shootdowns
TRM: 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 Machine check exceptions
MCP: 40 40 40 40 Machine check polls
ERR: 0
MIS: 0
実行ファイルとライブラリのアドレス割り当てに関する情報は、 maps
ファイル内に含まれています:
>
cat /proc/self/maps
08048000-0804c000 r-xp 00000000 03:03 17753 /bin/cat
0804c000-0804d000 rw-p 00004000 03:03 17753 /bin/cat
0804d000-0806e000 rw-p 0804d000 00:00 0 [heap]
b7d27000-b7d5a000 r--p 00000000 03:03 11867 /usr/lib/locale/en_GB.utf8/
b7d5a000-b7e32000 r--p 00000000 03:03 11868 /usr/lib/locale/en_GB.utf8/
b7e32000-b7e33000 rw-p b7e32000 00:00 0
b7e33000-b7f45000 r-xp 00000000 03:03 8837 /lib/libc-2.3.6.so
b7f45000-b7f46000 r--p 00112000 03:03 8837 /lib/libc-2.3.6.so
b7f46000-b7f48000 rw-p 00113000 03:03 8837 /lib/libc-2.3.6.so
b7f48000-b7f4c000 rw-p b7f48000 00:00 0
b7f52000-b7f53000 r--p 00000000 03:03 11842 /usr/lib/locale/en_GB.utf8/
[...]
b7f5b000-b7f61000 r--s 00000000 03:03 9109 /usr/lib/gconv/gconv-module
b7f61000-b7f62000 r--p 00000000 03:03 9720 /usr/lib/locale/en_GB.utf8/
b7f62000-b7f76000 r-xp 00000000 03:03 8828 /lib/ld-2.3.6.so
b7f76000-b7f78000 rw-p 00013000 03:03 8828 /lib/ld-2.3.6.so
bfd61000-bfd76000 rw-p bfd61000 00:00 0 [stack]
ffffe000-fffff000 ---p 00000000 00:00 0 [vdso]
/proc
ファイルシステムを利用することで、数多くの情報を取得することができます。主なファイルとその内容を下記に示します:
/proc/devices
利用可能なデバイスに関する情報
/proc/modules
読み込み済みのカーネルモジュール
/proc/cmdline
カーネルのコマンドライン
/proc/meminfo
メモリの使用率に関する詳細情報
/proc/config.gz
gzip
形式で圧縮された、現在動作中のカーネルの設定ファイル
現在動作中のプロセスに関する情報が含まれています。ここで PID には、プロセスのプロセス ID を代入します。自分自身のプロセスを参照したい場合は、 /proc/self/
で参照することができます。
さらに詳しい情報をご希望の場合は、 /usr/src/linux/Documentation/filesystems/proc.txt
ファイル (英語, kernel-source
パッケージをインストールする必要があります) をお読みください。
procinfo
#Edit source/proc
ファイルシステム内で取得できる情報から主なものを抜き出すためのコマンドとして、 procinfo
が用意されています:
>
procinfo
Linux 3.11.10-17-desktop (geeko@buildhost) (gcc 4.8.1 20130909) #1 4CPU [jupiter.example.com]
Memory: Total Used Free Shared Buffers Cached
Mem: 8181908 8000632 181276 0 85472 2850872
Swap: 10481660 1576 10480084
Bootup: Mon Jul 28 09:54:13 2014 Load average: 1.61 0.85 0.74 2/904 25949
user : 1:54:41.84 12.7% page in : 2107312 disk 1: 52212r 20199w
nice : 0:00:00.46 0.0% page out: 1714461 disk 2: 19387r 10928w
system: 0:25:38.00 2.8% page act: 466673 disk 3: 548r 10w
IOwait: 0:04:16.45 0.4% page dea: 272297
hw irq: 0:00:00.42 0.0% page flt: 105754526
sw irq: 0:01:26.48 0.1% swap in : 0
idle : 12:14:43.65 81.5% swap out: 394
guest : 0:02:18.59 0.2%
uptime: 3:45:22.24 context : 99809844
irq 0: 121 timer irq 41: 3238224 hpet3
irq 8: 1 rtc0 irq 42: 3251898 hpet4
irq 9: 0 acpi irq 43: 3156368 hpet5
irq 16: 14589 ehci_hcd:usb1 irq 45: 0 aerdrv, PCIe PME
irq 18: 0 i801_smbus irq 46: 0 PCIe PME, pciehp
irq 19: 124861 ata_piix, ata_piix, f irq 47: 0 PCIe PME, pciehp
irq 22: 3742817 enp5s1 irq 48: 0 PCIe PME, pciehp
irq 23: 479248 ehci_hcd:usb2 irq 49: 387 snd_hda_intel
irq 40: 3216894 hpet2 irq 50: 1088673 nvidia
全ての情報を表示するには -a
オプションを指定してください。また、 -n
N とオプションを指定すると、 N 秒間隔で情報を更新し続けることができます。この場合、 Q を押すと終了することができます。
既定では累積値を表示しますが、 -d
を指定すると差分値を表示することもできます。たとえば procinfo -dn5
とオプションを指定すると、直近の 5 秒間に変化した値が表示されます。
/proc/sys/
#Edit sourceシステム制御パラメータを使用することで、 Linux カーネルのパラメータを動作中に変更することができます。これらのファイルは /proc/sys/
ディレクトリ内に存在し、 sysctl
コマンドで表示および変更を行うことができます。全てのパラメータを一覧表示するには、 sysctl
-a
と入力して実行してください。また、特定の値のみを表示したい場合は、 sysctl
パラメータ名 と入力して実行します。
パラメータは分野ごとに分類されていて、 sysctl
分類名 のように入力して実行するか、もしくは対応するディレクトリ内の一覧を表示することで、確認することができます。主な分類の一覧を下記に示します。なお、詳細情報を説明しているファイルは、いずれも英語のみの提供で、 kernel-source
パッケージをインストールしておく必要があります。
sysctl dev
( /proc/sys/dev/
)デバイス固有の情報が含まれています。
sysctl fs
( /proc/sys/fs/
)使用済みのファイルハンドルやクォータ、その他のファイルシステム指向のパラメータが含まれています。詳しくは /usr/src/linux/Documentation/sysctl/fs.txt
ファイルをお読みください。
sysctl kernel
( /proc/sys/kernel/
)タスクスケジューラやシステムの共有メモリ、そしてその他のカーネル関連のパラメータが含まれています。詳しくは /usr/src/linux/Documentation/sysctl/kernel.txt
ファイルをお読みください。
sysctl net
( /proc/sys/net/
)ネットワークブリッジのほか、一般的なネットワークパラメータが含まれています (主に ipv4/
サブディレクトリ内にあります) 。詳しくは /usr/src/linux/Documentation/sysctl/net.txt
ファイルをお読みください。
sysctl vm
( /proc/sys/vm/
)このパス内に存在するファイルには、仮想メモリやスワップ処理、キャッシュ処理に関するパラメータが含まれています。詳しくは /usr/src/linux/Documentation/sysctl/vm.txt
ファイルをお読みください。
システムを再起動するまでの間、パラメータを設定したい場合は、 sysctl
-w
パラメータ名 = 設定値 のように入力して実行してください。また、パラメータ設定を恒久的に行いたい場合は、 /etc/sysctl.conf
ファイル内に パラメータ名 = 設定値 の形式で行を追加してください。
lspci
#Edit sourceほとんどの環境では、コンピュータの PCI 設定にアクセスするにあたって root 権限が必要となります。
lspci
コマンドは、 PCI リソースの一覧を表示します:
#
lspci
00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \
DRAM Controller/Host-Hub Interface (rev 01)
00:01.0 PCI bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \
Host-to-AGP Bridge (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM \
(ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM \
(ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM \
(ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM \
(ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) \
LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE \
Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) \
SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM \
(ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
01:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 85)
02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (LOM) \
Ethernet Controller (rev 81)
-v
オプションを指定すると、さらに詳しい情報を表示することができます:
#
lspci -v
[...]
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet \
Controller (rev 02)
Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 19
Memory at f0000000 (32-bit, non-prefetchable) [size=128K]
I/O ports at d010 [size=8]
Capabilities: [dc] Power Management version 2
Capabilities: [e4] PCI-X non-bridge device
Kernel driver in use: e1000
Kernel modules: e1000
デバイス名の情報は /usr/share/pci.ids
ファイルから取得しています。そのため、このファイル内に書かれていないデバイスについては、 「Unknown device」 (未知のデバイス) として表示されます。
-vv
パラメータを指定すると、プログラムから問い合わせることのできる全ての情報を出力することができます。また、文字ではなく数値で表示したい場合は、 -n
オプションをお使いください。
lsusb
#Edit sourcelsusb
コマンドは USB デバイスの一覧を表示します。 -v
オプションを指定すると、さらに詳しい情報を表示することができます。詳しい情報は /proc/bus/usb/
内から取得します。下記は USB バスにハブと USB メモリ、ハードディスクとマウスがそれぞれ接続された環境での、 lsusb
の出力例です。
#
lsusb
Bus 004 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash \
2.0 / Astone USB Drive
Bus 004 Device 006: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE \
Adapter
Bus 004 Device 005: ID 05e3:0605 Genesys Logic, Inc.
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 005: ID 046d:c012 Logitech, Inc. Optical Mouse
Bus 001 Device 001: ID 0000:0000
tmon
#Edit sourcetmon
は複雑なサーマル (温度管理) サブシステムを可視化したり、チューニングしたりテストしたりするためのツールです。何もパラメータを指定しないで起動すると、 tmon
は監視モードで動作します:
┌──────THERMAL ZONES(SENSORS)──────────────────────────────┐ │Thermal Zones: acpitz00 │ │Trip Points: PC │ └──────────────────────────────────────────────────────────┘ ┌─────────── COOLING DEVICES ──────────────────────────────┐ │ID Cooling Dev Cur Max Thermal Zone Binding │ │00 Processor 0 3 ││││││││││││ │ │01 Processor 0 3 ││││││││││││ │ │02 Processor 0 3 ││││││││││││ │ │03 Processor 0 3 ││││││││││││ │ │04 intel_powerc -1 50 ││││││││││││ │ └──────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────┐ │ 10 20 30 40 │ │acpitz 0:[ 8][>>>>>>>>>P9 C31 │ └──────────────────────────────────────────────────────────┘ ┌────────────────── CONTROLS ──────────────────────────────┐ │PID gain: kp=0.36 ki=5.00 kd=0.19 Output 0.00 │ │Target Temp: 65.0C, Zone: 0, Control Device: None │ └──────────────────────────────────────────────────────────┘ Ctrl-c - Quit TAB - Tuning
データの解釈方法に関して、および温度データの記録方法に関して、そして tmon
で冷却デバイスやセンサーをテストしたりチューニングしたりする方法について、詳しくは man 8 tmon
にあるマニュアルページをお読みください。なお、 tmon パッケージは既定ではインストールされません。
このツールは AMD64/Intel 64 システム向けにのみ提供されています。
mcelog
パッケージは、 I/O や CPU 、メモリエラーなどのハードウエアエラーが発生した際に発せられるマシンチェック例外 (Machine Check Exceptions (MCE)) を記録し、解釈/翻訳するためのパッケージです。これに加えて mcelog は、不正なページのオフライン化や、キャッシュエラーが発生した際に自動的にコアをオフライン化するなどの処理も行います。以前のバージョンでは cron ジョブとして 1 時間に 1 回動作していましたが、現在は mcelog デーモンの形で、ハードウエアエラーを即時に処理するようになっています。
openSUSE Leap では AMD 社の Scalable Machine Check Architecture (Scalable MCA) に対応するようになっています。 Scalable MCA は AMD 社の Zen プロセッサでハードウエアエラー報告の機能を改善するための仕組みで、エラー報告やその後の解析を支援するために MCA バンク内に保存される情報を記録しています。
mcelog
は MCA メッセージを捕捉 (rasdaemon
や dmesg
でも MCA メッセージを捕捉することができます) 。詳しくは Processor ProgrammingReference (PPR) for AMD Family 17h Model 01h, Revision B1 Processors ( https://developer.amd.com/wordpress/media/2017/11/54945_PPR_Family_17h_Models_00h-0Fh.pdf ) 内にある第 3.1 章:「Machine Check Architecture」 (英語) をお読みください。
mcelog は /etc/mcelog/mcelog.conf
ファイルで設定を行います。設定オプションは man mcelog
内や https://mcelog.org/ 内で説明されています。なお下記の例は、既定のファイルに対する変更箇所のみを示しています:
daemon = yes filter = yes filter-memory-errors = yes no-syslog = yes logfile = /var/log/mcelog run-credentials-user = root run-credentials-group = nobody client-group = root socket-path = /var/run/mcelog-client
mcelog サービスは既定では有効化されていません。 YaST システムサービスエディタを使用するか、下記のコマンドラインを実行することで、有効化することができます:
#
systemctl enable mcelog#
systemctl start mcelog
dmidecode
はハードウエアのシリアル番号や BIOS のリビジョンなどを含む、マシンの DMI テーブルを表示することのできるツールです。
#
dmidecode
# dmidecode 2.12
SMBIOS 2.5 present.
27 structures occupying 1298 bytes.
Table at 0x000EB250.
Handle 0x0000, DMI type 4, 35 bytes
Processor Information
Socket Designation: J1PR
Type: Central Processor
Family: Other
Manufacturer: Intel(R) Corporation
ID: E5 06 01 00 FF FB EB BF
Version: Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
Voltage: 1.1 V
External Clock: 133 MHz
Max Speed: 4000 MHz
Current Speed: 2667 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0004
L2 Cache Handle: 0x0003
L3 Cache Handle: 0x0001
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
[..]
file
#Edit sourcefile
は指定したファイル (複数可) の種類を判別します。その際、 /usr/share/misc/magic
ファイル内に書かれた情報を使用します。
>
file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), \
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped
-f 一覧ファイル
オプションを指定すると、 一覧ファイル に指定したファイル内を読み込み、読み込んだ内容をファイル名として解釈し、ファイルの種類を判別します。また -z
オプションを指定すると、 file
が圧縮ファイル内を調査するようにすることができます:
>
file /usr/share/man/man1/file.1.gz /usr/share/man/man1/file.1.gz: gzip compressed data, from Unix, max compression>
file -z /usr/share/man/man1/file.1.gz /usr/share/man/man1/file.1.gz: troff or preprocessor input text \ (gzip compressed data, from Unix, max compression)
-i
オプションを指定すると、ファイルの種類に対する詳しい説明ではなく、 MIME タイプを表示するようになります。
>
file -i /usr/share/misc/magic
/usr/share/misc/magic: text/plain charset=utf-8
mount
, df
, du
#Edit sourcemount
コマンドは、どのファイルシステム (デバイスおよび種類) がどこにマウントされているのかを表示します:
#
mount
/dev/sda2 on / type ext4 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
devtmpfs on /dev type devtmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,mode=1777)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda3 on /home type ext3 (rw)
securityfs on /sys/kernel/security type securityfs (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
gvfs-fuse-daemon on /home/tux/.gvfs type fuse.gvfs-fuse-daemon \
(rw,nosuid,nodev,user=tux)
それぞれのファイルシステム内での使用率を調べたい場合は、 df
コマンドを使用します。このコマンドに対して -h
(もしくは --human-readable
) オプションを指定すると、人間にとってわかりやすい、単位付きの表示に切り替えることができます。
>
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 5,9G 13G 32% /
devtmpfs 1,6G 236K 1,6G 1% /dev
tmpfs 1,6G 668K 1,6G 1% /dev/shm
/dev/sda3 208G 40G 159G 20% /home
指定したディレクトリ内、およびそのサブディレクトリ内にある全ファイルのサイズ合計を知りたい場合は、 du
コマンドを使用します。 -s
オプションを指定すると、詳細な出力を省略して、パラメータで指定したディレクトリの合計値のみを表示します。また、このコマンドでも -h
を指定することで、人間にとってわかりやすい、単位付きの表示に切り替えることができます。
>
du -sh /opt
192M /opt
バイナリファイルの内容を表示したい場合は、 readelf
ユーティリティを使用します。このプログラムは、 ELF 形式であれば、どのアーキテクチャ向けのファイルであっても読み込むことができます:
>
readelf --file-header /bin/ls
ELF Header:
マジック: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
クラス: ELF64
データ: 2's complement, little endian
バージョン: 1 (current)
OS/ABI: UNIX - System V
ABI バージョン: 0
型: EXEC (Executable file)
マシン: Advanced Micro Devices X86-64
バージョン: 0x1
エントリポイントアドレス: 0x402540
プログラムヘッダ始点: 64 (bytes into file)
セクションヘッダ始点: 95720 (bytes into file)
フラグ: 0x0
このヘッダのサイズ: 64 (bytes)
プログラムヘッダサイズ: 56 (bytes)
プログラムヘッダ数: 9
セクションヘッダサイズ: 64 (bytes)
セクションヘッダ数: 32
セクションヘッダ文字列表索引: 31
stat
#Edit sourcestat
コマンドはファイルの属性を表示します:
>
stat /etc/profile
File: `/etc/profile'
Size: 9662 Blocks: 24 IO Block: 4096 regular file
Device: 802h/2050d Inode: 132349 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-03-20 07:51:17.000000000 +0100
Modify: 2009-01-08 19:21:14.000000000 +0100
Change: 2009-03-18 12:55:31.000000000 +0100
--file-system
パラメータを指定すると、指定したファイルが存在するファイルシステム内での情報を表示することができます:
>
stat /etc/profile --file-system
File: "/etc/profile"
ID: d4fb76e70b4d1746 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 2581445 Free: 1717327 Available: 1586197
Inodes: Total: 655776 Free: 490312
fuser
#Edit sourceどのプロセスやユーザが、どのファイルにアクセスしているのかを知りたいような場合があります。たとえば /mnt
をマウント解除したいような場合がそれにあたります。 umount
コマンドが "device is busy" と出力してマウント解除に失敗した場合、 fuser
コマンドを使用することで、どのプロセスがデバイスにアクセスしているのかがわかります:
>
fuser -v /mnt/*
USER PID ACCESS COMMAND
/mnt/notes.txt tux 26597 f.... less
あとは less
プロセスが終了するのを待つか、もしくは強制終了させることで、ファイルシステムのマウントを解除できるようになります。なお、 fuser
コマンドに -k
オプションを指定すると、ファイルにアクセスしているプロセスを終了させることができます。
w
#Edit sourcew
コマンドを使用すると、現在システムに誰がログインしているのかと、そのユーザが今何をしているのかを知ることができます。たとえば下記のようになります:
>
w
16:00:59 up 1 day, 2:41, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
tux :0 console Wed13 ?xdm? 8:15 0.03s /usr/lib/gdm/gd
tux console :0 Wed13 26:41m 0.00s 0.03s /usr/lib/gdm/gd
tux pts/0 :0 Wed13 20:11 0.10s 2.89s /usr/lib/gnome-
-f
オプションを指定すると、リモートからアクセスしている場合のアクセス元の表示を切り替えることもできます。
time
による時間測定 #Edit sourceコマンドで使用した時間を計測したい場合は、 time
ユーティリティをお使いください。このユーティリティは、 bash の内蔵コマンドとしても用意されているほか、純粋なプログラム ( /usr/bin/time
) としても提供されています。
>
time find . > /dev/null
real 0m4.051s1
user 0m0.042s2
sys 0m0.205s3
コマンドが起動して終了するまでに経過した実時間を表しています。 | |
| |
|
/usr/bin/time
コマンドの場合は、出力をより詳しく行うことができます。読みやすい表示をご希望の場合は、 -v
オプションを指定してください。
/usr/bin/time -v find . > /dev/null Command being timed: "find ." User time (seconds): 0.24 System time (seconds): 2.08 Percent of CPU this job got: 25% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.03 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 2516 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1564 Voluntary context switches: 36660 Involuntary context switches: 496 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
コンピュータシステムを扱っていると、様々なデータを採取できることがわかります。たとえばコンピュータの温度の変化やネットワークインターフェイスが送信もしくは受信したデータ量などがあります。 RRDtool では、そのようなデータを詳細に保存し、カスタマイズ可能なグラフとして可視化する機能を提供しています。
RRDtool はほとんどの Unix プラットフォームや Linux ディストリビューション向けに提供されています。 openSUSE® Leap でも RRDtool をご利用いただけます。 YaST からインストールを行うか、もしくは root
で下記のように入力して実行してください:
zypper
install
rrdtool
RRDtool には Perl, Python, Ruby, PHP などのバインディングが用意されています。そのため、お使いのスクリプト言語を利用して、独自の監視スクリプトを作成することができます。
RRDtool は Round Robin Database tool の略で、 「ラウンドロビン型のデータベースツール」 という意味です。 ラウンドロビン とは 「持ち回り」 のような意味で、一定量のデータを保持し続け、古いものから順に破棄していく仕組みを意味します。そのため、データには始まりも終わりもありません。 RRD tool では、このようなラウンドロビン型のデータベースを利用してデータを保存し、読み込みを行います。
上述のとおり、 RRDtool は時間が経過するごとに変化していくようなデータを扱うよう設計されています。よくある使用例としては、測定データを繰り返し読み取ることのできるセンサー (温度や速度など) からデータを採取して、特定の形式でグラフ化するなどの例が考えられます。このようなデータであれば、 RRDtool は完璧に動作しますし、データの処理や必要な出力の作成も容易に行うことができます。
データを自動的に採取できないようなデータや、定期的に採取できないようなデータに対しては、 RRDtool にデータを与える際、特定の書式を使用する必要があります。また、このようなデータの場合、 RRDtool を手作業で動作させる必要があるかもしれません。
下記は RRDtool の基本的な使い方を説明するための例です。ここでは RRDtool における 3 つのフェーズ (データベースの作成, 測定データの更新, 測定データの可視化) を示しています。
たとえば Linux システム内において随時変化する、メモリの使用率について情報を収集し、可視化したいと考えたとします。わかりやすいように、今回は 4 秒間隔で 40 秒間にわたって、空きメモリ量を計測するものとします。また、メモリを大きく使用するアプリケーションを 3 種類 (Firefox Web ブラウザ, Evolution 電子メールクライアント, Eclipse 開発フレームワーク) 動作させて終了し、メモリの使用率を変化させてみます。
RRDtool はネットワークトラフィックを測定し、可視化するためによく使用されます。このような場合、 Simple Network Management Protocol (SNMP) を使用して行います。このプロトコルはネットワークデバイスに対して、内部カウンタの情報からさまざまな値を生成させて取得することができます。 SNMP に関する詳細は、 http://www.net-snmp.org/ をお読みください。
今回の例は上記と少し異なります。データを手作業で取得する必要があります。下記のようなヘルパースクリプト free_mem.sh
を使用して、現在の空きメモリ量を調べて、標準出力に書き込むことを行います。
>
cat free_mem.sh
INTERVAL=4
for steps in {1..10}
do
DATE=`date +%s`
FREEMEM=`free -b | grep "Mem" | awk '{ print $4 }'`
sleep $INTERVAL
echo "rrdtool update free_mem.rrd $DATE:$FREEMEM"
done
時間間隔は 4 秒で、間隔を空ける際に sleep
コマンドを使用します。
RRDtool は日時形式を Unix 時間 と呼ばれる特殊な形式で受け付けます。これは 1970 年 1 月 1 日深夜からの経過秒数で日時を表すもので、たとえば 1272907114 は 2010 年 5 月 3 日 17:18:34 を意味することになります。
空きメモリの情報は free
-b
コマンドで取得します。つまり、 「キロ」 などの接頭辞のない純粋なバイト単位の値を取得しています。
echo
で始まる行には、次の手順で使用するデータベースのファイル名 ( free_mem.rrd
) と、 RRDtool で値を更新する際のコマンドラインが書かれています。
free_mem.sh
を実行して、下記のような結果が得られたものとします:
>
sh free_mem.sh
rrdtool update free_mem.rrd 1272974835:1182994432
rrdtool update free_mem.rrd 1272974839:1162817536
rrdtool update free_mem.rrd 1272974843:1096269824
rrdtool update free_mem.rrd 1272974847:1034219520
rrdtool update free_mem.rrd 1272974851:909438976
rrdtool update free_mem.rrd 1272974855:832454656
rrdtool update free_mem.rrd 1272974859:829120512
rrdtool update free_mem.rrd 1272974863:1180377088
rrdtool update free_mem.rrd 1272974867:1179369472
rrdtool update free_mem.rrd 1272974871:1181806592
なお、このままでは端末に結果を書き出しているだけで、次の手順で使用することができませんので、下記のように実行してファイルに保存しておきます:
sh free_mem.sh > free_mem_updates.log
"\n \n"
まずは下記のようにコマンドを入力して実行し、ラウンドロビン型のデータベースを作成します:
>
rrdtool create free_mem.rrd --start 1272974834 --step=4 \
DS:memory:GAUGE:600:U:U RRA:AVERAGE:0.5:1:24
このコマンドは free_mem.rrd
というファイルを作成します。このファイル内に測定したデータを書き込むことになります。
--start
オプションは、開始日時を Unix 時間で表したものを指定しています。この値は、データベースに追加される最初の値となります。この例では、 free_mem.sh
の出力に現れた Unix 時間 (1272974835) よりも前の日時を指定しています。
--step
オプションは測定したデータの時間間隔を指定するためのものです。
DS:memory:GAUGE:600:U:U
の部分は、データベースに対して新しいデータソース (DS) を設定している箇所です。 memory という名称で gauge という種類を設定し、データとデータの間の間隔は最大で 600 秒、値の 最小値 と 最大値 は未知 (U; Unknown) としています。
RRA:AVERAGE:0.5:1:24
はラウンドロビンアーカイブ (RRA) と呼ばれるもので、データ点の 平均値 を計算する 統合関数 を利用して処理を行い、データを格納することを表しています。このとき、行末には 3 種類の統合関数向けのパラメータが指定されています。
何もエラーが発生することなく終了すれば、 free_mem.rrd
がカレント (現在居る) ディレクトリ内に作成されているはずです:
>
ls -l free_mem.rrd
-rw-r--r-- 1 tux users 776 May 5 12:50 free_mem.rrd
データベースを作成したら、あとは測定したデータをデータベースに投入していきます。 2.11.2.1項 「データの収集」 で行ったとおり、既に free_mem_updates.log
というファイルを作成してあり、この中には rrdtool update
で始まる更新コマンドの羅列が記載されていますので、あとはそのままそれらを実行するだけです。
>
sh free_mem_updates.log; ls -l free_mem.rrd
-rw-r--r-- 1 tux users 776 May 5 13:29 free_mem.rrd
上記のとおり、データを更新しても free_mem.rrd
のサイズは変わりません。
データを測定し、データベースを作成し、測定されたデータをデータベースに投入したら、あとはデータベースを利用するだけです。ここでは値を読んでみることにします。
データベース内に保存された全てのデータを取得するには、下記のように入力して実行します:
>
rrdtool fetch free_mem.rrd AVERAGE --start 1272974830 \
--end 1272974871
memory
1272974832: nan
1272974836: 1.1729059840e+09
1272974840: 1.1461806080e+09
1272974844: 1.0807572480e+09
1272974848: 1.0030243840e+09
1272974852: 8.9019289600e+08
1272974856: 8.3162112000e+08
1272974860: 9.1693465600e+08
1272974864: 1.1801251840e+09
1272974868: 1.1799787520e+09
1272974872: nan
AVERAGE
はデータベース内のデータ点の平均値を算出するためのもので、データソースを指定する際に設定したものです ( 2.11.2.2項 「データベースの作成」 を参照) 。それ以外の関数は指定していません。
出力の最初の行には、 2.11.2.2項 「データベースの作成」 で行ったデータソースの設定時に指定した名前が現れています。
左側の列は時刻を、右側の列には指数表記での測定値の平均が示されています。
nan
は 「not a number」 (数値ではない) の意味で、 最初と最後では平均値を算出できないため、このような表示になっています。
あとはデータベース内に保存されたデータをグラフ化するだけです:
>
rrdtool graph free_mem.png \
--start 1272974830 \
--end 1272974871 \
--step=4 \
DEF:free_memory=free_mem.rrd:memory:AVERAGE \
LINE2:free_memory#FF0000 \
--vertical-label "GB" \
--title "Free System Memory in Time" \
--zoom 1.5 \
--x-grid SECOND:1:SECOND:4:SECOND:10:0:%X
free_mem.png
は、作成するグラフのファイル名です。
--start
と --end
は、グラフを作成する際の日時範囲の指定です。
--step
はグラフの時間間隔を秒単位で指定しているものです。
DEF:...
の部分は free_memory という名前のデータを定義している箇所です。データは free_mem.rrd
データベースから読み込み、データソース名は memory 、データポイントは average という名前であることを定義しています (2.11.2.2項 「データベースの作成」 ではそれ以外のデータポイントは定義していないためです) 。
LINE...
の部分はグラフに描画する際の線を定義しているものです。 2 ピクセルの太さで free_memory という名前のデータを、赤色で描画する旨を表しています。
--vertical-label
は y 軸に表示するラベルを、 --title
にはグラフ全体のタイトルをそれぞれ指定しています。
--zoom
ではグラフの拡大率を指定しています。この値は 0 より大きい値でなければなりません。
--x-grid
では、グラフ内のグリッド線の描画方法とラベルを指定しています。この例では 1 秒間隔でグリッド線を描画し、 4 秒間隔で赤点線を、 10 秒間隔でラベルをそれぞれ描画しています。
RRDtool は複雑なツールであり、多数のサブコマンドやコマンドラインオプションが用意されています。それらの中には分かりやすいものもある一方、期待するような出力を行おうとすると、いろいろ試行錯誤を行って調整する必要に迫られることもあります。
基本的な情報のみを提供している RRDtool のマニュアルページ ( man 1 rrdtool
) とは別に、 RRDtool home page (英語のみ) をご覧になることをお勧めします。ここには rrdtool
コマンドやそのサブコマンドに対する詳細な ドキュメンテーション (日本語訳が RRDtool マニュアル訳 などにあります) が用意されています。また チュートリアル (英語) には、一般的な RRDtool の作業手順が示されています。
ネットワークトラフィックの監視を行いたい場合は、 MRTG (Multi Router Traffic Grapher) (英語) プロジェクトをご覧になるとよいでしょう。 MRTG は、様々なネットワークデバイスから収集した情報をグラフ化することができます。この中でも RRDtool を使用しています。