реклама на сайте
подробности

 
 
> Как определить загруженность процессора, при выполнении программы?
Pasha 111
сообщение Jul 21 2006, 08:01
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Есть программа, вот с такой функцией main:
void main()
{
Init();
while(1) ;
}

Вся остальная программа выполняется по срабатыванию прерываний от ножек процессора и таймера, работающего на частоте 500 Гц. Вопрос: как определить, например в процентах, какая часть процессорного времени уходит на выполнение кода, кроме while(1) в main'е.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Pasha 111
сообщение Jul 21 2006, 08:43
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Alechek, не думаю, что АЦП в этом случае правильно будет работать. Он или остановит весь проц, выдав 1023 или 0. Или, производя преобразования по мере включения/выключения ножки, выдаст полную лажу. Просто светодиод (т.е. глаз человека) и вольтметр - инертные приборы.

У меня есть такой вариант: отключить все прерывания, а в while(1) сделать счётчик, скажем, до 1 000 000. Посмотреть сколько времени (в тиках процессора например) выполняется миллион пустых итерация while(1) (ну и счётчика внутри).

При 100%-й загруженности проца другими функциями, функция main должна как бы "зависнуть", т.е. время выполнения = бесконечности. Т.е. время выполнения 1000000 тиков обратно пропорционально загруженности проца, но при 0-й загруженности уходит не в бесконечность, а в некоторую константу. Т.е. формула типа:
t = A / (100 - cpu_usage)
где (A / 100) - время выполнения 1000000 итераций незагруженного проца.

Как вам такой вариант? Мои рассуждения вообще логичны или нет? Или такой алгоритм не будет правильно работать?

Сообщение отредактировал Pasha 111 - Jul 21 2006, 08:47
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pasha 111   Как определить загруженность процессора   Jul 21 2006, 08:01
- - iit   Цитата(Pasha 111 @ Jul 21 2006, 11:01) Ес...   Jul 21 2006, 08:12
- - beer_warrior   Если длительность прерывания таймера вполне поддае...   Jul 21 2006, 08:18
- - KRS   Можно осцилографом, на глаз? если есть свобожная н...   Jul 21 2006, 08:28
- - Alechek   Цитата(Pasha 111 @ Jul 21 2006, 14:01) Во...   Jul 21 2006, 08:29
- - Pasha 111   iit, от симулятора не будет толка, потому что выпо...   Jul 21 2006, 08:30
|- - Alechek   Цитата(Pasha 111 @ Jul 21 2006, 14:30) а ...   Jul 21 2006, 08:33
|- - zltigo   Цитата(Pasha 111 @ Jul 21 2006, 11:30) а ...   Jul 21 2006, 08:57
- - Pasha 111   KRS, Alechek, а если без внешних приборов? Чтобы б...   Jul 21 2006, 08:33
|- - Alechek   Цитата(Pasha 111 @ Jul 21 2006, 14:33) KR...   Jul 21 2006, 08:35
|- - KRS   Цитата(Pasha 111 @ Jul 21 2006, 12:33) KR...   Jul 21 2006, 09:12
- - Pasha 111   zltigo, программа работает так: инициализируются п...   Jul 21 2006, 09:19
|- - klen   Предлагаю такую вариацию решения (если есть 1 своб...   Jul 21 2006, 14:54
|- - zltigo   Цитата(Pasha 111 @ Jul 21 2006, 12:19) и ...   Jul 21 2006, 17:01
- - Abo   Ой, не советовал бы я энкодеры на прерывания вешат...   Jul 21 2006, 16:25


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016