Допустим, у меня есть файлы .c и .cpp, которые запускают некоторый код для вычисления продолжительности какого-либо процесса;
В основном я получаю микросекунды между некоторыми методами и вычисляю, сколько секунд этот метод занимает. Но меня интересует, влияет ли какой-либо другой процесс (например, обновление чего-то позади) на эти микросекунды, и я хочу знать, как предотвратить другие процессы для выполнения этого вычисления.
Короче, пожалуйста, объясните мне, как предотвратить другие процессы, чтобы получить точную оценку моего вызова метода .c файла.
Можете ли вы помочь мне? Спасибо
Используйте выделенное ядро процессора для вашего процесса. Можно изолировать ядро ЦП от системных процессов, используя 2 основных метода:
isolcpus=[cpu_number]
в ядро Linux - читать дальше ... cpuset
- читать дальше ... Как корень, можно запустить приложения с более высоким приоритетом планирования путем устанавливания низкого значения правильности. Это может быть сделано с помощью nice
команда, как:
sudo nice -n -20 your_command
- 20 самый высокий приоритет, который можно отдать, 0 значение по умолчанию, 19 является самым низким. Посмотрите man nice
для большего количества информации.
Это заставит планировщик ЦП предпочесть Ваш процесс по другим, если и будут готовы работать и запрос процессорного времени. Это не препятствует тому, чтобы другие процессы работали, в то время как Ваш процесс не использует 100%-е процессорное время, которое Вы также не хотели бы так или иначе.
Обратите внимание однако, что это также выполнит Вашу команду как корень, и также что установка высокого приоритета к процессу, который использует все процессорное время, может сделать Вашу систему безразличной.
Кроме этого, как упомянуто в комментариях, для измерения времени выполнения команды, позволяют ему несколько раз работать при тех же условиях (равняйтесь входу и среде, так, чтобы в идеальном мире, процесс сделал бы 100% та же самая вещь), и займите самое короткое время, которое Вы получили как свое фактическое измерительное значение. Факторы окружающей среды могут замедлить Ваше приложение, но не действительно ускорить его, таким образом, самое быстрое выполнение является тем с наименьшим количеством влияния снаружи.
Необходимо не только принять использование ЦП во внимание, хотя, но особенно чтение с диска / производительность записи является также довольно важным фактором. Для точного и восстанавливаемого измерения Вы не должны выполнять очень твердые дисковые операции, но действовать в RAM только, читая Ваше приложение и данные оттуда и также выполняя любые записи только к RAM. Можно смонтировать псевдодиск, который действует как нормальная файловая система к, например. /mnt
(или где-либо еще) использование:
sudo mount -t tmpfs none /mnt