Синхронизация PTP на сервере Windows (по сравнению с Linux) - какая точность может быть гарантирована

Я хотел бы знать, если все знают, как точноPTP синхронизация может быть гарантирована на Windows Server 2008.

Я знаю об этой теме:Какое минимальное гарантированное время для процесса в Windows? который обсуждает родное время Windows и да, это не дает никаких гарантий вообще.

Но что, когда дело доходит до аппаратных решений (PTP)? Существуют ли какие-либо ограничения, препятствующие гарантии <1 мс? Я знаю, что процессы, зависящие от времени, будут конкурировать за процессорное время, но если у процесса есть ЦП при необходимости, есть ли что-нибудь еще, что может помешать?

РЕДАКТИРОВАТЬ 1: я добавил «(по сравнению с Linux)» к названию, так как это было одной из моих проблем.

Ответы на вопрос(1)

Решение Вопроса

и обработки в Windows Server 2008. Некоторые из них:

Избегать большой нагрузки на процессор.

Организовать для небольшого объема памяти кода.

Установитькласс приоритета процесса иприоритет потока высоко. Возможно, даже так высоко, какREALTIME_PRIORITY_CLASS а такжеTHREAD_PRIORITY_TIME_CRITICAL соответственно.

Установитьмаска сродства нити чтобы избежать критической части, работающей на времяCore 0, Ядро 0 предназначено для некоторых системных служб. Использование другого кода позволяет избежать зависимостей.

ИспользованиеSleep(0) когда уместно. Sleep (0) - это асинхронный сервис, который заставляет планировщик реагировать. Таким образом, вы можете запустить планировщик, который выберет ваш процесс / поток для немедленного получения CPU, поскольку он имеет высший приоритет.

Убедитесь, что код дает время и другим сервисам. Максимальный приоритет приведет к остановке всех остальных потоков. (никакие события мыши или что-либо еще не будут обработаны)

Возможно увеличение частоты прерывания системы с помощью API таймера mutimedia. ИспользоватьtimeGetDevCaps функция для запроса максимально допустимой частоты прерываний вашей системы и использованияtimeBeginPeriod с участиемwPeriodMin вернулсяtimeBeginPeriod вTIMECAPS структура. Это заставит вашу систему работать с максимальной частотой прерывания. Не забудьте освободить ресурс мультимедийного таймера при вызовеtimeEndPeriodкогда вы сделали.

Когда эти правила тщательно соблюдаются, можно получить точную синхронизацию в режиме 10 микросекунд с очень высокой надежностью. Однако сумма всего вышеперечисленного приводит к некоторой сложности. Поэтому гарантия никогда не может быть предоставлена. Но даже на RTOS-системах такой гарантии нет. Когда кодирование не выполняется должным образом, все работает не так, как должно, независимо от того, как / как называется ОС. Еще несколько заметок и ссылок на эквивалентные .Net сервисы можно найтиВот.

Принимая все это позволяет реализацию синхронизации времени (Протокол точного времени) до 10 микросекунд.

Precision Time Protocol разработчиков faq можно найтиВот.

Отредактируйте после того, как Linux попросили: Есть несколько доступных пакетов, напримерэто один. Типичные значения точности, о которых здесь сообщается, также находятся в диапазоне от 10 до 100 мкс.

Не удивительно, что результаты очень похожи для Windows и Linux при работе на сопоставимом стандартном оборудовании. Ни один из них не может творить магию.

 Arno30 окт. 2012 г., 16:16
Существуетrtirq-patch (патч прерывания в реальном времени что позволяет иметь более высокую частоту прерываний, чем 1 мс. Однако это зависит от того, есть ли аппаратная поддержка. Вы также можете прочитать«Поток времени», глава 6, в драйверах устройств Linux, 2-е издание Алессандро Рубини и Джонатана Корбета чтобы получить более подробное представление о времени Linux.
 Stephan Ryer30 окт. 2012 г., 15:11
Спасибо за очень подробное объяснение подходов к оптимизации!
 Stephan Ryer30 окт. 2012 г., 15:14
Из любопытства: какие из вышеперечисленных пунктов отличаются, если ОС была Linux? Я знаю (я слышал), что время имеет гораздо более высокий приоритет, и, следовательно, Linux намного лучше поддерживает системы реального времени. Но многие из приведенных выше оптимизаций касаются приложений, зависящих от времени и их приоритета ЦП и т. Д. Когда речь идет о самой синхронизации времени, с использованием PTP и отдельных аппаратных плат, будет ли Linux тогда работать лучше, чем Windows 2008?

Ваш ответ на вопрос