前一段時間,我問了一個有關Solaris 10中SPARC硬件系統調用成本的問題。在過去的幾個月裏,這個問題已經重演了幾次,而這正是我發現的。Solaris vs Linux中的系統調用開銷
如果我們進行一個綜合測試,其中一個300MB的文件以256字節的塊的形式從磁盤讀取,那麼在Solaris 10中它將花費相當長的時間,然後在Linux中執行。該測試是在以下方式進行:
dd if=test.dat of=/dev/null bs=256
即使test.dat
存儲在內存映射文件系統上像/tmp
,Linux的大幅度優於Solaris操作系統。在Solaris中,在用戶空間和內核空間之間來回切換的開銷似乎比在Linux中高得多,即使兩者都在相同的硬件上運行。
我有兩個問題:
- 它是某種的Solaris在Linux上知道的劣勢?
- 假設我無法從256增加I/O塊的大小,是否有辦法調整Solaris以匹配Linux編號?
謝謝!
這裏有很多未指定的變量。這是在可比較的硬件?相同的磁盤?相同的文件系統?如果您想回答有關係統調用開銷的問題,則應該使用不執行其他工作的不同系統調用。 – alberge 2012-04-02 04:40:26
@alberge我能得到的最好的「可比較的硬件」是在Windows7主機上運行的VirtualBox機器的兩個實例。我知道這個設置可能是片狀的,但是在一系列實驗中,數字仍然在合理的分散範圍內。在使用「/ tmp」的測試中,兩個文件系統都是相同的 - tmpfs。我還分別通過指定ibs和obs來增強測試,並保持obs爲8192. – evolvah 2012-04-03 15:30:34
文件系統只有「相同」,因爲它們具有相同的名稱。Linux和Solaris之間的tmpfs實現沒有共同之處。嘗試找到可以衡量系統調用開銷的東西,而不是您目前使用的複雜組合。您還應該說明兩個系統的規格,並找出測試過程中遇到的瓶頸。 – jlliagre 2012-04-04 05:04:55