Точный способ измерения издержек в пространстве ядра - PullRequest
4 голосов
/ 21 декабря 2011

Недавно я внедрил механизм безопасности для Linux, который подключается к системным вызовам.Теперь я должен измерить накладные расходы, вызванные этим.Проект требует сравнить время выполнения типичных приложений Linux с и без механизма.Под типичными приложениями для Linux я полагаю, ex.gzipping 1G файл, делает 'find /', grepping файлы.Основная цель - показать издержки в различных типах задач: привязка к процессору, привязка ввода / вывода и т. Д.

Вопрос: как организовать тест, чтобы он был надежным?Первым важным моментом является тот факт, что мой механизм работает только в пространстве ядра, поэтому важно сравнить systime.Я могу использовать для этого команду «время», но является ли это наиболее точным способом измерения системного времени?Другая идея - запускать эти приложения в виде длинных циклов, чтобы минимизировать количество ошибок.Тогда петли должны быть внутри или вне времени по команде?Если они снаружи, я получу много результатов - я должен выбрать минимальное, максимальное, среднее, среднее?

Спасибо за любые предложения.

1 Ответ

3 голосов
/ 22 декабря 2011

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

Причина этого заключается в том, что большинство приложений тратят гораздо больше времени и ресурсов в пространстве пользователя, чем в земле ядра (т. Е. Syscalls), поэтому накладные расходы внутри syscalls являются эффектом «второго порядка» и, вероятно, не имеют значения, поскольку много. Конечно, есть и возможные исключения.

Возможно, комплект тестов phoronix может быть уместным.

Вас может заинтересовать oprofile

См. Также этот ответ и этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...