загрузка CPU пустого цикла.

ddr2
Offline
Зарегистрирован: 27.12.2020

Скажите вызовет ли пустой цикл в ардуине подобие CPU overhead 100% ? как бывает на ПК ?

andycat
andycat аватар
Онлайн
Зарегистрирован: 07.09.2017

CPU может растягиваться как воздушный шарик и загружаться более 100 % ?

ddr2
Offline
Зарегистрирован: 27.12.2020

всё понял, ардуина всегда потребляет 100% cpu, поэтому while(1) {} уместно, но будет кушать энергию в штатном режиме. :)

andycat
andycat аватар
Онлайн
Зарегистрирован: 07.09.2017

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ddr2 пишет:

всё понял, ардуина всегда потребляет 100% cpu

Неправильно понял. Она может спать с практически полностью выключенным процессором.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Нету idle - нету и метрики. Вот пример, где "утилизация cpu" составляет 50%:

https://github.com/chrishonson/Arduino_CPU_Usage/blob/master/Arduino_CPU...

ddr2
Offline
Зарегистрирован: 27.12.2020

ЕвгенийП пишет:

ddr2 пишет:

всё понял, ардуина всегда потребляет 100% cpu

Неправильно понял. Она может спать с практически полностью выключенным процессором.

имелось ввиду без установки режимов сна.

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ddr2 пишет:

Скажите вызовет ли пустой цикл в ардуине подобие CPU overhead 100% ? как бывает на ПК ?

ddr2 пишет:

имелось ввиду без установки режимов сна.

А Вы представляете, как именно вычисляется этот самый процент на ПК?

 
ddr2
Offline
Зарегистрирован: 27.12.2020

andriano пишет:

ddr2 пишет:

Скажите вызовет ли пустой цикл в ардуине подобие CPU overhead 100% ? как бывает на ПК ?

ddr2 пишет:

имелось ввиду без установки режимов сна.

А Вы представляете, как именно вычисляется этот самый процент на ПК?

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ddr2 пишет:

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

Давайте еще раз: "процент" - это отношение чего-то к чему-то. В знаменателе - понятно, общее астрономическое время, а что именно в числителе?

ddr2
Offline
Зарегистрирован: 27.12.2020
negavoid2 пишет:
 
Нету idle - нету и метрики. Вот пример, где "утилизация cpu" составляет 50%:
 
 

andriano пишет:

ddr2 пишет:

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

Давайте еще раз: "процент" - это отношение чего-то к чему-то. В знаменателе - понятно, общее астрономическое время, а что именно в числителе?

Я примерно написал, более точно алгоритм расчёта можно посмотреть по ссылке ;-) 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ddr2 пишет:

Я примерно написал, более точно алгоритм расчёта можно посмотреть по ссылке ;-) 

Алгоритм расчета чего?

В ПК процент использования ЦПУ - это отношение доли времени, в течение которого ЦПУ находится не в состоянии сна, ко всему времени. Т.е., как Вы хотите, "без сна" - всегда будет 100%. О чем Петрович Вам совершенно справедливо и написал.

А что именно считается по ссылке выше, и почему автор называл это "CPU_usage", мне, честно говоря, разбираться лень. Есть общие принципы определения тех или иных параметров. CPU usage, в частности. И если некто процессор не усыпляет, но при этом заявляет о CPU usage менее 100%, на мой взгляд, это заявление не заслуживает внимания.

ddr2
Offline
Зарегистрирован: 27.12.2020

andriano,

Ещё неплохо здесь расписано. 

https://en.wikipedia.org/wiki/CPU_time

ddr2
Offline
Зарегистрирован: 27.12.2020

andriano пишет:

В ПК процент использования ЦПУ - это отношение доли времени, в течение которого ЦПУ находится не в состоянии сна, ко всему времени. 

А что именно считается по ссылке выше, и почему автор называл это "CPU_usage", мне, честно говоря, разбираться лень. Есть общие принципы определения тех или иных параметров. CPU usage, в частности. И если некто процессор не усыпляет, но при этом заявляет о CPU usage менее 100%, на мой взгляд, это заявление не заслуживает внимания. 

Да, всё верно. Могу лишь снова предположить, что сравнивается время (???), в режиме 100% загрузки (например программа вошла в бесконечный цикл while(1){} в 1-процессорном варианте), а за ноль принимается время (???)  без нагрузки(в режиме сна). И далее по этим двум значениям расчитывается загрузка CPU. Хотя как на практике расчитывается не знаю. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ddr2 пишет:

andriano,

Ещё неплохо здесь расписано. 

https://en.wikipedia.org/wiki/CPU_time

Лично мне не понравилось - много воды, а как раз тот факт, что отличная от 100% загрузка CPU будет лишь при остановке процессора, как-то выпал из рассмотрения.

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