наноспать высокое использование CPU?

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

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

, Если Ваше программное обеспечение единогласно объектно-ориентировано, необходимо быть в состоянии добавить поблочное тестирование на уровне класса без слишком большого усилия. Если Вам настолько не повезло, необходимо все еще попытаться включить поблочное тестирование везде, где Вы можете. Удостоверьтесь, когда Вы добавляете новую функциональность, новые части четко определены с ясными интерфейсами, и Вы найдете, что поблочное тестирование делает Вашу жизнь намного легче.

5
задан Robert Munteanu 14 July 2009 в 14:30
поделиться

2 ответа

I don't have a definitive answer... but the first thing I would look at is the config options with which the kernel was compiled:

cat /boot/config-`uname -r`

Options that I think might be relevant are CONFIG_HZ, CONFIG_HPET_TIMER and CONFIG_HIGH_RES_TIMERS. Maybe those differ among your kernels... that might help you narrow it down.

It used to be on 2.4 kernels that nanosleep would busy-wait for waits of under 2 ms if running under real-time scheduler policies (SCHED_FIFO or SCHED_RR, see the nanosleep man page), but since all of the kernels are 2.6, that doesn't seem to be a factor.

3
ответ дан 18 December 2019 в 07:10
поделиться

Это связано с введением NO_HZ в основной планировщик.

Раньше ваш сон в 1000 нс обычно спал в течение всего тика - 1 000 000 нс. Теперь, когда машина простаивает, она фактически спит только для того, о чем вы просили. Таким образом, цикл while () и системные вызовы выполняются примерно в 1000 раз чаще - следовательно, загрузка ЦП намного выше. Если вы увеличите tv_nsec, вы увидите уменьшение загрузки ЦП.

19
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: