
Я не могу найти никакой хорошей информации о rt
ядрах lowlatency
Linux.
Мне интересно, почему кто-тонетхотите использовать ядро с низкой задержкой.
Также было бы здорово, если бы кто-нибудь мог сказать, в чем конкретно заключаются различия.
решение1
Различные конфигурации, «generic», «lowlatency» (как настроено в Ubuntu) и RT («real-time»), все направлены на балансировку пропускной способности и задержки. Универсальные ядра отдают предпочтение пропускной способности по сравнению с задержкой, другие отдают предпочтение задержке по сравнению с пропускной способностью. Таким образом, пользователи, которым пропускная способность нужна больше, чем низкая задержка, не выберут ядро с низкой задержкой.
По сравнению с общей конфигурацией ядро с низкой задержкой изменяет следующие настройки:
- IRQ по умолчанию разделены на потоки, что означает, что больше IRQ (все еще невсеIRQ) могут быть вытеснены, а также им можно назначать приоритеты и контролировать их привязку к ЦП;
- приоритетное прерывание включено во всем ядре (
CONFIG_PREEMPT
вместоCONFIG_PREEMPT_VOLUNTARY
); - the отладка задержкивключены инструменты, позволяющие пользователю определить, какие операции ядра блокируют прогресс;
- частота таймера установлена на1000 Гцвместо250 Гц.
Ядра RT добавляютнесколько патчейв основное ядро и еще несколько настроек конфигурации. Цель большинства этих патчей — предоставить больше возможностей для упреждения, удаляя или разделяя блокировки, и сократить время, которое ядро тратит на обработку непрерываемых задач (в частности, улучшая механизмы журналирования и используя их меньше). Цель всего этого — позволить ядрусоблюдать сроки,то естьубедитесь, что при необходимости обработки чего-либо он не занят чем-то другим; это не то же самое, что высокая пропускная способность или низкая задержка, но устранение проблем с задержкой помогает.
Общие ядра, настроенные по умолчанию в большинстве дистрибутивов, разработаны как «разумный» компромисс: они пытаются гарантировать, что ни одна задача не может монополизировать систему слишком долго, и что задачи могут переключаться разумно часто, но без ущерба для пропускной способности — потому что чем больше времени ядро тратит на размышления о том, переключать ли задачи (внутри или вне ядра) или обрабатывать прерывания, тем меньше времени система в целом может потратить на «работу». Этот компромисс недостаточен для чувствительных к задержкам рабочих нагрузок, таких как обработка аудио или видео в реальном времени: для них ядра с низкой задержкой обеспечивают меньшие задержки за счет некоторой пропускной способности. А для требований реального времени ядра реального времени удаляют как можно больше блокировщиков с низкой задержкой за счет большей пропускной способности.
Основные дистрибутивы Linux в основном устанавливаются на серверах, где традиционно задержка не считалась такой уж важной (хотя если вы проводите анализ производительности в процентилях и заботитесь о производительности в верхних процентилях, вы можете не согласиться), поэтому ядра по умолчанию довольно консервативны. Пользователям настольных компьютеров, вероятно, следует использовать ядра с низкой задержкой, как предлагается в собственной документации ядра. Фактически, чем больше используется ядер с низкой задержкой, тем больше будет отзывов об их релевантности, что помогает вносить общеприменимые улучшения в конфигурации ядра по умолчанию; то же самое касается ядер RT (многие исправления RT в какой-то момент предназначены для основного ядра).
Эта презентация на темудает довольно много информации.
Начиная с версии 5.12 ядра Linux,«динамическое упреждение»может быть включена; это позволяет переопределить модель приоритета по умолчанию в командной строке ядра, используяpreempt=
параметр. В настоящее время поддерживает none
(сервер), voluntary
(настольный компьютер) и full
(настольный компьютер с низкой задержкой).
решение2
Стивен Китт объяснил конфигурации и балансировку и все приятное в технических параметрах. Я хотел бы предложить только небольшое интуитивное различие:
Вы на сафари, едете по местности на джипе. Ваша добыча бежит. Когда добыча попадает в перекрестье прицела, вы нажимаете на курок, и винтовка стреляет - расчет прост - добыча в перекрестье прицела = попадание, добыча вне перекрестья = промах - вам отчаянно нужнонизкая задержка- затем вы приходите в себя, перезаряжаете винтовку, находите другую добычу - нет необходимости в дополнительной скорости, нет необходимости в регулярности.Задержкаэто все.
Вы конвертируете видео из этого сафари. Это долго, это занимает часы. Вам все равно, когда обрабатывается конкретный кадр и если некоторые кадры обрабатываются дольше, чем другие. Вам нужно закончить процесс как можно быстрее - лучшепропускная способностьозначает меньше часов, остальное не имеет значения
Вы получаете телеграфный сигнал — только короткие, длинные и пробелы — азбуку Морзе легко расшифровать, и вам не нужно знать, когда именно начался или закончился каждый импульс, но вам нужногарантия, что вы делаетене скучайлюбой из них - вам нуженв реальном времени(может быть, это медленно, телеграф не такой уж быстрый, но ондолжен быть регулярным
В этих трех примерах вы явно выбираете только один иззадержка,пропускная способностьилирегулярность, жертвуя двумя другими - по понятным причинам. И только в одном вы действительно хотите низкую задержку, если вы не можете иметь все три одновременно.
решение3
Проще говоря:
- Если вы нечасто нагружаете свой ПК работой, то ядро с низкой задержкой — для вас.
- Если вы постоянно нагружаете свой ПК задачами, требующими интенсивной загрузки ЦП, то универсальное ядро вам подойдет.
- Если вы просто используете свой ПК для просмотра веб-страниц, воспроизведения видео, прослушивания музыки, то низкая задержка — это то, что вам нужно.
- Если вы играете, то теоретическая разница между низкой задержкой и общей будет в том, что низкая задержка победит во всех сценариях, кроме одного; загрузка уровня, но это больше зависит от того, есть ли у вас SSD или нет, и от качества SSD, потому что ваш базовый SSD работает на скорости 1X, тогда как ваш самый быстрый PCI-Express SSD работает на скорости 6X. Традиционный жесткий диск работает на скорости 0,1X. Так что да, SSD может быть в 60 раз быстрее традиционного жесткого диска.
По сути, универсальное ядро выполняет большую часть работы за кратчайшее время, тогда как ядро с низкой задержкой делает ПК наиболее отзывчивым (при условии, что в ядре или системе не обнаружено никаких ошибок).
Для большинства людей ядро с низкой задержкой имеет наибольший смысл. Но если вы всегда даете своему ПК много работы, то универсальное ядро для вас.
Другими словами, если 90% времени загрузка вашего процессора по всем ядрам < 60%, то ядро с низкой задержкой для вас. Если же загрузка вашего процессора по всем ядрам больше 80%, 90% или более времени, то ядро с низкой задержкой для вас.
Тест: Какое ядро покажет лучшие результаты в бенчмарке? Пока задержка игнорируется как параметр бенчмарка, generic всегда выигрывает гонку, но низкая задержка — это как иметь рядом с собой осьминога, готового делегировать полномочия.
решение4
Потому что есть компромисс. Переключение процессов или вход/выход из прерываний занимает время. Например, запуск планировщика на частоте 1000 Гц вместо 250 Гц означает, что у вас будет прерывание таймера и потенциальное переключение процессов в четыре раза чаще. Это может позволить процессу реагировать быстрее, поскольку ему разрешено выполняться более регулярно. Однако, как человек, вы, вероятно, не заметите никакой разницы (250 Гц означает каждые 4 мс, что уже намного быстрее любого времени реакции человека).
Общий объем вычислительной мощности или пропускной способности ввода-вывода ограничен, и более частый вызов планировщика означает лишь потерю части этой мощности.