P476 9.6.7 iotop

[スニペット]

iotop -bod5

[解説]
バッチモード(-b)を使えば、画面消去なしの出力が得られる。ディスクI/Oを行っているプロセスのみを表示(-o)と5秒のインターバル(-d5)などで使うとよい。
その他のオプションでは、インターバルの平均値ではなく、I/Oの総和を表示する-aが役に立つ。(私見:一部のヘッダー行を表示しない-qや、タイムスタンプを付与する-tも)

qiita.com

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

P454 9.6.1 iostat

[オプション概略]

  • -xを指定すれば拡張出力が選択され、今までに説明した様々な戦略で役に立つ欄が追加で表示される。追加の欄は、ワークロードの特性の把握で役立つIOPSとスループットの指標、使用率、キューの長さ、ディスク応答時間などが表示される。
  • -dでディスク使用率のみ表示できる(付けないとCPUなども表示される)。
  • -kでkB表示となり、-zでアイドルデバイスを表示を省略できる。
  • -tでタイムスタンプを出力できる

[出力された欄の意味]

  • rrqm/s: 1秒の間にドライバの要求キューにセットされ、マージされた読み出し要求の数
  • wrqm/s: 1秒の間にドライバの要求キューにセットされ、マージされた書き込み要求の数
  • r/s:1秒の間にディスクデバイスに発行された読み出し要求の数
  • w/s:1秒の間にディスクデバイスに発行された書き出し要求の数
  • rkB/s:1秒の間にディスクデバイスから読みだされたkB数
  • wkB/s:1秒の間にディスクデバイスに書き込まれたkB数
  • avgrq-sz:セクター内の平均要求サイズ
  • avgqu-sz:ドライバの要求で待機している要求とデバイスでアクティブに処理されている要求の合計の平均
  • await:I/O応答時間の平均、ドライバの要求キーで待機している時間nとデバイスのI/O応答時間を含む[ms]
  • r_await:awaitの読み出しのみ[ms]
  • w_await:awaitの書き込みのみ[ms]
  • svctm:ディスクデバイスの推定平均I/O応答時間[ms]
  • $util:デバイスがI/O要求を処理していてビジーだった時間の割合[%]

[出力された欄の解説]

  • rrqm/s、wrqm/s欄は、パフォーマンスを上げるために、デバイスに送られる前に連続した要求がマージされていることが分かる。この指標は、シーケンシャルなワークロードが処理された兆候である。
  • r/s、w/s欄は、実際にデバイスに発行された要求の数の平均を指す
  • avgrq-szはマージ後のサイズなので、小さい場合(16セクタ以下)なら、マージできないランダムI/Oワークロードだと考えられる。サイズが大きい場合は、I/O要求のサイズが大きいか、シーケンシャルなワークロードがマージされたことを指す。
  • %utilは重要であるが、ビジー状況の計測値に過ぎず、複数のディスクから作られた仮想デバイスではあまり意味を持たないことを頭に入れておく必要がある。そのようなデバイスの場合は、IOPS(r/s + w/s)とスループット(rkB/s + wkB/s)を把握した方が良い。
  • svctmは計測値ではなく推測値という不正確な値であり、将来のバージョンでは削除されると警告されている
  • 現時点のiostatでは、ディスクエラー情報までは把握できない

www.atmarkit.co.jp

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

Markdown記法一覧

Markdown記法 出力されるHTMLタグ 内容
文頭に#を1~6個 h1~h6タグ 見出し
空行を作成 pタグ 別の段落を始める
2個空白を入れてから改行 brタグ 文中で強制的に改行
> blockquoteタグ 字下げ
*で挟む emタグ 斜字
**で挟む strongタグ 太字
* ulの中にli 番号無の箇条書き
1. olの中にli 番号有の箇条書き
*の後には空白3つ、1.の後には空白2つ 箇条書き中にpタグ 箇条書き中に強制改行
4字以上空白を置いて書く codeおよびpreタグ コード・ブロック
`(バッククォート)で挟む codeタグ 文中にコードを埋め込む
[リンク文字列](リンク先URL) a href リンク文字列と共にリンク先表示(※1)
<リンク先URL> a href リンク先URLと共にリンクを表示
![alt属性](画像ファイルのパス) img 図の埋め込み
\ or 円マークを字の前に置く -(Markdownのみの問題) Markdownにおけるエスケープ
エスケープしたいバッククォートを含むコード全体をダブルバッククォートで囲む -(Markdownのみの問題) バッククォートをエスケープ(コードとして)
\ or 円マークを字の前に置く -(Markdownのみの問題) バッククォートをエスケープ(文字として)


※1 参照型リンクの書き方

[工学社][hoge]
中略
[hoge]: https://ja.wikipedia.org/wiki/%E5%B7%A5%E5%AD%A6%E7%A4%BE

【引用文献】

P294 ページスキャン

 ページングによるメモリの開放は、カーネルのページアウトデーモンによって管理される。フリーリストに含まれる利用可能メインメモリがしきい値未満になると、ページアウトデーモンはページスキャンを始める。
 ページスキャンが発生するのは必要なときだけである。通常のバランスが取れたシステムは頻繁にページスキャンをしたりせず、短期間のバーストでページスキャンするだけである。
 Linuxではページアウトデーモンはkswapd()という名前で、ページを開放するために、非アクティブ/アクティブメモリのLRUページリストをスキャンする。
 メモリが圧迫されている兆候として、継続的なページスキャン(10秒以上)を探す。具体的な方法としては、sar -Bを実行してpgscan蘭をチェックすることで確認できる。

P236 vmstat

 出力の先頭行は、ブート以降の集計である。しかし、Linuxのrは例外で、現在の値が出力される。
 Linuxのr欄は待機しているタスクと実行されているタスクの合計である。現在のmanには間違いが書かれているので注意する必要がある。

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

P202 6.3.5 CPI、IPC

 CPI[Cycles Per Instruction]は、CPUがどこでクロックサイクルを使っているかを説明したり、CPUの使用率の性質を理解したりするために使われる重要な指標である。この指標は、CPIとは逆にIPC[Instructions Per Cycle]という形で表現されることもある。
 CPIが高いということは、CPUがストール(stall:止まっている。そしてストール中のサイクルは、ストールサイクルと呼ばれる。)していることが多い(一般的にはメモリアクセスが原因)ということであり、CPIが低いということはCPUがあまりストールしておらず、命令のスループットが高いということである。
 メモリの負荷のかかるワークロードは、高速なメモリを搭載したり、メモリI/O量を減らしたりすることでパフォーマンスを上げれる。

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

P201 6.3.1 クロックスピード

 クロックスピードは、プロセッサの第一の機能として宣伝されていることが多いが、これは誤解を招きかねないやり方である。システム内でCPUが完全に利用されているように見えても、クロックスピードを上げたらパフォーマンスが上がるわけではない。その高速なCPUサイクルが実際に何をしているかによって左右される。メモリアクセス待ちでストールサイクルになっていることが多ければ、それを高速に実行しても、CPUの命令の祖y理速度やワークロードのスループットは上がらない。

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス