Назад | Перейти на главную страницу

Ядро Linux 1000 Гц необходимо, если у меня есть таймер с высоким разрешением и без тиков?

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

У меня средняя нагрузка на i7-920 составляет максимум 4 (4 физических ядра, 8 с HT). Существует около 10 процессов в диапазоне от 40% до 90% основного пользовательского режима. Общая загрузка системы составляет 3%. Общая загрузка ЦП не более 80%.

Будет ли установка ядра от 100 Гц до 1000 Гц улучшать джиттер, если уже установлены таймеры без тиков и с высоким разрешением?

Эта страница, кажется, указывает на то, что она все еще что-то делает. https://lkml.org/lkml/2009/4/28/401

Как насчет перехода с добровольного (PREEMPT_VOLUNTARY) на вытесняемый (PREEMPT)?

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

Любой режим реального времени не улучшит производительность, это сделает работу всей системы более плавной, но на самом деле немного медленнее. Другими словами, это пропускная способность против задержки. Если это действительно то, что вам нужно, то вариантов несколько:

  • Используйте 300 Гц или даже 1 кГц, PREEMPT и не используйте без тиков
  • Использовать nice, schedtool назначить правильные приоритеты / классы в соответствии с вашими потребностями
  • Попробуйте RT или BFS

Если для вас важен низкий джиттер, да, вы можете использовать как 1000 Гц, так и PREEMPT.

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

Типичное использование - аудиосерверы, см., Например, совет от jackaudio

1) Не используйте Tickless, это все еще очень экспериментально и не рекомендуется никому, кроме разработчиков, работающих над ним, оно также предназначено для экономии энергии.

2) Предполагается, что полностью вытесняемая система увеличивает скорость отклика настольного компьютера, в то время как добровольная вытесняемая система предназначена для общего использования (сочетание скорости отклика и минимальной производительности). Если ваш сервер имеет SMP (несколько ядер), вам, вероятно, следует выбрать вариант без вытеснения, так как большая часть работы будет выполняться на их ядрах и без прерываний, что обычно 1) занимает время 2) кэш мусора

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

Если вы хотите работать максимально стабильно (без использования патчей RT), вам следует пойти: периодические тики (стабильность) невытесняемые (стабильность) частота таймера (на ваше усмотрение, 1000 для лучшей отзывчивости и низкой задержки, 100 для лучшая пропускная способность, но разрешение по таймеру 10 мс, например, материал будет работать не менее 10 мс)

Надеюсь, это поможет.