Йенс Эксбо (Jens Axboe), создатель io_uring и планировщиков ввода/вывода CFQ, Deadline и Noop, продолжил свои эксперименты с оптимизацией ввода/вывода в ядре Linux. На этот раз под его внимание попали планировщики ввода/вывода BFQ и mq-deadline, оказавшиеся узким местом как минимум в случае скоростных накопителей NVMe...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60474
> ...конкуренция блокировок снизилась с 94% до 23%Впечатляюще...
>При тестированииНо Торвальдс предложеные патчи отклонил?
Они пока в отдельной ветке на стадии обсуждения (RFC) и их ещё не предлагали включить в основное ядро.
Видимо, все-таки нужно их вносить... BFQ у меня работал для жестких дисков - были регулярные подвисания при просмотре, особенно, большеразмерных видео - все прошло при переключении планировщика на bore...
А чем дефолтный Deadline не устроил?
бэкпорты в 5.х будут ?
>Впечатляюще...да не очень. а вот то что предыдущее подэлие этого прогера выкинули из дефолтов после пачки cve вот это действительно впечатляюще. как и то, что его до сих пор не забанили в LKML
> да не очень. а вот то что предыдущее подэлие этого прогера выкинули из дефолтов
> после пачки cve вот это действительно впечатляюще. как и то, что его до сих пор
> не забанили в LKMLОх, иди уже, переписывай вон фрибзду на хруст, или, вот - лучше на яву сразу, чтоб два раза не вставать.
В идеале - использовать Tiny Core Linux, а весь юзерспейс держать на Джаве.
> В идеале - использовать Tiny Core Linux, а весь юзерспейс держать на Джаве.Чудак, купи уже себе андроид и не парься. Получишь примерно это как раз.
Я пишу с firefox 113, прошу держать в курсе о пачках cve
> как и то, что его до сих пор не забанили в LKMLа кто тогда кот писать будет? Нет кота - нет взносов от платиновых, Линусу нечем кормить свою дочку, а она - жрьоооот.
А тут вообще вон - оптимизации, понимать надоть! Тут платиновые в очередь выстроятца.
Ждем новые уязвимости
Нинидо, процессоры превращаются в тыкву быстрее чем успевают выпускать новые
Скорее неприятные тяжело воспроизводимые и еще тяжелее исправляемые баги
А потом полезут побочные эффекты его экспериментов. Потом окажется что эти блокировки не просто так стояли. Просто тот кто делал изначальное решение уже не помнит или не в деле. И не может сказать причину принятия решения.
> полезут побочные эффектыСовершенно внезапно для экспертов, побочным эффектом планировщика ввода-вывода является запись в файлы.
планировщик ввода-вывода - файлами оперирует?
Он куда важнее этих мелочей. Он говорит когда эти операции произойдут и в каком порядке. От балды куда-то в память писать задача нехитрая, решается тысячью и одним способом. Да хоть выходом за пределы массива.
Определение терминов "побочный эффект" и "ввод-вывод" несложно найти самостоятельно.
> Определение терминов "побочный эффект" и "ввод-вывод" несложно найти самостоятельно.Тогда надо указать "дебилу", который засунул документацию по ио-шедуллеру в раздел блок, чтобы он исправил и перенес в раздел файлсистемс.
https://docs.kernel.org/block/index.html
>> Определение терминов "побочный эффект" и "ввод-вывод" несложно найти самостоятельно.
> Тогда надо указать "дебилу", который засунул документацию по ио-шедуллеру в раздел блок,
> чтобы он исправил и перенес в раздел файлсистемс.
> https://docs.kernel.org/block/index.htmlЖду ссылку на твоё письмо в LKML.
> Жду ссылку на твоё письмо в LKML.так это по вашей логике ио-шедуллер оперирует файлами, вот вы и пишите :)
>> Жду ссылку на твоё письмо в LKML.
> так это по вашей логике ио-шедуллер оперирует файламиЭто по твоей логике так, потому что у тебя файлы лежат в папочке, а не в ФС на блочном устройстве.
> Это по твоей логике так, потому что у тебя файлы лежат в
> папочке, а не в ФС на блочном устройстве.а шо, вне папочки файлы хоть лежат? :D
Рискну, что опять быдет "Скрыто ботом-модератором"
По поводу -
"причину принятия решения"
- а их надо в коде выражать. Типа - статический ассерт. Или ещё какая проверка\завязка на что-то.
И ещё - а пресловутый здесь раст позволяет кодом выражать причины? (именно кодом а не комментариями в коде)
> а пресловутый здесь раст позволяет кодом выражать причины?Да, позволяет. Но еще удобнее позволяет выражать причины на уровне типов.
Программиорование типами вообще классная штука. Рекомендую попробовать, например оценить удобство `Option` в сравнении с null_ptr.
> Потом окажется что эти блокировки не просто так стояли.
> Просто тот кто делал изначальное решение уже не помнит или не в деле.
> И не может сказать причину принятия решения.Так блокировки ж на месте остались, привет птичкодятлам. Просто работу с ними пересмотрели, что идиотизма стало меньше. Изначально система делала откровенную фигню, тратя дофига времени на какой-то "thrashing".
Эти блокировки стояли потому что интел занёс чтобы процессоры с супермега бустом на 6.6ГГц не троттлили хотя бы пол года с начала продаж.
У Intel троттлинг на буст частоты сдела так что бы проходить бенчмарки с максимальным ускорением, а дальше включается троттлинг. Если запускать длинные бенчмарки или несколько раз подряд прогнать один и тот же бенчмарк то скорость процессора начинает падать на глазах.
На ведроидах висит демон, отслеживающий запуски популярных бенчмарков в тупую по названию, и передающий ядру параметры для тюнинга под конкретный бенчмарк, стоит пересобрать апкшечку с другим названием и результаты падают.
А пруфы есть?
Ищи в прошивке, демон зовется что то вроде com.mediatek.mtkpower, конфиги с тюнингом хранятся в открытую в .xml файлах в etc, вроде power_config.xml, удаляешь конфиги и результат в бенчмарках тоже падает.
> Ищи в прошивке, демон зовется что то вроде com.mediatek.mtkpower,Тогда это не "на андроидах" а "медиатек мухлюет в бенчмарках" называется. Даже вот систему загадили каким-то демоном который все портит, но, вот, позволяет приврать в бенчах.
Почему приврать? Потому что остальные задачи такой перфоманс не увидят - и вас надули.
> конфиги с тюнингом хранятся в открытую в .xml файлах в etc, вроде power_config.xml, удаляешь
> конфиги и результат в бенчмарках тоже падает.Точнее, становится более честным и без накруток - похожим на то что реальные программы увидят. А так то конечно сам себя не похвалишь - никто не похвалит. Теперь к китайским ваттам и гигагерцам добавились китайские результаты бенчмарков.
Ну первой начала Nvidia в своих дровах. Давно.
Напомнило, лежит у меня телефон, Blackberry KeyOne, так у него в прошивке на уровне iptables были заблокированны IP адреса многих бенчмарков для androidВот часть файла
```
/system/etc $ cat iptables-blacklist.sh
# This file will be removed as per JIRA 844536
# Custom blocking rules as per JIRA AVEN-9297
# Antutu blocked section
iptables -A OUTPUT -d 114.112.93.111 -j REJECT --reject-with icmp-net-unreachable
iptables -A OUTPUT -d 114.112.93.113 -j REJECT --reject-with icmp-net-unreachable
iptables -A OUTPUT -d 114.112.93.203 -j REJECT --reject-with icmp-net-unreachable
iptables -A OUTPUT -d 183.60.153.114 -j REJECT --reject-with icmp-net-unreachable
iptables -A OUTPUT -d 123.125.115.123 -j REJECT --reject-with icmp-net-unreachable
iptables -A OUTPUT -d 76.73.85.186 -j REJECT --reject-with icmp-net-unreachable
# CoreMark( AndEBench ) blocked section
iptables -A OUTPUT -d 198.154.241.10 -j REJECT --reject-with icmp-net-unreachable
...
```
как дебажат race conditions на mutex-ах на таких скоростях? там ведь даже время не замерить, это повлияет на работу и даст невалидные результаты
Синхронизацию отдебажить нельзя в принципе, как и другие редко воспроизводимые проблемы. Сначала долго медитируют на код и проверяют модель, потом детально разбирают баги через логи и корки.
А разбирательство с корками это не дебаг :-)?
Это в основном разбор инцидентов. У автора выше совсем узкое понимание процесса отладки
> Синхронизацию отдебажить нельзя в принципе, как и другие редко воспроизводимые
> проблемы. Сначала долго медитируют на код и проверяют модель, потом детально разбирают
> баги через логи и корки.В кернеле таки есть инструменты для отлова факапов с блокировками. Lockdep, детектор deadlock, все такое.
> Синхронизацию отдебажить нельзя в принципеЭто не так. Любой параллельный процесс может быть сериализован.
логирование не?
Так вам ведь показали цифры. Вот так их замеряют и понимают, что скорость выросла :)
Не знаю как в ядре, в юзерспейсе можно статистический профайлер заюзать: эпизодически тормозишь процесс, чтобы записать его IP, а потом смотришь на какие адреса попадает. Если оно на спинлоках или на залоченных мьютексах много времени проводит, то это легко ловится таким образом. Умозрительно рассуждая, я не вижу проблем такое в ядро тоже запилить. Тот код который под запретом прерываний работает, понятно не удастся так профайлить, но если ты по прерыванию таймера семплы собираешь, то оно автоматически не будет прерывать непрерываемый код, и таким образом ничего не испортит. Данных об этом коде ты не получишь, но и сломать его не сломаешь. Но это умозрительно.
> Не знаю как в ядре, в юзерспейсе можно статистический профайлер заюзать:
> эпизодически тормозишь процесс, чтобы записать его IP, а потом смотришь на какие адресаПитекантроп рассказывал о профилировании. Хотя-бы "perf" из линуха он не видел и поэтому как сие белый человек делает - он ессно не знает. Как и тот факт что в большинстве железок, даже ARM малохольных - много лет есть "HW perf counters". Чтобы всем вон тем - не заниматься.
Железные каунтеры отстой, белые люди хайпуют на них, но у них ведь регистров с гулькин нос. Пускай белые люди решают эти проблемы, пытаясь угадать, где может тормозить. Мы, питекантропы, предпочитаем софтварно мерять, и сразу получать расклад по мастям.> Хотя-бы "perf" из линуха
Совершенно верно, perf тоже умеет в статистический софтварный профайл. Я очень рекомендую белому человеку попробовать, прежде чем трясти тут своими железными каунтерами.
> Железные каунтеры отстой, белые люди хайпуют на них, но у них ведь регистров с гулькин нос.Для счета циклов CPU по моему аж 1 достаточно, на все и вся. И даже совсем без на минималках вроде работает, просто кривее.
И кстати он видит и кишки ядра, и внутренности программ. С именами, если дебаг символы нашел. И вот они, троглодиты. Как на ладони. Можно как раз и посмотреть кто тут жиртрест.
> Пускай белые люди решают эти проблемы, пытаясь угадать, где может тормозить.
> Мы, питекантропы, предпочитаем софтварно мерять, и сразу получать расклад по мастям.Вы что-то полезное сравнимо с сабжем оптимизировали? Волобуев, где ваш патч?!
А с софтварной статистикой ты имеешь, грубо говоря, по счётчику на каждую исполняющуюся инструкцию, и все эти счётчики увеличиваются пропорционально количеству выполнений соответствующих инструкций.> Вы что-то полезное сравнимо с сабжем оптимизировали? Волобуев, где ваш патч?!
Спросил меня "белый" аноним опеннета...
Например так: https://github.com/dvyukov/relacy
Но, как уже написали, в основном в голове.
> В случае с mq-deadline производительность после применения предложенных патчей при использовании NVMe-накопителя увеличилась с 1070К до 2560K операций ввода/вывода в секунду (IOPS), а конкуренция блокировок снизилась с 94% до 23%.Так вот, почему телефоны на Андроиде так тормозят? :)
> Так вот, почему телефоны на Андроиде так тормозят? :)Что за телефон такой, с NVMe? Сколько IOPS он выдает? И зачем это телефону? А так приложуха на электроне тормозит на чем угодно. Хоть на EPYC ее ставь.
Electron приложения работают на андроидах в разы быстрее и без микролагов в интерфейсе по сравнению с их работой на ПК. Сравни например discord.
Телефоны на андроиде тормозят из-за фактора под названием "бюджетный ARM процессор" + бюджетная flash память.У всей продукции apple идут pcie линии и nvme контролеры, но не раскатывайте губу у samsung и стандарта UFS 4.0 скорости записи чтения от половины до двух раз выше айфонов.
Ты видел сколько МБ занимают apk? Там что не приложение от банка то уже 200+ МБ. В каждом свой голосовой помощник, своя телеметрия и куча всего своего проприетарного никак не оптимизированного и собранного в режиме debug.
Нужны года на обкатку. Доверие зарабатывается годами. Даже если Линус примет патчи, на ядре моего дистра это не скажется.
"Мы установим это обновление в период вашей неактивности"
Вы можете выбрать когда, но всё равно это будет в самый неподходящий момент
Как будто в этом есть что-то плохое )
Lock-free структуры данных.
> Lock-free структуры данных.неа. Lock free не значит contention free.
Для таких устройств есть kyber, например. Всё остальное для hdd.
Ну наконец-то теперь хоть по скоростям nvme под линуксом сравняются с windows? Или уже в 5.15 починили через io_uring? Спрашиваю для друга, у меня обычные SSD.