разработать тестовую программу: увеличить / уменьшить использование процессора - PullRequest
0 голосов
/ 10 июля 2011

Я пытаюсь спроектировать, а затем написать Java-программу, которая может увеличить / уменьшить загрузку процессора. Вот моя основная идея: написать многопоточную программу. И каждый поток выполняет вычисление с плавающей точкой. Увеличение / уменьшение использования процессора за счет добавления / уменьшения потоков.

Я не уверен, какие операции с плавающей запятой лучше всего подходят в этом тестовом примере. Особенно я собираюсь протестировать виртуальную машину VMWare.

Ответы [ 2 ]

0 голосов
/ 10 июля 2011

Простые циклы занятости увеличат нагрузку на процессор - я не знаю, изменит ли это вычисление FP это существенно или иным образом сможет достичь более согласованного коэффициента загрузки, даже если он использует FPU, а не только ALU .

В то время как создавал подобное подтверждение концепции в C # Я использовал фиксированное число потоков и изменял продолжительность сна / слова каждого потока. Имейте в виду, что этот процесс не является точным и зависит от удушения процессора и процесса, а также от других факторов современных упреждающих операционных систем. Добавление VMware к миксу может также усугубить наблюдаемое поведение. В вырожденных случаях могут возникнуть гармоники между кодом, предназначенным для регулировки нагрузки, и нагрузкой, сообщаемой системой.

Если бы использовались конструкции более низкого уровня (обычно требующие доступа к «режиму ядра»), то мог бы быть реализован более согласованный дроссель - частично из-за способности избегать определенных вытеснений [thread]: -)

Другая подходящая альтернатива с соответствующим оборудованием - это , устанавливающая тактовую частоту процессора и затем работающую на 100%. Нынешняя линейка чипов Intel Core-i очень гибкая (множитель ЦП можно устанавливать незаметно для всего диапазона), хотя доступ из Java может быть проблематичным. Конечно, это будет сделано на хосте, а не на VMware.

Удачного кодирования.

0 голосов
/ 10 июля 2011

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

1/1 + 1/2 + 1/3 + 1/4 + 1/5 ...

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

...