2011年1月10日 星期一

rsync 壓縮參數的大概測試心得

昨天意外發現 rsync 有 -z 的參數, 可以壓縮再傳。好奇它的效果就試了一下, 結果得到出人意外的結論: 有時候直接全部重新複製還比較快........, 雖然是很明顯的事實, 用慣 rsync 後到沒想到這點。

簡易的測試環境如下:
  • 原始檔案: 一堆目錄合起來 7G 左右放在 A 機器
  • 目標檔案: 另一台機器放著很久以前的版本, 6G 左右, 至少有 1G 的差異
  • gigabyte 網路
簡易的測試結果如下:

用 rsync -av --delete 跨機器傳8m
加上 -z超過 13m, 我等不下去, 就停了
用 rsync 在目的機器產生新目錄, 不 diff2m54s
用 rsync -z 在目的機器產生新目錄, 不 diff超過 6m, 我等不下去, 就停了
scp2m47s

懶得測傳說中最快的 nc + compression, 有興趣的人可以看看《High performance MySQL 2e》 Appendix A, 有多種不同組合的測試數據。

在傳輸過程中用 iostat -dx 觀察兩台機器的 utility rate 和用 htop 看 rsync 的 CPU 使用狀態, 就可以明白加 compression 應該不會有好下場。不加前就是 IO rate 低, CPU 100%; 加 -z 後變成 IO rate 更低, CPU 當然還是 100%。

2 則留言:

  1. 預設 --delete 是 --delete-before。若用 --del(--delete-during 的 alias)會不會比較快?

    回覆刪除
  2. 我沒實測過, 我猜應該沒有差別, 瓶頸應該不是這裡, 而是想辦法比較兩個二進位大檔案吧

    回覆刪除

C++ 能否用 memcpy 複製 class / struct 的資料?

答案是: POD (plain old data) type 可以。POD type 可和 C 互通, CPP Reference POD Type 的介紹: Specifies that the type is POD (Plain Old Data) type. Thi...