чтобы целенаправленно иметь высокую загрузку процессора? - PullRequest
1 голос
/ 06 марта 2011

Я делаю программу, которая управляет другими процессами (насколько остановлены и запущены состояния).Одним из критериев является то, что нагрузка на компьютер находится под определенным значением.

Поэтому мне нужна функция или небольшая программа, которая приведет к очень высокой нагрузке для целей тестирования.Вы можете думать о чем-нибудь?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 06 марта 2011

Я могу думать об этом:

for(;;);
3 голосов
/ 06 марта 2011

Если вы хотите на самом деле генерировать пиковую нагрузку на ЦП, вы, как правило, хотите, чтобы задача скромного размера (чтобы рабочий набор полностью помещался в кеше) была тривиально распараллеливаемой, чтобы кто-то вручную оптимизировал использование векторного модуля процессор. Распространенными являются такие вещи, как БПФ, умножение матриц и базовые операции над математическими векторами.

Они почти всегда генерируют гораздо более высокую мощность и вычислительную нагрузку, чем теоретико-числовые задачи, такие как тестирование простоты, потому что они по существу не содержат ветвей (кроме петель) и чрезвычайно однородны, поэтому их можно использовать для полного использования. вычислять пропускную способность машины практически все время.

Точная функция, которая должна использоваться для генерации истинной максимальной нагрузки, довольно сильно зависит от точных деталей микроархитектуры процессора (разные машины имеют разную пропускную способность загрузки / хранения пропорционально количеству и ширине умножения и добавления функциональные единицы), но числовые библиотеки программного обеспечения (и библиотеки обработки сигналов) - отличные вещи для начала. Посмотрите, есть ли какие-либо, которые были настроены вручную для вашей платформы.

2 голосов
/ 06 марта 2011

Если вам нужно контролировать, как долго будет расти процессор, вы можете использовать что-то вроде Сито Эратосфена (алгоритм для поиска простых чисел до определенного числа) и предоставить небольшое целое число (10000) длякороткие пакеты и большое целое число (100000000) для длинных пакетов.

Если вы примете во внимание ввод / вывод для загрузки, вы можете записать в файл для каждого теста в сите.

...