我正在测试 illumos 的一些变体,目前是 OmniOS。
当我对 io-bound 进程进行基准测试时,我发现它rsync
相对于我的参考 FreeBSD 12-CURRENT 要慢得多。
使用相同的硬件、相同的命令以及相同的源磁盘和目标磁盘:
在 OmniOS r151026 中我测量了,
test@omniosce:~# time rsync -aPt /zarc/images /home/test/
real 17m25.428s
user 28m33.792s
sys 2m46.217s
在 FreeBSD 12-CURRENT 中:
test@freebsd:~ % time rsync -aPt /zarc/images /home/test/
374.651u 464.028s 11:30.63 121.4% 567+210k 791583+780083io 2pf+0w
(请注意,FreeBSD 12-CURRENT 包含调试开关,因此它的运行速度比未来即将推出的 RELEASE 版本慢)。
我注意到,在 FreeBSD 下,
rsync
作为 3 个进程运行,全部带有nice=0
,其中两个始终使用 50% 到 70% CPU 时间。在 OmniOS 上,
rsync
也作为 3 个进程运行,也带有nice=0
,但是每一项不超过3%。
CPU 使用率是 FreeBSD 和 illumos 上相同硬件上的执行时间如此不同的原因吗?
如果是这样,由于nice
两个操作系统上的情况相同,为什么 illumos 不允许更高的 CPU 使用率?
如何提高rsync
基于 illumos 的操作系统的执行时间?
先感谢您。
2018-06-02 编辑:
澄清了问题,使其更加具体。感谢@rui-f-ribeiro
回复@roaima:
- 源文件系统和目标文件系统都是本地磁盘
- 这不是每个操作系统的一次性运行,我一直在多次重复测试这种令人费解的情况
- 在每次测试时,我都会确保目标目录树完全没有与源中的文件匹配的文件
答案1
这个谜团终于被解开了将 OmniOS rsync 切换到 64 位并启用优化。这使得校验和代码的速度提高了一倍多。
现在,考虑到完全相同的硬件,OmniOS 上的 rysnc 甚至比 FreeBSD 的还要快一些。
感谢这里的所有人,也感谢优秀的 OmniOS 开发人员如此迅速和详尽地提供了帮助。