FreeBSD 7.2 make world 測速

前陣子工作單位進了一台版本控管用的主機 (svn),目前由我管理
剛剛聊到了 ramdisk make world 的速度,索性來測一下。

測試環境
CPU:Intel Core 2 Quad Q9550 @ 3.4G Hz
Memory:4G DDR2-800
HD:WD 5000AACS

測試用指令分別為:
建立 ramdisk

# mdconfig -a -t swap -s 4096M -u 0
# newfs /dev/md0
# mkdir /mnt/memdisk;mount /dev/md0 /mnt/memdisk

make buildworld

# time make -j5 buildworld

make kernel

# time make -j5 kernel KERNCONF=NETSEC-SVN

結果前者時間為 16:39.48,後者時間為 6:39.80。

補充說明:
後來又以同樣的 source tree 在一般硬碟測試
發現 buildworld 及 kernel 的 make 時間都比 ramdisk 少。
因為有把 /usr/src 及 /usr/obj 砍掉,所以不考慮 cache 的影響。
個人推測可能是 make -j5 時,對 ramdisk 的 concurrent access 就有五個
故多少增加了 CPU utilization,導致 ramdisk 上編譯比一般硬碟來的慢。

以下有圖有真相
make buildworld in ramdisk

▲make buildworld in ramdisk

time consumption of make buildworld

▲time consumption of make buildworld

make kernel in ramdisk

▲time consumption of make kernel

在〈FreeBSD 7.2 make world 測速〉中有 3 則留言

  1. 如果用 tmpfs 的情況呢?

    btw, 加上 -s (Do not echo any commands as they are executed.) 的話, 也可以節省一些花在 IO 的時間。

  2. 不錯的建議,今天晚上就來試試看 tmpfs。
    關於 make -j 的參數設定,有沒有 optimization guide?

    我通常習慣設為 CPU+1,理由是一個 make buildworld 指令若能利用所有 CPU,會再 fork 出與 CPU 等量的 child process。

    不過 jnlin 習慣 CPU*2,這樣明顯會讓 CPU 更接近滿檔;但我認為缺點是 concurrent I/O 可能會更凸顯傳統硬碟的 random access 效能不彰。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *