ikuwow’s blog

内省を雑に垂れ流しています

Linuxのリソース管理に使うまとめ

LPIC201試験の勉強のために、あずき本の第1章「キャパシティプランニング 」の部分を簡単にまとめてみた。

この章には、Linuxシステムが必要となるリソースに関するツールについて書いてある。CPU・RAM・ディスク・ネットワークの使用率等を確認するコマンドを覚えていくのが主。

総合的にいろいろみれるもの

top

これが一番総合的に見られる。オプションなしでtopを使うと、数秒ごとに情報を取得して表示が更新される。得体の知れないサーバーにログインしたらとりあえず打つとよいのかも。簡単なモニタリングにも使える。

1行目にはシステムが起動してからの経過時間とユーザ数、ロードアベレージ。 2行目にはプロセスの状態ごとの数。 3行目はCPU使用率。これは少し覚える必要がある。

  • us: ユーザーがCPUを使用している時間の割合 (user)
  • sy: カーネルがCPUを使用している時間の割合 (system)
  • ni: 優先度(nice値)が変更されたプロセスが使用している時間の割合
  • id: アイドル状態の時間の割合 (idle)
  • wa: ディスクIO待ちの時間の割合 (wait)
  • hi: ハードウェア割り込み要求時間の割合 (hardware interruption)
  • si: ソフトウェア割り込み要求時間の割合 (software interruption)
  • st: ゲストOSがCPUを割り当てられず待機させられた時間の割合 (steal)

4行目がメモリで、 5行目がスワップ。

  • total: 物理メモリの合計値
  • used: 使用中のメモリ
  • free: 未使用のメモリ
  • バッファ容量

それ以下が各プロセスごとの情報を表示。デフォルトだとCPU使用率(%CPU)で降順にソートされる。

起動時のオプションや実行中に使えるコマンドなどものすごい数のオプションがあるがかいつまんで。 top -d [秒数]で更新間隔を指定、top -n [回数]で更新回数を指定。

コマンド内での操作。スペースバーかEnterキーで表示を更新。hでヘルプが見られる。fで表示項目を選択できるモードに変わる。qで終了。

sar

ハイパー多機能。sysstatパッケージに含まれているとのこと。システム状況を収集するsadcコマンドとそれらを表示するsarコマンドで構成されている。/var/log/saディレクトリ以下にsaXXというファイル名で保存されていて、それらを表示するのがsarコマンド。

sar -bでディスク情報、sar -n DEVでネットワークインターフェース情報、sar -rでメモリ情報を表示。

18時10分01秒    154440   1767208     91.96    112904    645580   1722128     28.39
18時20分01秒    151736   1769912     92.10    113892    647440   1720180     28.35
18時30分01秒    119348   1802300     93.79    114884    647856   1747284     28.80
18時40分01秒    183628   1738020     90.44    116008    653040   1680160     27.69
18時50分01秒    154860   1766788     91.94    117080    657300   1707548     28.15
19時00分01秒    123400   1798248     93.58    117880    658436   1735576     28.61
19時10分01秒    156532   1765116     91.85    118936    660380   1702820     28.07
19時20分01秒    197932   1723716     89.70    119860    660484   1666748     27.47
19時30分01秒    140792   1780856     92.67    120888    662688   1712456     28.23
平均値:     151475   1770173     92.12    146528    367927   1792382     29.54

そのほか

vmstatはメモリと仮想メモリの詳細な状態を継続的に監視する。引数なしだと一度のみ表示。引数に は数値を二つ取れて、第一引数が表示間隔、第二引数が表示回数。

$ vmstat 1 4
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  26676 142444 120912 662696    0    0    14    13    0    0  3  1 95  1  0
 0  0  26676 142436 120912 662696    0    0     0     0   30   62  0  0 100  0  0
 0  0  26676 142436 120912 662696    0    0     0     0   24   56  0  0 100  0  0
 0  0  26676 142436 120912 662696    0    0     0     0   30   65  0  0 100  0  0

iostatはCPUの使用率とディスクの入出力に関する情報の監視に使える。引数なしだと、システムが起動してから現在までの統計情報を表示。数値を入れるとその秒数間隔で表示が追加される。

Linux 3.10.0-123.6.3.el7.x86_64 (localhost.localdomain)  2014年08月25日   _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.49    0.00    0.48    0.41    0.00   98.62

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               5.18        79.89        13.98     267139      46748
dm-0              0.09         0.37         0.00       1244          0
dm-1              3.90        77.67        10.06     259712      33635

uptimeでシステムの稼働時間などを表示。topの1行目とほぼ同じ。

$ uptime
 06:34:16 up 57 min,  1 user,  load average: 0.00, 0.01, 0.05

w でログインしているユーザーを確認。1行目はuptimeと同じ。

$ w
 06:34:45 up 57 min,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
vagrant  pts/0     05:38    5.00s  0.11s  0.07s sshd: vagrant [priv]

CPU使用率

psはおなじみ、プロセスの状態を見るコマンド。Linuxにおいて非常に基本的なコマンド。多くのオプションにハイフンがいらない。ps aで端末上の全てのプロセスを表示、ps uで実行ユーザ名も表示、ps xで端末制御のないプロセス(デーモンなど)も表示。

$ ps aux | grep httpd
apache   13403  0.9  2.0 582552 38532 ?        S    12:21   3:55 /usr/sbin/httpd
apache   15761  1.5  2.3 589280 45208 ?        S    14:35   4:18 /usr/sbin/httpd
apache   23045  0.1  1.8 483672 35404 ?        S    19:13   0:00 /usr/sbin/httpd
apache   23105  0.0  0.6 463592 12292 ?        S    19:15   0:00 /usr/sbin/httpd
user1    23223  0.0  0.0 107468   896 pts/0    S+   19:23   0:00 grep httpd
root     32290  0.0  1.0 463460 19316 ?        Ss   Jul27   2:04 /usr/sbin/httpd

pstreeはinitから始まるプロセスの親子関係を木構造で見られる。ちなみにMacだとlaunchdがルートプロセスになるんですね。

init─┬─NetworkManager
     ├─abrt-dump-oops
     ├─abrtd
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─clamd───{clamd}
     ├─crond
     ├─dbus-daemon
     ├─dovecot─┬─anvil
     │         ├─config
(略)

lsofというのもプロセスの確認に使えるようだ。

メモリ

もちろん topsar -rで確認できるのだがもっとお手軽にみるにはfree。スワップも含めたメモリの使用量を確認できる。free -bでbyte単位、free -mでmega byte単位、・・・。free -s [間隔(秒)]で複数回出力させられる。free -tTotal:の行が追加される

$ free 
             total       used       free     shared    buffers     cached
Mem:        502168     391716     110452       4704       1444     252668
-/+ buffers/cache:     137604     364564
Swap:       839676          0     839676

もっと詳細に見たければ/proc/memoinfoをみると良い。その瞬間のメモリ状態が見られる。

ディスク

df はディスクの状態を見る。df -Hでhuman readableな単位をつけて表示される(df -hだと1MB=1000kBで表示される)。引数にディレクトリを指定することでそのディレクトリが含まれるファイルシステムについて表示する。df -iでiノード情報を表示。

$ df
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root   6.7G  1.6G  5.2G   23% /
devtmpfs                  240M     0  240M    0% /dev
tmpfs                     246M     0  246M    0% /dev/shm
tmpfs                     246M  4.3M  241M    2% /run
tmpfs                     246M     0  246M    0% /sys/fs/cgroup
/dev/sda1                 497M  153M  345M   31% /boot

ネットワークトラフィック

いろいろあるが、あずき本ではnetstatが載っている。ネットワーク接続や、ルーティングテーブル、インターフェースの統計情報など。

ctive Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost.localdoma:ssh 10.0.2.2:63999          ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    10095    @/org/freedesktop/systemd1/notify
unix  5      [ ]         DGRAM                    6004     /run/systemd/journal/socket
unix  15     [ ]         DGRAM                    6006     /dev/log
unix  2      [ ]         DGRAM                    10157    /run/systemd/shutdownd
unix  2      [ ]         DGRAM                    12752
unix  3      [ ]         STREAM     CONNECTED     17348
unix  3      [ ]         STREAM     CONNECTED     14767
unix  2      [ ]         DGRAM                    16757

マニュアルをみると "This program is obsolete."とあり、ssというコマンドで代替できるらしい。

Linux教科書 LPICレベル2 Version4.0対応 (EXAMPRESS)

Linux教科書 LPICレベル2 Version4.0対応 (EXAMPRESS)