P200 CPUのランキュー

 ランキュー(run queue)は、CPUによる処理を待っている実行可能スレッドのキューのこと。Solarisでは、ディスパッチャキュー(dispatcher queue)と呼ばれることが多い。
 マルチプロセッサシステムでは、カーネルは個々のCPUのためにランキューを提供しており、スレッドを同じランキューにキューイングし続けようとする。CPUはスレッドのデータをキャッシングしており、スレッドは同じCPUで実行され続ける可能性が高いということである。スレッドデータが格納されているキャッシュをウォーム度のあるキャッシュと呼び、特定のCPUを選ぼうとするアプローチをCPUアフィニティ(CPU affinity)と呼ぶ。CPUアフィニティは、キュー操作のためのスレッド同期(ミューテックスロック)のコストも取り除けれる戦略である。ランキューがグローバルですべてのCPUが同じランキューを共有することになれば、同期が必要になってスケーラビリティが大きく損なわれる。

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

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

P179 strace

(各システムコールの消費時間)

strace -ttt -T -p PID

(システムコールアクティビティのサマリ)

strace -c -p PID

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

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

P186 execsnoop

2秒の間に実行されたすべてのプロセスを表示できる。-vオプションを付与すると、ARGSが詳しく出力される。
www.brendangregg.com

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

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

P175 pidstat

 pidstat -dを使えば、プロセスがディスクI/Oを行っているのか、スリープ状態なのかおそらく推測できる。
www.atmarkit.co.jp

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

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

P96 3.2.8 メモリ管理

  • スワッピング

 プロセス全体をメインメモリとセカンダリストレージの間で移動する

  • ページング

 ページと呼ばれるメモリの小さな単位(例:4kB)を移動する

 Linuxではスワッピングという用語はページングと同じ意味で使われている。Linuxカーネルは、スレッド全体、プロセス全体のスワッピングをサポートしていないためである。

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

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

P21 2.3.3 トレードオフ

チューニングできるパラメータには、トレードオフを伴う事が多い。例えば以下の様な内容である。

  • フィルシステムレコードサイズ

 レコードサイズを小さくしてアプリケーションのI/Oサイズに近づけると、ランダムI/Oのワークロードのパフォーマンスが上がり、アプリケーション実行中のファイルシステムキャッシュをより効率手kに使える用になる。
 レコードサイズを大きくすると、ファイルシステムバックアップなど、ストリーミングのワークロードのパフォーマンスが向上する。

  • ネットワークバッファサイズ

 バッファサイズを小さくすると、接続ごとにメモリにかかるオーバヘッドを削減でき、システムのスケーリングに効果がある。
 バッファファイズを大きくすると、ネットワークスループットが上がる。

システムに変更を加えるときには、このようなトレードオフを探すようにしよう。

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

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

P19 2.3.2 タイムスケール

 システムレイテンシのタイムスケール例
 SSDは1~10m秒、TCPパケット再送が1~3秒とした場合、現実世界では2~6日と105年~317年と置き換えてくれているので分かりやすい。

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

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