これまでに、私はSPARCハードウェア上のSolaris 10のシステムコールのコストについて質問しました。ここ数ヶ月で、この問題は数回再現され、ここで私が見つけたものがあります。Solaris対Linuxのシステムオーバーヘッド
300MBのファイルを256バイトのブロックでディスクから読み取る総合テストを行うと、Solaris 10ではかなり時間がかかりますが、それはLinuxで実行されます。テストは、次の方法で行われます。
dd if=test.dat of=/dev/null bs=256
test.dat
が/tmp
のようなメモリマップドファイルシステムに格納されている場合でも、Linuxは大きなマージンでのSolarisよりも性能が優れています。ユーザー空間とカーネル空間の間を行き来するオーバーヘッドは、Solarisでは同じハードウェア上で実行されている場合でも、Linuxよりもかなり高いようです。
私は2つの質問がある:それは、Linux経由でSolarisの既知の問題点のいくつかの種類
- ですか?
- I/Oブロックのサイズを256から増やすことができないと仮定して、Linuxを一致させるためにSolarisを調整する方法はありますか?
ありがとうございました!
不特定多数の変数があります。これは同等のハードウェア上にありますか?同じディスク?同じファイルシステムですか?システムコールのオーバーヘッドに関する質問に答えるには、他の作業をしない別のシステムコールを使用する必要があります。 – alberge
@alberge私が得ることができる最高の「同等のハードウェア」は、Windows7ホストで実行されているVirtualBoxマシンの2つのインスタンスです。私は、この設定が薄れている可能性があることを知っていますが、一連の実験では、数値は妥当な分散のままです。 "/ tmp"を使用したテストでは、両方のファイルシステムが同じ - tmpfsです。また、ibsとobsを別々に指定し、obsを8192に保つことによってテストを強化しました。 – evolvah
ファイルシステムは、同じ名前を持つという点で「同一」です。tmpfsの実装は、LinuxとSolarisの間で共通して何も共有しません。現在使用している複雑な組み合わせではなく、システムコールのオーバーヘッドを測定するものを探してみてください。また、両方のシステムの仕様を述べ、テスト中にどのボトルネックが発生しているかを調べる必要があります。 – jlliagre