2010-11-19 25 views
9

我想要一個軟件環境,在該環境中,我可以使用特定資源在硬件上測試軟件的速度。例如,當我的主機硬件是帶12GB內存的3GHz四核amd64時,該程序在帶有24 Mb RAM的800MHz x86上運行速度有多快?像qemu這樣的模擬器與底層硬件運行速度「幾乎一樣快」;我想讓它運行得更慢。有沒有辦法做到這一點?模擬處理器(有限)資源,包括時鐘速度

+0

我不知道關於處理器的速度,但是你絕對可以使用像VirtualBox,Parallels Desktop等虛擬機來控制RAM。 – 2010-11-19 00:30:30

+0

是的,我認爲內存不是問題;問題是速度和其他資源。我在包容性方面有所包容,因爲我希望它在每個方面都像實際的硬件一樣。我有點希望有一個現成的解決方案,但顯然沒有,所以我會一塊一塊地把它。 – Liam 2010-11-19 15:45:23

回答

0

在您的仿真器中,保持一個虛擬的「時鐘」並在執行每條指令時對其進行適當的遞增。從那裏你可以簡單地報告在虛擬時間內執行需要多長時間,或者你可以讓仿真器一次又一次地休眠,以保持執行速度大致在目標位置。

+0

這聽起來很難。我不確定這是否會在主機或客戶操作系統中實現,但我認爲我沒有這方面的技能。 – Liam 2010-11-19 15:43:06

+0

@Liam:另外,你不會對它的速度有多慢有什麼「感覺」,如果你正在評估桌面應用程序或其他交互式軟件。多媒體應用程序也很難測試。 – thkala 2010-11-19 18:29:55

2

我從來沒有嘗試過,但也許你可以通過在Linux上使用這樣的組合像QEMU或VirtualBox虛擬仿真器實現你想要在一定程度上是什麼:

http://cpulimit.sourceforge.net/

如果你可以限制CPU時間可用於模擬器,您可能能夠在較慢的計算機上模擬執行結果。但請記住,這隻會影響執行速度(或者我希望,無論如何)。

CPU指令集和其他系統功能將保持不變。這意味着如果不是不可能的話,準確地模擬一個處理器將是困難的。

此外,使用類似請將CPULimit,使用SIGSTOP和SIGCONT反覆停止其工作/重新啓動仿真過程中可能導致的副作用,如時間不一致,視頻顯示等文物

+0

這很有趣;我不知道cpulimit。雖然它不是一個完整的解決方案,但它是我所需要的最重要的「缺失部分」,因爲我認爲內存限制已經可以在大多數仿真器中設置。我意識到我實際上不會效仿其他處理器(除非qemu專門模擬某個x86系列的特定成員),但這可能足夠滿足我的目的。 – Liam 2010-11-19 15:40:13

+0

* cpulimit *效果很好。確定guest OS仍然打印物理cpu速度,但可用速度由cpulimit設置。例如'cpulimit -l 5 -s qemu-system-i386 -cpu pentium -m 32 '確實模擬Pentium 166MHz。謝謝@thkala。 – tuk0z 2016-05-16 19:55:36