web-dev-qa-db-ja.com

SolarisZFSでtopioのファイルを見つける方法は?

Solaris 10ZFSベースのNFSサーバーがあります。物理ディスクは、多かれ少なかれ最大ioレートです。パフォーマンスが非常に悪いので、スピンドルを追加します。 NFSは、XenServerハイパーバイザーのストレージとしてのみ機能します。

どのVMディスク(ストレージ上の.vhdファイルを意味する)がほとんどの負荷を生成しているのか)を知りたいのですが、ファイルシステムまたはnfsdにクエリを実行して、iostatまたはtopのような出力を取得するにはどうすればよいですか?ファイル名と読み取り/書き込み。数値は絶対値でも相対値でもかまいません。

iosnoop を試しました。それは間違いなく正しい方向に進んでいます。残念ながら、ZFSファイルシステムでファイル名を取得できないようです。 dtraceの経験はありません。多分そこにすでにスクリプトがありますか?

1
Roman

そのレベルのイントロスペクションには、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);
}
2
Nex7

セットアップにNVRAM書き込みキャッシュのレベルはありますか? ZFSの場合、それは ZILデバイス ?の存在になります。そうでない場合は、それがおそらくパフォーマンスの問題の鍵です。

1
ewwhite