Використання ядра RT (низька затримка)

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

L Ядра RT дозволити a оптимальна продуктивність в деяких конкретні ситуаціїНаприклад, аудіомонтаж або використання віртуальних музичних інструментів.

Ядро багатозадачності

Ядро Linux, як і більшість сучасних операційних систем, є багатозадачним. Це означає, що одночасно працює кілька програм.

Насправді це не зовсім так. Що ви робите, це ставите програми в чергу, і мікропроцесор по черзі виконує їх певний час. Як тільки це вичерпається, мікропроцесор перериває завдання, залишаючи його наполовину, і поступається місцем наступному. Ця кількість часу називається квантом або зрізом часу, і вона не повинна бути постійною.

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

Якщо квант досить малий, суб’єктивне враження для повільного спостерігача, такого як людина, полягає в тому, що замість швидкого процесора, що виконує завдання по черзі, ми маємо повільний процесор для кожного з них (кілька кухарів на одній кухні повільно виконують кожен одна ціла тарілка).

Переключення завдань має свою ціну

Багатозадачність не є безкоштовною: вона передбачає накладні витрати на процесор. Дійсно, виселення одного завдання та завантаження наступного - додаткова робота. Ця операція називається "перемиканням контексту" або "перемиканням завдань". З точки зору процесора було б вигідніше повністю запускати програми, одну за одною, ніж розрізати їх на «скибочки» і переходити з однієї на іншу. Однак система втрачає в інтерактиві, ми не можемо відкрити кілька вікон або, у випадку сервера, одночасно відвідувати кілька запитів.

Затримка та продуктивність

Припустимо, що наш кухар повинен очистити 20 кілограмів креветок і викопати 20 кілограм оливок. Як планується робота?

В крайньому випадку він спочатку очищав усі креветки, мив руки, щоб не змішувати ароматизатори, а потім вимивав усі оливки. Ми будемо представляти це так:

GGGGGGGGGGGGGGGGGGGGGGG… C AAAAAAAAAAAAAAAAAAAAAA…

У протилежному крайньому положенні він очищав креветку, мив руки, опускав оливки, мив руки ... креветки, оливки, креветки, оливки ... Ми представлятимемо це так:

GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC ...

Символ "С" означає зміну контексту: мити руки, міняти посуд ...

Одночасно офіціант збирає запити клієнтів: «Один із креветками!» ... «Один із оливками!» ... і переносить їх на кухню.

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

У другому випадку, що б клієнт не попросив, він буде доступний за короткий час, також практично однаковий в обох випадках. Час затримки буде низьким, але з певною вартістю: через зміст контексту відбуватиметься зниження продуктивності, що розуміється як частина часу, протягом якого центральний процесор виконує безпосередньо продуктивні завдання, а не завдання підтримки.

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

Як бачите, затримка та ефективність - протилежні. З цієї причини неправильно стверджувати, що ядра rt дають більше продуктивності. Навпаки, зниження затримки знижує продуктивність машини, а тому є поганим вибором для систем, які не потребують надшвидких реакцій, таких як веб-сервери або сервери баз даних.

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

Пріоритети

Цікавим варіантом у багатозадачних системах є надання різних пріоритетів завданням таким чином, що найважливіші отримують більше часу від процесора, а менш важливі - менше. У звичайному ядрі це робиться за допомогою команди 'nice'. Якщо наш кухар розраховує подати більше порцій креветок, ніж оливок, йому, звичайно, було б добре витратити більше часу на перші.

Ядро RT (або низька затримка)

Проблема звичайних ядер полягає в тому, що завдання ніде не можуть бути перервані, вам потрібно почекати, поки вони досягнуть певних точок виконання, де їх можна зупинити, щоб перейти на інше. Це вводить те, що ми називаємо латентністю.

Якщо спростити, ядра RT дозволяють переривати завдання в більшій кількості місць, ніж звичайні ядра. Вони можуть робити, так би мовити, більш тонкі зрізи часу, тому поточне завдання буде виселено швидше, і наше пріоритетне завдання зможе скоріше отримати доступ до центрального процесора. Тому затримка буде нижчою.

Скажімо, ядро ​​RT дозволяє нам залишити напівочищену креветку, якщо в цей час терміново потрібно скористатися якомога швидше очищенням оливки, тоді як у звичайному ядрі необхідно закінчити очищення креветок.

Окрім того, що зрізи стають тоншими, ядра RT мають набагато суворішу систему пріоритетів, де пріоритетні завдання нещадно набивають одне одного (випереджаючи), щоб отримати контроль над процесором, уповільнюючи інші програми, якщо потрібно, щоб задовольнити ваші вимоги.

Коли важливо використовувати ядро ​​RT?

У двох випадках:

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

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

Тим не менш, загалом нові ядра, які не є RT, значно покращили свою систему планування та управління пріоритетами. Якщо у вас немає центрального процесора на межі його можливостей (скажімо, коефіцієнт використання нижче 50%) або якщо ви не проти, що час від часу в звуці виникає невеликий мікроріз (клацання) (дуже страшні кранси), нормальне ядро ​​дає цілком прийнятну продуктивність.

Яка затримка є доцільною?

Особисто мені все менше 10 мс добре, і з 20 мс я вже починаю чітко помічати затримку. Є більш вимогливі люди.

Установка

На Ubuntu та похідних:

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

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

В Arch та похідні:

yaourt -S linux -rt
sudo update-grub

Фуенте: Гіпосанічний


Залиште свій коментар

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

*

*

  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.   Районний - сказав він

    Чудова стаття, я навіть не уявляв, що означає низька затримка в ядрі (хоча я пов’язував це із затримками в модулях ram)

  8.   Херардо Азоньос - сказав він

    Дуже добре ... мені дуже сподобалось.
    міняючи тему, хтось знає, як вирішити проблему wi-fi (бездротового зв'язку на колінах), яка не дає мені працювати в громадських місцях, сигнал дуже низький.
    У мене є ubuntu 11.10, і моє коліно: Dell inspiron n4110.
    Заздалегідь дякую.

  9.   Мікель Майоль і тур - сказав він

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

    На настільному ПК воно зазвичай надає пріоритет головному завданню, тому може бути зручним його використання, навіть якщо воно менш ефективне для інших завдань, адже те, що ми робимо на даний момент, буде йти швидше, а в сучасних сучасних комп’ютерах це може бути досить цікаво.

    Справа в тому, щоб встановити їх, протестувати протягом тижня, повернутися до ядра - нормально - і подивитися, як воно пройшло, і яке з них ми віддаємо перевагу, а також використовувати його для конкретних завдань, що кожне з них краще.

  10.   Густаво Трепат - сказав він

    Відмінна стаття, дуже добре пояснена.
    Спасибо.

  11.   Естебан - сказав він

    Відмінне пояснення, велике спасибі, це мені дуже допомогло 🙂

  12.   Карлос Мартінес - сказав він

    Дуже цікава стаття, вона стала для мене трохи зрозумілішою, хоча я все ще сумніваюся, чи підходить мені ядро ​​з низькою затримкою. Як я можу дізнатися затримку ядра? На ура

  13.   Липень - сказав він

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