Solaris与Linux中的Syscall开销

时间:2012-04-02 04:05:57

标签: linux io solaris system-calls

不久前,我在SPARC硬件上询问了Solaris 10中系统调用的成本问题。在过去的几个月里,这个问题重新出现了几次,这就是我发现的。

如果我们进行综合测试,其中以256字节块从磁盘读取300MB文件,则在Solaris 10中需要的时间比在Linux中长得多。测试按以下方式进行:

dd if=test.dat of=/dev/null bs=256

即使test.dat存储在像/tmp这样的内存映射文件系统上,Linux也能大大优于Solaris。似乎在Solaris中用户空间和内核空间之间来回的开销远远高于在Linux中的开销,即使两者都在相同的硬件上运行。

我有两个问题:

  1. 对Linux而言,这是否存在某种已知的劣势?
  2. 有没有办法调整Solaris以匹配Linux数字,假设我不能将I / O块的大小从256增加?
  3. 谢谢!

2 个答案:

答案 0 :(得分:2)

我认为你已经将这个做了真正的比较,因为Solaris和LINUX盒子的性能/容量是相同的?无论如何,一些关键问题可以帮助您解决这个问题:

1)如果在 dd 运行时运行命令 vmstat 1 ,您在Solaris 10机箱与LINUX机箱上获得的数字类型是什么?

2)该操作的经过时间是多少?我在运行Solaris 10 x86的PC上看到的时间只有2秒......

3)尝试使用 if 参数的完全限定路径(即 if = / tmp / test.dat vs if = test.dat )只是为了确保你没有跑掉/ tmp。

肖恩。

答案 1 :(得分:1)

您应该在问题中包含更多信息。在我看来,你的问题是关于文件系统,它不是关于操作系统。 XFS允许使用512字节到64千字节之间的块大小创建文件系统,允许调整文件系统以满足预期用途。在Solaris上,默认文件系统是xfs,所以256字节块大小不是一个好参数,请你把它增加到512看看会发生什么?