2009-02-27 108 views
13

問題:我有一個開發人員機器(讀取:快速,大量內存),但用戶有一臺用戶機器(讀取速度慢,內存不是很多)。是否有任何方法限制進程的CPU /內存?

我可以模擬使用招慢速網絡(http://www.fiddler2.com/fiddler2/) 我可以看看CPU是如何使用的一段時間內的使用處理資源管理器(http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)的步驟。

有什麼辦法可以限制進程可以擁有的CPU數量,或者進程爲了更有效地模擬用戶計算機而可以擁有的內存量? (爲了隔離性能問題,例如)

我想我可以使用虛擬機,但我正在尋找一些更輕的東西。

我使用Windows XP,但任何Windows機器的解決方案都會受到歡迎。謝謝。

+0

+1是的,我想知道這一點。 – 2009-02-27 06:49:31

回答

5

常來與壓力測試工具這樣做只是這回在過去的好時光(STRESS.EXECPUSTRESS.EXE在SDK)平臺SDK,但他們可能依然存在(請檢查您的平臺SDK和/或Visual Studio安裝的這兩個文件 - 不幸的是我有我打字的機器上安裝niether的PSDK也不VS)

其他工具:

  • 內存:性能&可靠性(例如處理失敗的內存分配。 ):可以使用EatMem
  • CPU:性能&可靠性(例如,競爭條件):可以使用CPU Burn,Prime95
  • 句柄(GDI,用戶):可靠性(例如處理失敗的GDI資源分配):可能需要編寫自己的,但用完GDI手柄(buggy GTK應用程序通常會將它們全部吃掉,直到系統上的所有其他應用程序開始像蒼蠅一樣死亡)對任何Windows應用程序都是真正的測試
  • disk:性能&可靠性(例如處理磁盤滿):DiskFiller

另見this existing thread

+0

我試過CPU燒傷,它似乎很好。雖然它有點像大錘。雖然我沒有嘗試過eatmem。標記爲接受的答案。 – 2009-03-06 09:16:27

1

您可以運行MemAlloc來嚼碎RAM,可能會一次拷貝幾份。

1

我發現了一個相關的問題:

Set Windows process (or user) memory limit

的提問接受的答案有一個鏈接到Windows API的SetProcessWorkingSetSize,所以它不完全是一個工具,它可以限制的內存量的過程可以使用。

就改變進程可以使用的CPU資源量而言,如果您不介意每個內核資源限制的粒度,則任務管理器可以更改進程的處理器親緣關係。

在任務管理器中,右鍵單擊某個進程並選擇「設置相似性...」,然後選擇該進程可分配給的處理器核。

如果開發機器有很多內核,但用戶機器只有一個,那麼,而不是允許進程在所有可用內核上運行,請將進程的處理器親緣關係設置爲只有一個內核。

3

AppVerifier具有低資源仿真功能。

您也可以嘗試將您的流程的優先級設置得非常低。

0

它有什麼用SetProcessWorkingSetSize

只需使用內部的Win32內核API來限制CPU使用率

+0

apis提供了限制CPU使用的選項嗎? – 2013-12-11 19:46:25

相關問題