2009-04-21 4 views
2

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

Моя первая попытка создать Баш скрипт ... который выглядел примерно так:

for i in `ls /proc/ | egrep [0-9]+` 
do 
     cat /proc/$i/status | grep State 
done 

, но тогда все проблемы сообщают о состоянии сна. Плюс этот метод потребует от меня опроса как сумасшедшего ... Поэтому запуск теста, вероятно, изменит результаты ... (ugh)

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

ответ

1

Вы можете использовать «время»

$ time ls /usr/bin 

real 0m4.756s 
user 0m0.051s 
sys  0m0.078s 

реально - SYS = общее время ждали ввода/вывода (спящего/блокировки)

SYS - пользователя = время, затраченное на системные вызовы

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