MySQLデーモンがインストールされた複数のゾーンを実行する書き込みの多いSolaris10サーバーでDTTiotopを実行すると、次の出力が得られます。
UID PID PPID CMD DEVICE MAJ MIN D BYTES 70 26636 1 mysqld sd1 10 64 R 360448 70 25940 1 mysqld sd1 10 64 R 530432 0 5 0 zpool-rpool sd1 10 64 W 17250816
ここで気になるのは、zpool-rpool
はioのほとんどを占めます。 MySQLまたは他のプロセスのどれが実際にIO-より複雑な内訳を占めるかを確認するにはどうすればよいですか?If zpool-rpool
は「ZFSへの書き込み」を表しますが、iotopはここでは本当に役に立ちません... :)
ありがとう!
ブレンダン・グレッグの最近の ファイルシステムの待ち時間に関するブログシリーズ が役立つかもしれません。彼は、syscallプロバイダーでファイルシステムの使用状況を調査するためのいくつかのスクリプトを示しています(これは、iotopで使用されるioプロバイダーよりも責任のあるプロセスを識別するための信頼性が高いはずです)。
たとえば、syscall-read-zfs.d
パート4に示されているスクリプトは、書き込みをプローブし、execnameではなくpidで集計するように簡単に変更できます。
このスクリプトの出力は、IOの数とプロセスごとのIOレイテンシーの分布を示すため、iotopよりも役立つ場合があります。データベースの場合、読み取りと同期書き込みのレイテンシーは直接です。パフォーマンスの問題の測定-1秒あたりのバイト数よりもはるかに簡単に解釈できます。
時間がある場合は、彼の BayLISAでのプレゼンテーション を見て、MySQLクエリのパフォーマンスの問題を調査する方法の実践的なデモンストレーションを行うことも強くお勧めします。
どのアプリケーションが最も読み取り/書き込みを行っているかを測定する場合は、syscallレベルで測定する必要があります。デバイスレベルでは、カーネルスレッドだけが作業を行います。