Есть ли способ регулирования процессора/памяти процесса?

StackOverflow https://stackoverflow.com/questions/593760

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

  • Память:производительность и надежность (например,обработка неудачного выделения памяти):можешь использовать EatMem
  • Процессор:производительность и надежность (например,условия гонки):можешь использовать Сжигание процессора, Прайм95, и т. д
  • ручки (GDI, Пользователь):надежность (напр.обработка неудачного выделения ресурсов GDI):???возможно, придется написать свой собственный, но нехватка дескрипторов GDI (приложения с ошибками GTK обычно съедают их все, пока все другие приложения в системе не начнут падать замертво, как мухи) - это настоящее испытание для любого приложения Windows
  • диск:производительность и надежность (например,обработка диска заполнен): ДискФиллер, и т. д.

Другие советы

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

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

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

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

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

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

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

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

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

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

Просто используйте внутренний API ядра Win32, чтобы ограничить использование ЦП.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top