The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Для ядра Linux подготовлены оптимизации, повышающие производительность планировщиков ввода/вывода

22.01.2024 08:23

Йенс Эксбо (Jens Axboe), создатель io_uring и планировщиков ввода/вывода CFQ, Deadline и Noop, продолжил свои эксперименты с оптимизацией ввода/вывода в ядре Linux. На этот раз под его внимание попали планировщики ввода/вывода BFQ и mq-deadline, оказавшиеся узким местом как минимум в случае скоростных накопителей NVMe.

Как показало изучение ситуации, одной из ключевых причин неоптимальной производительности подсистем планировщиков ввода/вывода стали проблемы с конкурирующими блокировками ("lock contention", попытка получить блокировку, удерживаемую другим потоком). Благодаря мерам, нацеленным на снижение соперничества при обработке блокировок, таким как сериализация диспетчеризации и вставки запросов, скорость работы планировщиков выросла в ряде ситуаций в разы (в IOPS).

При тестировании планировщика BFQ утилитой fio производительность выросла с 567К до 1551К операций ввода/вывода в секунду, а конкуренция блокировок снизилась с 96% до 30%. В случае с mq-deadline производительность после применения предложенных патчей при использовании NVMe-накопителя увеличилась с 1070К до 2560K операций ввода/вывода в секунду (IOPS), а конкуренция блокировок снизилась с 94% до 23%.

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: Увеличение скорости ввода/вывода на 6% в Linux, благодаря кэшированию запросов времени
  3. OpenNews: Применение асинхронной буферизированной записи на базе io_uring до 80 раз снизило задержки в XFS
  4. OpenNews: Выпущен патч, решающий проблему с blk-mq в ядре Linux 4.19, которая приводит к потере данных
  5. OpenNews: В ядре Linux 5.14.7 выявлена проблема, приводящая к краху на системах с планировщиком BFQ
  6. OpenNews: Для Linux ядра разработаны новые планировщики ввода/вывода - BFQ, YFQ и SCAN-EDF
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60474-scheduler
Ключевые слова: scheduler, linux, optimization, bfq
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (62) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, iCat (ok), 08:41, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    > ...конкуренция блокировок снизилась с 94% до 23%

    Впечатляюще...

     
     
  • 2.4, Аноним (4), 09:10, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >При тестировании

    Но Торвальдс предложеные патчи отклонил?

     
     
  • 3.7, Аноним (7), 09:22, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Они пока в отдельной ветке на стадии обсуждения (RFC) и их ещё не предлагали включить в основное ядро.

     
     
  • 4.75, shardddin (?), 01:32, 25/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Видимо, все-таки нужно их вносить... BFQ у меня работал для жестких дисков - были регулярные подвисания при просмотре, особенно, большеразмерных видео - все прошло при переключении планировщика на bore...
     
     
  • 5.77, Sem (??), 17:08, 01/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А чем дефолтный Deadline не устроил?
     
  • 3.78, Аноним (78), 11:21, 20/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    бэкпорты в 5.х будут ?
     
  • 2.13, лютый жабби.... (?), 10:09, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • –8 +/
    >Впечатляюще...

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

     
     
  • 3.35, Аноним (-), 17:38, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > да не очень. а вот то что предыдущее подэлие этого прогера выкинули из дефолтов
    > после пачки cve вот это действительно впечатляюще. как и то, что его до сих пор
    > не забанили в LKML

    Ох, иди уже, переписывай вон фрибзду на хруст, или, вот - лучше на яву сразу, чтоб два раза не вставать.

     
     
  • 4.56, Bottle (?), 23:20, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В идеале - использовать Tiny Core Linux, а весь юзерспейс держать на Джаве.
     
     
  • 5.58, Аноним (-), 03:53, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > В идеале - использовать Tiny Core Linux, а весь юзерспейс держать на Джаве.

    Чудак, купи уже себе андроид и не парься. Получишь примерно это как раз.

     
  • 3.40, Oe (?), 18:33, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я пишу с firefox 113, прошу держать в курсе о пачках cve
     
  • 3.64, нах. (?), 11:28, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > как и то, что его до сих пор не забанили в LKML

    а кто тогда кот писать будет? Нет кота - нет взносов от платиновых, Линусу нечем кормить свою дочку, а она - жрьоооот.

    А тут вообще вон - оптимизации, понимать надоть! Тут платиновые в очередь выстроятца.

     

  • 1.6, Аноним (6), 09:21, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Ждем новые уязвимости
     
     
  • 2.41, Oe (?), 18:35, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нинидо, процессоры превращаются в тыкву быстрее чем успевают выпускать новые
     
  • 2.66, RM (ok), 14:42, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее неприятные тяжело воспроизводимые и еще тяжелее исправляемые баги
     

  • 1.14, Аноним (14), 10:14, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А потом полезут побочные эффекты его экспериментов. Потом окажется что эти блокировки не просто так стояли. Просто тот кто делал изначальное решение уже не помнит или не в деле. И не может сказать причину принятия решения.
     
     
  • 2.20, n00by (ok), 13:32, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > полезут побочные эффекты

    Совершенно внезапно для экспертов, побочным эффектом планировщика ввода-вывода является запись в файлы.

     
     
  • 3.33, Sw00p aka Jerom (?), 16:18, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    планировщик ввода-вывода - файлами оперирует?
     
     
  • 4.44, Аноним (44), 18:51, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Он куда важнее этих мелочей. Он говорит когда эти операции произойдут и в каком порядке. От балды куда-то в память писать задача нехитрая, решается тысячью и одним способом. Да хоть выходом за пределы массива.
     
  • 4.63, n00by (ok), 08:15, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Определение терминов "побочный эффект" и "ввод-вывод" несложно найти самостоятельно.
     
     
  • 5.65, Sw00p aka Jerom (?), 12:45, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Определение терминов "побочный эффект" и "ввод-вывод" несложно найти самостоятельно.

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

    https://docs.kernel.org/block/index.html

     
     
  • 6.70, n00by (ok), 12:22, 24/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Определение терминов "побочный эффект" и "ввод-вывод" несложно найти самостоятельно.
    > Тогда надо указать "дебилу", который засунул документацию по ио-шедуллеру в раздел блок,
    > чтобы он исправил и перенес в раздел файлсистемс.
    > https://docs.kernel.org/block/index.html

    Жду ссылку на твоё письмо в LKML.

     
     
  • 7.72, Sw00p aka Jerom (?), 13:42, 24/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Жду ссылку на твоё письмо в LKML.

    так это по вашей логике ио-шедуллер оперирует файлами, вот вы и пишите :)

     
     
  • 8.73, n00by (ok), 17:19, 24/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это по твоей логике так, потому что у тебя файлы лежат в папочке, а не в ФС на б... текст свёрнут, показать
     
     
  • 9.76, Sw00p aka Jerom (?), 02:09, 25/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а шо, вне папочки файлы хоть лежат D ... текст свёрнут, показать
     
  • 2.22, Аноним (-), 13:45, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Рискну, что опять быдет "Скрыто ботом-модератором"
    По поводу -
    "причину принятия решения"
    - а их надо в коде выражать. Типа - статический ассерт. Или ещё какая проверка\завязка на что-то.
    И ещё - а пресловутый здесь раст позволяет кодом выражать причины? (именно кодом а не комментариями в коде)
     
     
  • 3.25, ПомидорИзДолины (?), 14:39, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а пресловутый здесь раст позволяет кодом выражать причины?

    Да, позволяет. Но еще удобнее позволяет выражать причины на уровне типов.

    Программиорование типами вообще классная штука. Рекомендую попробовать, например оценить удобство 'Option' в сравнении с null_ptr.

     
  • 2.36, Аноним (-), 17:40, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Потом окажется что эти блокировки не просто так стояли.
    > Просто тот кто делал изначальное решение уже не помнит или не в деле.
    > И не может сказать причину принятия решения.

    Так блокировки ж на месте остались, привет птичкодятлам. Просто работу с ними пересмотрели, что идиотизма стало меньше. Изначально система делала откровенную фигню, тратя дофига времени на какой-то "thrashing".

     
  • 2.42, Oe (?), 18:37, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эти блокировки стояли потому что интел занёс чтобы процессоры с супермега бустом на 6.6ГГц не троттлили хотя бы пол года с начала продаж.
     
     
  • 3.49, Аноним (49), 20:08, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У Intel троттлинг на буст частоты сдела так что бы проходить бенчмарки с максимальным ускорением, а дальше включается троттлинг. Если запускать длинные бенчмарки или несколько раз подряд прогнать один и тот же бенчмарк то скорость процессора начинает падать на глазах.
     
     
  • 4.51, Oe (?), 20:29, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На ведроидах висит демон, отслеживающий запуски популярных бенчмарков в тупую по названию, и передающий ядру параметры для тюнинга под конкретный бенчмарк, стоит пересобрать апкшечку с другим названием и результаты падают.
     
     
  • 5.52, Аноним (52), 20:34, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А пруфы есть?
     
     
  • 6.53, Oe (?), 20:59, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ищи в прошивке, демон зовется что то вроде com.mediatek.mtkpower, конфиги с тюнингом хранятся в открытую в .xml файлах в etc, вроде power_config.xml, удаляешь конфиги и результат в бенчмарках тоже падает.
     
     
  • 7.59, Аноним (-), 03:58, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ищи в прошивке, демон зовется что то вроде com.mediatek.mtkpower,

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

    Почему приврать? Потому что остальные задачи такой перфоманс не увидят - и вас надули.

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

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

     
     
  • 8.67, RM (ok), 14:43, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну первой начала Nvidia в своих дровах Давно ... текст свёрнут, показать
     
  • 5.71, Аноним (71), 12:24, 24/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Напомнило, лежит у меня телефон, Blackberry KeyOne, так у него в прошивке на уро... большой текст свёрнут, показать
     

  • 1.18, 12yoexpert (ok), 12:42, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как дебажат race conditions на mutex-ах на таких скоростях? там ведь даже время не замерить, это повлияет на работу и даст невалидные результаты
     
     
  • 2.19, Аноним (19), 12:50, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Синхронизацию отдебажить нельзя в принципе, как и другие редко воспроизводимые проблемы. Сначала долго медитируют на код и проверяют модель, потом детально разбирают баги через логи и корки.
     
     
  • 3.23, _oleg_ (ok), 13:46, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А разбирательство с корками это не дебаг :-)?
     
     
  • 4.24, Аноним (19), 14:03, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это в основном разбор инцидентов. У автора выше совсем узкое понимание процесса отладки
     
  • 3.37, Аноним (-), 17:43, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Синхронизацию отдебажить нельзя в принципе, как и другие редко воспроизводимые
    > проблемы. Сначала долго медитируют на код и проверяют модель, потом детально разбирают
    > баги через логи и корки.

    В кернеле таки есть инструменты для отлова факапов с блокировками. Lockdep, детектор deadlock, все такое.

     
  • 3.46, Аноним (44), 19:14, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Синхронизацию отдебажить нельзя в принципе

    Это не так. Любой параллельный процесс может быть сериализован.

     
  • 2.21, Аноним (-), 13:41, 22/01/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.27, Rev (?), 15:03, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так вам ведь показали цифры. Вот так их замеряют и понимают, что скорость выросла :)
     
  • 2.34, Аноним (-), 17:33, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю как в ядре, в юзерспейсе можно статистический профайлер заюзать: эпизодически тормозишь процесс, чтобы записать его IP, а потом смотришь на какие адреса попадает. Если оно на спинлоках или на залоченных мьютексах много времени проводит, то это легко ловится таким образом. Умозрительно рассуждая, я не вижу проблем такое в ядро тоже запилить. Тот код который под запретом прерываний работает, понятно не удастся так профайлить, но если ты по прерыванию таймера семплы собираешь, то оно автоматически не будет прерывать непрерываемый код, и таким образом ничего не испортит. Данных об этом коде ты не получишь, но и сломать его не сломаешь. Но это умозрительно.
     
     
  • 3.38, Аноним (-), 17:45, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не знаю как в ядре, в юзерспейсе можно статистический профайлер заюзать:
    > эпизодически тормозишь процесс, чтобы записать его IP, а потом смотришь на какие адреса

    Питекантроп рассказывал о профилировании. Хотя-бы "perf" из линуха он не видел и поэтому как сие белый человек делает - он ессно не знает. Как и тот факт что в большинстве железок, даже ARM малохольных - много лет есть "HW perf counters". Чтобы всем вон тем - не заниматься.

     
     
  • 4.50, Аноним (-), 20:21, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Железные каунтеры отстой, белые люди хайпуют на них, но у них ведь регистров с гулькин нос. Пускай белые люди решают эти проблемы, пытаясь угадать, где может тормозить. Мы, питекантропы, предпочитаем софтварно мерять, и сразу получать расклад по мастям.

    > Хотя-бы "perf" из линуха

    Совершенно верно, perf тоже умеет в статистический софтварный профайл. Я очень рекомендую белому человеку попробовать, прежде чем трясти тут своими железными каунтерами.

     
     
  • 5.54, Аноним (-), 22:02, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Железные каунтеры отстой, белые люди хайпуют на них, но у них ведь регистров с гулькин нос.

    Для счета циклов CPU по моему аж 1 достаточно, на все и вся. И даже совсем без на минималках вроде работает, просто кривее.

    И кстати он видит и кишки ядра, и внутренности программ. С именами, если дебаг символы нашел. И вот они, троглодиты. Как на ладони. Можно как раз и посмотреть кто тут жиртрест.

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

    Вы что-то полезное сравнимо с сабжем оптимизировали? Волобуев, где ваш патч?!

     
     
  • 6.55, Аноним (-), 22:17, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А с софтварной статистикой ты имеешь, грубо говоря, по счётчику на каждую исполняющуюся инструкцию, и все эти счётчики увеличиваются пропорционально количеству выполнений соответствующих инструкций.

    > Вы что-то полезное сравнимо с сабжем оптимизировали? Волобуев, где ваш патч?!

    Спросил меня "белый" аноним опеннета...

     
  • 2.68, RM (ok), 14:45, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Например так: https://github.com/dvyukov/relacy
    Но, как уже написали, в основном в голове.
     

  • 1.28, Rev (?), 15:05, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В случае с mq-deadline производительность после применения предложенных патчей при использовании NVMe-накопителя увеличилась с 1070К до 2560K операций ввода/вывода в секунду (IOPS), а конкуренция блокировок снизилась с 94% до 23%.

    Так вот, почему телефоны на Андроиде так тормозят? :)

     
     
  • 2.39, Аноним (-), 17:47, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так вот, почему телефоны на Андроиде так тормозят? :)

    Что за телефон такой, с NVMe? Сколько IOPS он выдает? И зачем это телефону? А так приложуха на электроне тормозит на чем угодно. Хоть на EPYC ее ставь.

     
     
  • 3.62, cheburnator9000 (ok), 04:53, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Electron приложения работают на андроидах в разы быстрее и без микролагов в интерфейсе по сравнению с их работой на ПК. Сравни например discord.
     
  • 2.61, cheburnator9000 (ok), 04:52, 23/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Телефоны на андроиде тормозят из-за фактора под названием "бюджетный ARM процессор" + бюджетная flash память.

    У всей продукции apple идут pcie линии и nvme контролеры, но не раскатывайте губу у samsung и стандарта UFS 4.0 скорости записи чтения от половины до двух раз выше айфонов.

    Ты видел сколько МБ занимают apk? Там что не приложение от банка то уже 200+ МБ. В каждом свой голосовой помощник, своя телеметрия и куча всего своего проприетарного никак не оптимизированного и собранного в режиме debug.

     

  • 1.30, Аноним (30), 15:19, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нужны года на обкатку. Доверие зарабатывается годами. Даже если Линус примет патчи, на ядре моего дистра это не скажется.
     
     
  • 2.43, Oe (?), 18:40, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Мы установим это обновление в период вашей неактивности"
     
     
  • 3.47, Аноним (47), 19:30, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы можете выбрать когда, но всё равно это будет в самый неподходящий момент
     
  • 3.69, User (??), 08:57, 24/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как будто в этом есть что-то плохое )
     

  • 1.45, Аноним (45), 19:08, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Lock-free структуры данных.
     
     
  • 2.74, RM (ok), 18:27, 24/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Lock-free структуры данных.

    неа. Lock free не значит contention free.

     

  • 1.57, Xo (?), 00:52, 23/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для таких устройств есть kyber, например. Всё остальное для hdd.
     
  • 1.60, cheburnator9000 (ok), 04:41, 23/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну наконец-то теперь хоть по скоростям nvme под линуксом сравняются с windows? Или уже в 5.15 починили через io_uring? Спрашиваю для друга, у меня обычные SSD.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру