Есть ли способ удушения процессора / памяти процесса? - PullRequest
13 голосов
/ 27 февраля 2009

Проблема: у меня есть машина разработчика (читай: быстро, много памяти), но у пользователя есть машина пользователя (читай: медленно, не очень много памяти).

Я могу смоделировать медленную сеть, используя Fiddler (http://www.fiddler2.com/fiddler2/) Я могу посмотреть, как процессор используется в течение времени для процесса с помощью Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).

Можно ли каким-либо образом ограничить количество процессорного времени, которое может иметь процесс, или объем памяти, который может иметь процесс, для более эффективного моделирования компьютера пользователя? (Например, для выявления проблем с производительностью)

Полагаю, я мог бы использовать виртуальную машину, но я ищу что-то более легкое.

Я использую Windows XP, но решение для любой машины Windows приветствуется. Спасибо.

Ответы [ 5 ]

5 голосов
/ 27 февраля 2009

В SDK платформы раньше были инструменты для стресса, которые делали это в старые добрые времена (STRESS.EXE, CPUSTRESS.EXE в SDK), но они все еще могут быть (проверьте SDK вашей платформы и / или Visual Студийная установка для этих двух файлов - к сожалению, я не установил ни PSDK, ни VS на машину, с которой я печатаю.)

Другие инструменты:

  • память : производительность и надежность (например, обработка неудачного выделения памяти): можно использовать EatMem
  • CPU : производительность и надежность (например, условия гонки): можно использовать CPU Burn , Prime95 и т. Д.
  • дескрипторы (GDI, пользователь): надежность (например, обработка неудачного выделения ресурсов GDI): ??? возможно, придется написать свой собственный, но нехватка дескрипторов GDI (глючные GTK-приложения обычно уничтожают их все до тех пор, пока все другие приложения в системе не замирают, как мухи) - настоящий тест для любого приложения Windows
  • диск : производительность и надежность (например, обработка диска заполнена): DiskFiller и т. Д.

Также см. эту существующую тему .

3 голосов
/ 27 февраля 2009

AppVerifier имеет функцию симуляции низкого ресурса.

Вы также можете попытаться установить приоритет вашего процесса очень низким.

1 голос
/ 27 февраля 2009

Я нашел связанный вопрос:

Установить ограничение памяти процесса Windows (или пользователя)

Принятый ответ на вопрос содержит ссылку на Windows API SetProcessWorkingSetSize, так что это не совсем инструмент, который может ограничивать объем памяти, который может использовать процесс.

С точки зрения изменения количества ресурсов ЦП, которые может использовать процесс, если вы не возражаете против гранулярности ограничения ресурсов на ядро, диспетчер задач может изменить привязку процессора к процессу.

В диспетчере задач щелкните правой кнопкой мыши процесс и выберите «Установить сходство ...», затем выберите ядра процессора, которым процесс может быть назначен.

Если машина разработки имеет много ядер, но пользовательская машина имеет только одно, то вместо того, чтобы запускать процесс на всех доступных ядрах, установите привязку процессора к одному ядру.

1 голос
/ 27 февраля 2009

Вы можете запустить MemAlloc для проверки оперативной памяти, возможно, нескольких копий одновременно.

0 голосов
/ 27 февраля 2009

Это не имеет ничего общего с SetProcessWorkingSetSize

Просто используйте внутренний API ядра Win32 для ограничения использования процессора

...