Какое минимальное гарантированное время для процесса в Windows? - PullRequest
2 голосов
/ 24 августа 2010

У меня есть процесс, который подает на аппаратное обеспечение (устройство передачи данных) определенный размер буфера. Что я могу ожидать от окон планировщика Windows, чтобы избежать переполнения буфера?

Мой буфер имеет размер 32 КБ и расходуется со скоростью ~ 800 КБ в секунду.

Если я заполняю его 16-байтовыми партиями, то это одна партия каждые 20 мс. Тем не менее, каков мой нижний предел для его заполнения. Если, скажем, я вызываю sleep (0) в цикле заполнения, каков мой разумный интервал планирования в худшем случае?

ОС = Windows XP SP3 Двухъядерный 2,2 ГГц

Обратите внимание, я делаю вызов API, чтобы проверить уровень заполнения буфера, и вызов API драйвера, чтобы передать ему данные. Я предполагаю, что это точки планирования, которые Windows может использовать в дополнение к режиму сна (0).

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

Что можно ожидать от производительности планировщика? Что еще нужно учитывать.

Ответы [ 2 ]

3 голосов
/ 24 августа 2010

Нет гарантированного наихудшего случая. Потеря процессора на сотни миллисекунд вполне возможна. Вы подчиняетесь тому, что делают потоки ядра, они всегда будут работать с более высоким приоритетом, чем вы когда-либо можете получить. Вы столкнетесь с неправильной работой сетевого адаптера, USB или аудио драйвера, с которым вы будете постоянно бороться. Если вы не можете управлять оборудованием.

Если вы можете пережить случайные неполадки, убедитесь, что запрос ввода-вывода, который вы используете для получения данных устройства, является ожидаемым событием. Windows любит планировать потоки, которые блокируют запрос ввода-вывода, выполненный раньше всех остальных. Опрос с помощью Sleep () не является хорошей стратегией. Он сжигает циклы ЦП без необходимости, и планировщик не будет поддерживать поток вообще.

Если вы не можете пережить недоделки, вам нужно рассмотреть драйвер устройства.

3 голосов
/ 24 августа 2010

Какое минимальное гарантированное время для процесса в Windows?

Нет гарантии: Windows не O / S в реальном времени.

Что еще мне нужно учитывать

  • Что еще работает на машине (что-то с высоким приоритетом может помешать вам)
  • Сколько у вас оперативной памяти (производительность системы сильно меняется при нехватке оперативной памяти)
  • Независимо от того, используете ли вы ввод-вывод (потому что вы, например, можете остановиться в ожидании доступа к диску или сети)

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

Подумайте об установке приоритета вашего процесса и / или потока на «приоритет в реальном времени»..

...