Solaris 10ZFSベースのNFSサーバーがあります。物理ディスクは、多かれ少なかれ最大ioレートです。パフォーマンスが非常に悪いので、スピンドルを追加します。 NFSは、XenServerハイパーバイザーのストレージとしてのみ機能します。
どのVMディスク(ストレージ上の.vhdファイルを意味する)がほとんどの負荷を生成しているのか)を知りたいのですが、ファイルシステムまたはnfsdにクエリを実行して、iostatまたはtopのような出力を取得するにはどうすればよいですか?ファイル名と読み取り/書き込み。数値は絶対値でも相対値でもかまいません。
iosnoop を試しました。それは間違いなく正しい方向に進んでいます。残念ながら、ZFSファイルシステムでファイル名を取得できないようです。 dtraceの経験はありません。多分そこにすでにスクリプトがありますか?
そのレベルのイントロスペクションには、dtraceを使用する必要があります。これは基本的に https://wikis.Oracle.com/display/DTrace/nfsv3+Provider のnfsv3fileio.dの例ですが、ライブで実行するように更新されています(私のテストは最小限だったと思います)。その同じページには、さらにいくつかの例があります。また、「nfssvrtop」をグーグルで検索することもできます。
#!/usr/sbin/dtrace -s
#pragma D option quiet
dtrace:::BEGIN
{
trace("Tracing.. hit CTRL-C to end. Updates every 5 seconds.\n");
}
nfsv3:::op-read-done
{
@bytes_read[args[1]->noi_curpath] = sum(args[2]->res_u.ok.data.data_len);
}
nfsv3:::op-write-done
{
@bytes_written[args[1]->noi_curpath] = sum(args[2]->res_u.ok.count);
}
profile:::tick-5sec
{
trunc(@bytes_read, 15);
trunc(@bytes_written, 15);
printf("\n%15s %15s %s\n", "Bytes Read/5s", "Bytes Written/5s", "Pathname");
printa("%@15d %@15d %s\n", @bytes_read, @bytes_written);
trunc(@bytes_read);
trunc(@bytes_written);
}
セットアップにNVRAM書き込みキャッシュのレベルはありますか? ZFSの場合、それは ZILデバイス ?の存在になります。そうでない場合は、それがおそらくパフォーマンスの問題の鍵です。