簡體   English   中英

有沒有辦法限制進程的CPU /內存?

[英]Is there any way of throttling CPU/Memory of a process?

問題:我有一台開發者機器(讀取:快速,大量內存),但用戶有一台用戶機器(讀取:慢,內存不多)。

我可以使用Fiddler模​​擬一個慢速網絡( http://www.fiddler2.com/fiddler2/ )我可以看一下使用Process Explorer的流程如何使用CPU( http://technet.microsoft.com/en) -us / sysinternals / bb896653.aspx )。

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

我想我可以使用VM,但我正在尋找更輕松的東西。

我正在使用Windows XP,但歡迎任何Windows機器的解決方案。 謝謝。

平台SDK過去常常帶有壓力工具,可以在過去的日子里做到這一點(SDK中的STRESS.EXECPUSTRESS.EXE ),但它們可能仍然存在(請檢查您的平台SDK和/或Visual Studio安裝這兩個文件 - 遺憾的是我已經在我正在打字的機器上安裝了PSDK和VS.)

其他工具:

  • 內存 :性能和可靠性(例如處理失敗的內存分配):可以使用EatMem
  • CPU :性能和可靠性(例如競爭條件):可以使用CPU BurnPrime95
  • 句柄 (GDI,User):可靠性(例如處理失敗的GDI資源分配):??? 可能必須編寫自己的,但用完GDI句柄(有缺陷的GTK應用程序通常會把它們全部吃掉,直到系統上的所有其他應用程序像蒼蠅一樣開始死機)是對任何Windows應用程序的真正測試
  • 磁盤 :性能和可靠性(例如處理磁盤已滿): DiskFiller

AppVerifier具有低資源模擬功能。

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

您可以運行MemAlloc來咀嚼RAM,可能會一次打印幾份

我找到了一個相關的問題:

設置Windows進程(或用戶)內存限制

該問題的接受答案有一個指向Windows API的SetProcessWorkingSetSize的鏈接,因此它不是一個可以限制進程可以使用的內存量的工具。

在更改進程可以使用的CPU資源量方面,如果您不介意每個核心限制資源的粒度,任務管理器可以更改進程的處理器關聯。

在任務管理器中,右鍵單擊某個進程並選擇“設置關聯...”,然后選擇可以為其分配進程的處理器核心。

如果開發計算機具有多個核心但用戶計算機只有一個核心,那么,不是允許進程在所有可用核心上運行,而是將進程的處理器關聯性設置為僅一個核心。

它與SetProcessWorkingSetSize無關

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM