Мейнтейнер блочной подсистемы ядра Linux увеличил число операций ввода/вывода в секунду на 6%, потратив 5 минут на код

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Мейнтейнер блочной подсистемы в ядре Linux Йенс Аксбо (Jens Axboe) сообщил, что смог увеличить число операций ввода/вывода в секунду (IOPS) на 6% (или даже больше для полновесных конфигураций ядер Linux), потратив всего 5 минут на внесение правок в код проекта.

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

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

Hi, When I run my peak testing to see if we've regressed, my test script always does: echo 1 > /sys/block/$DEV/queue/iostats echo 2 > /sys/block/$DEV/queue/nomerges

for each device being used. It's unfortunate that we need to disable
iostats, but without doing that, I lose about 12% performance. The main
reason for that is the time querying we need to do, when iostats are
enabled. As it turns out, lots of other block code is quite trigger
happy with querying time as well. We do have some nice batching in place
which helps ammortize that, but it's not perfect.

This trivial patchset simply caches the current time in struct blk_plug,
on the premise that any issue side time querying can get adequate
granularity through that. Nobody really needs nsec granularity on the
timestamp.

Results in patch 2, but tldr is a more than 6% improvement (108M -> 115M IOPS) for my test case, which doesn't even enable most of the costly block layer items that you'd typically find in a distro and which would further increase the number of issue side time calls.

Jens Axboe

Источник: https://habr.com/ru/news/786944/


Интересные статьи

Интересные статьи

Всем привет! Столкнулся я недавно с одной интересной и не вполне понятной с первого взгляда проблемой в KMDF драйвере, разработкой которого я в данный момент занимаюсь. Опыта в этой сфере у меня не мн...
В этой статье я хочу поделиться рецептом качественного собеседования продолжительностью 1 час. При этом критерий качества исключительно практический: потратив не более часа я готов рекомендовать или н...
Некоторые читатели Хабра, вероятно, не застали период взаимоотношений корпорации Microsoft с Linux, который можно охарактеризовать как «резкое неприятие». Но для многих из нас до сих по...
Возможно, вам знакома утилита cron, которая позволяет планировать запуск различных задач в заданное время. Мы, кроме того, уже говорили о программе incron, которая реагирует не на события...
Нейтрализация пользователя и процесс установки новой ОС Привет, Хабр. Сегодня хотим поделиться опытом миграции одной организации (далее – Заказчик) на отечественную ОС в рамках выполнения тр...