Использование команды Sleep в Linux

В рамках моего академического проекта я должен выполнить программу на C.

Я хочу получить время выполнения программы. Для этого я должен приостановить все остальные процессы в Linux на несколько секунд. Есть ли способ сделать это?

(Я пытался использовать команду time в Linux, но она не работает должным образом: она показывает разное время выполнения, когда я запускаю одну и ту же программу. Поэтому я вычисляю время выполнения, видя разницу между временем начала и временем окончания).


person Anu    schedule 25.07.2012    source источник
comment
Даже если вы неоднократно запускаете один и тот же код без каких-либо других запущенных процессов, вы все равно найдете разные среды выполнения - это нормально. Например, первый запуск может разогреть кеш (ЦП, диск) и ускорить второй запуск.   -  person FatalError    schedule 25.07.2012


Ответы (6)


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

# init 1

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

Если вы хотите вернуть свою полную систему, init 3, вероятно, тот, тот или init 5.

person jthill    schedule 25.07.2012

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

person Andrew Aylett    schedule 25.07.2012

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

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

Есть книга, которую вы можете найти в формате PDF в Google, «Компьютерные системы: взгляд программиста». В этой книге целая глава посвящена измерениям времени.

person alinsoar    schedule 25.07.2012

Используйте команду времени. Сумма user + sys даст вам время, когда ваша программа напрямую использовала ЦП, плюс время, когда система использовала ЦП от имени вашей программы. Я думаю, это то, что вы хотите знать.

person Fábio Roberto Teodoro    schedule 25.07.2012

Всегда будет разница во времени выполнения для вещей, независимо от того, сколько процессов вы закроете, опрос, ввод-вывод, фоновые демоны — все это влияет на приоритет выполнения.

Академический подход состоял бы в том, чтобы запустить значительную выборку и собрать статистику, вы также можете взглянуть на sar для регистрации фона. Чтобы аннулировать любые показания, которые вы можете взять

person Choon Keat    schedule 25.07.2012

Попробуйте запустить приложение с помощью nice -n 20. Это может помочь сделать другие процессы тише.

хорошая справочная страница

person eyalm    schedule 25.07.2012