2014-11-25 3 views
2

Мне нужно измерить задержку декодирования сообщения (от 3 до 5 секунд) приложения с низкой задержкой.Как измерить латентность приложения с низкой задержкой C++

Я использовал следующий метод,

1. Get time T1 
2. Decode Data 
3. Get time T2 
4. L1 = T2 -T1 
5. Store L1 in a array (size = 100000) 
6. Repeat same steps for 100000 times. 
7. Print array. 
8. Get the 99% and 95% presentile for the data set. 

Но я получил колебания между каждым испытанием. Может ли кто-нибудь объяснить причину этого? Не могли бы вы предложить альтернативный метод для этого.

Примечание: Применение плотно петли (приобретение 100% CPU) и привязку к CPU с помощью набора задач commad

+1

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

+0

Я использовал функцию gettimeofday, чтобы получить время – Janaka

+1

В linux я использую 'clock_gettime' с' clockid_t' 'CLOCK_PROCESS_CPUTIME_ID', так как, надеюсь, только измеряет время процессора, затрачиваемого на конкретный процесс. Я также убеждаюсь, что тест изменяет некоторую примитивную переменную, которую я затем печатаю после того, как таймер остановился, чтобы компилятор не смог оптимизировать тест. – Galik

ответ

0

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

Университет штата Северная Каролина имеет хороший ресурс по различным типам таймеров и профилографов, которые доступны, а также соответствующий случай для использования каждого и некоторых примеров на их веб-сайте HPC here.

В большинстве современных систем неизбежно возникнут флуктуации, некоторые настройки BIOS, связанные с гиперпотоками и частотным масштабированием, могут существенно повлиять на производительность определенных приложений, а также на энергопотребление и охлаждение/окружающую среду.

Рассмотрение распределения результатов как гистограммы и/или подгонки их к гауссову также поможет определить, насколько нормальным является распределение, и если флуктуации являются нормальным статистическим шумом или серьезными выбросами. Выполнение дополнительных тестов также было бы полезно.

Смежные вопросы