У меня есть процесс, который подает на аппаратное обеспечение (устройство передачи данных) определенный размер буфера. Что я могу ожидать от окон планировщика Windows, чтобы избежать переполнения буфера?
Мой буфер имеет размер 32 КБ и расходуется со скоростью ~ 800 КБ в секунду.
Если я заполняю его 16-байтовыми партиями, то это одна партия каждые 20 мс. Тем не менее, каков мой нижний предел для его заполнения. Если, скажем, я вызываю sleep (0) в цикле заполнения, каков мой разумный интервал планирования в худшем случае?
ОС = Windows XP SP3
Двухъядерный 2,2 ГГц
Обратите внимание, я делаю вызов API, чтобы проверить уровень заполнения буфера, и вызов API драйвера, чтобы передать ему данные. Я предполагаю, что это точки планирования, которые Windows может использовать в дополнение к режиму сна (0).
Я бы хотел (как процесс) играть хорошо и все же уложиться в срок в реальном времени. Устройство предназначено для этой задачи, но ему необходимо получить данные по сети и отправить их на устройство ввода-вывода.
Что можно ожидать от производительности планировщика?
Что еще нужно учитывать.