不久前,我问了一个有关 SPARC 硬件上的 Solaris 10 系统调用成本的问题。在过去的几个月里,这个问题再次出现了几次,这是我发现的。
如果我们进行综合测试,以 256 字节 block 的形式从磁盘读取 300MB 文件,那么在 Solaris 10 中所需的时间比在 Linux 中要长得多。测试按以下方式完成:
dd if=test.dat of=/dev/null bs=256
即使 test.dat
存储在内存映射文件系统(如 /tmp
)上,Linux 的性能也远远优于 Solaris。 Solaris 中用户空间和内核空间之间来回切换的开销似乎比 Linux 中高得多,即使两者都运行在相同的硬件上。
我有两个问题:
- 这是 Solaris 相对于 Linux 的某种已知缺点吗?
- 假设我无法将 I/O block 的大小从 256 增加,是否有办法调整 Solaris 以匹配 Linux 数字?
谢谢!
最佳答案
我想您已经进行了真正的同类比较,Solaris 和 LINUX 机器在性能/容量上是相同的?无论如何,一些关键问题可以帮助您解决这个问题:
1) 如果您在 dd 运行时运行命令 vmstat 1,您会在 Solaris 10 机器上与 LINUX 机器上得到什么类型的数字?
2) 该操作花费了多少时间?我发现在运行 Solaris 10 x86 的 PC 上只需要 2 秒就可以完成此操作...
3) 尝试为 if 参数使用完全限定路径(即 if=/tmp/test.dat 与 if=test.dat strong>) 只是为了双重确保您正在运行/tmp。
肖恩。
关于linux - Solaris 与 Linux 中的系统调用开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9970782/