Мы можем увидеть некоторые параметры, введя «iostat -x -d», rrqm / s и wrqm / s означают слияние для запросов ввода-вывода в секунду. И есть параметр ядра, управляющий слиянием ввода-вывода:
/ sys / класс / блок / имя-устройства / очередь / номера
Согласно Kernel Doc:
Это позволяет пользователю отключить логику поиска, связанную с запросами слияния ввода-вывода на блочном уровне. По умолчанию (0) все слияния включены. Если установлено значение 1, будут выполняться попытки простого слияния с одним нажатием. Если установлено значение 2, никакие алгоритмы слияния не будут пробоваться (включая одноразовый или более сложные поиски дерева / хэша).
Значение 0 и 2 легко понять, но когда дело доходит до 1 с «одним нажатием», я искал в Google, но не было конкретного семантического определения этого. Пожалуйста, помогите объяснить, что именно означает 1 для nomerges. Спасибо.
0 выполняет как простую проверку смежных запросов, так и поиск в структуре данных, 1 выполняет только простую проверку, а 2 не выполняет слияния. Посмотрите на реализацию block / elevator.c в elv_merge ().
Вам необходимо протестировать тяжелую рабочую нагрузку случайного ввода-вывода, чтобы понять, выиграет ли она от отключения слияния. Слияние варианта 2 показало, что пропускная способность на процессорное время увеличилась на доли процента с 2 по сравнению с 1: block: добавлена более строгая семантика без слияния для блочного ввода-вывода
Даже вариант 0 стоит довольно дешево, и множество запросов смежно. Возможно, вам не нужно это менять.