
我正在測試 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 開發人員如此迅速且詳盡地提供了幫助。