точность rdtsc через ядра процессора

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

Весь measurments выглядит надежным. Однако, я волнуюсь по поводу rdtsc точности через ядра, так как я читал некоторые тексты, которые подразумевали, что tsc не синхронизируется между ядрами.

Я нашел следующую информацию о TSC в Википедии

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

Тем не менее я волнуюсь по поводу accruracy через ядра, и это - мой вопрос

Подробнее

  • Я выполняю свой процесс на Intel nehalem машина.
  • Операционной системой является Linux.
  • "constant_tsc" флаг CPU установлен для всех ядер.

31
задан avner 15 August 2010 в 06:10
поделиться

2 ответа

Я рекомендую вам не использовать rdtsc. Он не только не портативен, но и не надежен, и вообще не работает - на некоторых системах rdtsc обновляется неравномерно (например, если вы используете speedstep и т.д.). Если вы хотите получить точную информацию о времени, вам следует установить опцию SO_TIMESTAMP на сокете и использовать функцию recvmsg() для получения сообщения с временной меткой (с микросекундным разрешением).

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

0
ответ дан 27 November 2019 в 22:41
поделиться

В Linux вы можете использовать clock_gettime (3) с CLOCK_MONOTONIC_RAW, что дает вам разрешение в наносекундах и не зависит от ntp. обновления (если они были).

2
ответ дан 27 November 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: