Использование ядра RT (низкая задержка)

Мигель Майоль, большой последователь и комментатор этого блога, порекомендовал статью, опубликованную в испанский об использовании ядер RT, которые мы решили опубликовать и расширить в некоторых его частях.

Ядра RT разрешить оптимальная производительность в некоторых конкретные ситуацииНапример, редактирование аудио или использование виртуальных музыкальных инструментов.

Многозадачное ядро

Ядро Linux, как и большинство современных операционных систем, является многозадачным. Это означает, что одновременно работают несколько программ.

На самом деле это не совсем так. Вы помещаете программы в очередь, и микропроцессор одну за другой выполняет их в течение определенного времени. Как только он исчерпан, микропроцессор прерывает задачу, оставляя ее на полпути, и уступает место следующей. Это количество времени называется квантом или временным интервалом, и оно не обязательно должно быть постоянным.

Хорошей аналогией может быть повар в баре, который одновременно готовит несколько блюд: сэндвич с корейкой, сэндвич с рубцами, смешанный салат ... Теперь я ломаю хлеб, включаю сковороду, пока она нагревается, промываю салат и др.

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

Переключение задач стоит дорого

Многозадачность не бесплатна: она связана с накладными расходами процессора. Действительно, исключение одной задачи и загрузка следующей - это дополнительная работа. Эта операция называется «переключением контекста» или «переключением задач». Было бы более экономично с точки зрения ЦП запускать программы полностью, одну за другой, чем разрезать их на «кусочки» и переходить от одной к другой. Однако система теряла бы интерактивность, мы не могли бы открыть несколько окон или, в случае сервера, обрабатывать несколько запросов одновременно.

Задержка и производительность

Предположим, нашему повару нужно очистить 20 кг креветок и удалить косточки с 20 кг оливок. Как планируется работа?

В крайнем случае, он сначала очистил все креветки, вымыл руки, чтобы избежать смешивания вкусов, а затем промыл все оливки. Изобразим это так:

GGGGGGGGGGGGGGGGGGGGG… C AAAAAAAAAAAAAAAAAAAAAA…

С другой стороны, он очистил бы креветку, вымыл бы руки, выложил оливковое масло, вымыл бы руки ... креветки, маслины, креветки, маслины ... Мы изобразим это так:

GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC…

Буква C обозначает изменение контекста: мыть руки, менять посуду ...

При этом официант собирает заявки клиентов: «одна с креветками!» ... «одна с оливками!» ... и переносит их на кухню.

В первом случае предположим, что покупатель приходит и просит порцию креветок. Нет проблем, его сразу подают. Но что, если он попросит оливки? Официант не мог подать его, пока все креветки не были очищены. В этом случае задержка, то есть время, которое проходит с момента отправки запроса до момента ответа, будет очень высокой.

Во втором случае, что бы ни попросил клиент, это будет доступно в короткие сроки, также практически одинаково в обоих случаях. Задержка будет низкой, но за это придется заплатить: из-за изменений контекста произойдет снижение производительности, понимаемое как часть времени, в течение которой ЦП выполняет непосредственно продуктивные задачи, а не задачи поддержки.

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

Как видите, задержка и производительность - противоположности. По этой причине нельзя сказать, что ядра RT дают большую производительность. Напротив, снижение задержки снижает производительность машины и поэтому является плохим выбором для систем, не требующих сверхбыстрых ответов, таких как веб-серверы или серверы баз данных.

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

Приоритеты

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

Ядро RT (или низкая задержка)

Проблема с обычными ядрами заключается в том, что задачи нельзя нигде прервать, вам нужно дождаться, пока они достигнут определенных точек выполнения, где их можно остановить, чтобы переключиться на другое. Это приводит к тому, что мы называем задержкой.

Проще говоря, ядра RT позволяют прерывать задачи в большем количестве мест, чем обычные ядра. Они могут делать, так сказать, более тонкие отрезки времени, поэтому текущая задача будет вытеснена быстрее, и наша приоритетная задача сможет быстрее получить доступ к ЦП. Следовательно, задержка будет ниже.

Предположим, что ядро ​​RT позволяет нам оставить полуочищенную креветку, если в то время срочно нужно очистить оливку как можно скорее, в то время как в обычном ядре необходимо завершить очистку креветки.

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

Когда важно использовать ядро ​​RT?

В двух случаях:

1) Когда нам нужны очень низкие задержки, то есть очень быстрая реакция машины. Самый яркий пример - исполнение виртуальных инструментов, когда вам нужно, чтобы при нажатии клавиши на MIDI-клавиатуре инструмент сразу звучал.

2) Когда нам нужны очень строгие приоритеты, то есть, чтобы наша высокоприоритетная задача не прерывалась ничем в мире (за исключением катастрофического случая, когда ЦП настолько перегружен, что превышает 100% загрузку). Например, мы записываем аудиосеанс с Ardor и наблюдаем, как индикаторы фейдеров поднимаются и опускаются. Не имеет значения, потеряем ли мы кадр обновления фейдеров, пока передача звука от микрофона на жесткий диск не прерывается. Ядро RT будет замедлять обновление фейдера настолько, насколько это необходимо, до тех пор, пока не будет потеряно ни одного сэмпла звука.

Тем не менее, в целом новые ядра без RT значительно улучшили планирование задач и управление приоритетами. Если у вас нет ЦП на пределе своих возможностей (скажем, загрузка ниже 50%) или если вы не возражаете, что время от времени в звуке есть небольшой микроперерез (щелчок) (очень страшные xruns), нормальное ядро ​​дает вполне приемлемую производительность.

Какая задержка желательна?

Лично меня устраивает все, что ниже 10 мс, а с 20 мс я уже начинаю четко замечать задержку. Есть люди более требовательные.

Установка

На Ubuntu и производных:

sudo apt-get установить linux-headers-lowlatency
sudo apt-get установить linux-lowlatency
sudo update-grub

При запуске у вас будут оба варианта (обычное ядро ​​и ядро ​​с низкой задержкой).

В Arch и производных:

yaourt -S Linux-RT
sudo update-grub

источник: испанский


13 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Хорди Фдез сказал

    очень полный и хороший
    объяснил. да, я использую Linux для создания музыки с
    обычный дистрибутив, и у меня нет проблем с задержкой,
    реакция мгновенная при воспроизведении звука. У меня не так много
    знания, но я думаю, что драйверы для звука в Linux
    довольно хорошо мне даже не нужен домкрат, чтобы получить хорошее
    производительность

  2.   Чарли сказал

    Отличная статья и объяснение как нельзя лучше. Ура

  3.   Карлеса25 сказал

    Здравствуйте: Очень интересно, я буду тестировать его в вычислительных задачах с интенсивным использованием CPU + GPU.

    Так как вы можете оставить ОС Ubuntu 12.0 без изменений, то есть удалить "linux-headers-lowlatency". С уважением.

  4.   Th3Gh057 сказал

    Большое спасибо за статью. На самом деле очень интересно узнать, как работают ядра с низкой задержкой. Это пробудило у меня интерес узнать больше об этом и его полезности. Ура

  5.   Оливер сказал

    Отличная статья! однажды я услышал, что ядро ​​с низкой задержкой необходимо для работы более отзывчивой клавиатуры, но я понятия не имел, почему и как это сделать. Аналогия очень ясна.

  6.   Смелость сказал

    Да, сэр, совершенно верно.

    Это что-то совершенно жизненно важное и в производстве музыки, как говорится в использовании VST, например, при живом выступлении с использованием MIDI-контроллера мы должны работать одновременно с другими инструментами, и большая задержка может сыграть злую шутку. на нас.

    Или не обязательно при использовании виртуальных инструментов, но при записи, через интерфейс возникает задержка, которая может сбить нас с толку при интерпретации инструментов.

  7.   Вискоза сказал

    Отличная статья, я понятия не имел, что означает низкая задержка в ядре (хотя я связал это с задержками в модулях оперативной памяти)

  8.   Херардо Азоньос сказал

    Очень хорошо ... Очень понравилось.
    меняя тему, кто-то знает, как решить проблему Wi-Fi (беспроводная связь на моем коленях), которая не позволяет мне работать в общественных местах, сигнал очень слабый.
    У меня ubuntu 11.10, и у меня на коленях: Dell inspiron n4110.
    Я благодарю вас заранее.

  9.   Микель Майоль и Тур сказал

    Спасибо, чтобы добавить, что Sabayon несет это ядро, скомпилированное по умолчанию с частотой 1000 Гц, которое также идеально подходит для игровых серверов FPS и для самих игр FPS и любых требовательных, кроме, возможно, тех, которые используют базы данных, хотя мне в Sabayon freeciv взорвали меня прочь ..

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

    Это вопрос их установки, тестирования в течение недели, возврата к ядру - нормально - и просмотра того, как оно прошло, и какое из них мы предпочитаем, а также использовать его для конкретных задач, которые каждое из них лучше .

  10.   Густаво Трепат сказал

    Отличная статья, очень хорошо объясненная.
    Спасибо.

  11.   Стивен сказал

    Отличное объяснение, большое спасибо, оно мне очень помогло

  12.   Карлос Мартинес сказал

    Очень интересная статья, мне стало немного понятнее, хотя я все еще сомневаюсь, подойдет ли мне ядро ​​с низкой задержкой. Как я могу узнать задержку ядра? Ура

  13.   Июль сказал

    Я недавно установил студийный дистрибутив ubuntu и понял, что задержка низкая, исследуя, что попал на вашу страницу. Я очень четко понимаю основные концепции операционных систем, и ваше объяснение было идеальным. Вы справились. Поздравления