Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.4.3. Noop

Noop помещает запросы в простую очередь типа FIFO (First In First Out). Слияние запросов происходит на блочном уровне. Этот планировщик особенно эффективен для высокоскоростных накопителей.
Ниже рассмотрены его параметры.

Параметры в /sys/block/sdX/queue

add_random
В некоторых случаях издержки обслуживания ввода-вывода для /dev/random измеримы. Тогда этот параметр рекомендуется обнулить.
max_sectors_kb
Этот параметр изменяет максимальный размер запроса и по умолчанию составляет 512 килобайт. Минимально допустимый размер ограничивается размером логического блока, а максимальный размер ограничивается значением max_hw_sectors_kb. Производительность некоторых SSD-дисков может снизиться, если размер запросов превышает размер внутренних блоков SSD. В таких случаях рекомендуется уменьшить значение max_hw_sectors_kb до размера блока. Производительность на этом уровне можно протестировать с помощью iozone и aio-stress, изменяя размер записи, например с 512 Б до 1 МБ.
nomerges
Отключает слияние запросов, что используется для отладки. Слияние запросов способствует улучшению производительности, но его отключение поможет оценить число операций ввода-вывода, которое может быть обработано без необходимости отключения предварительного чтения или выполнения случайного ввода-вывода.
nr_requests
Число запросов чтения или записи в очереди. По умолчанию равно 128, то есть очередь может содержать 128 запросов чтения и 128 запросов записи. Если очередь заполнена, процесс перейдет в состояние ожидания, а при освобождении места в очереди он будет пробужден.
При проектировании приложений, чувствительных к задержкам, рекомендуется уменьшить nr_requests, тем самым ограничив длину очереди команд. После выделения числа запросов, определенных параметром nr_requests, процессы, все еще ожидающие обслуживания, будут переведены в состояние ожидания. Это обеспечивает их равномерное обслуживание и не позволяет одному процессу использовать все ресурсы.
optimal_io_size
Иногда накопители предоставляют информацию об оптимальном размере сегмента ввода-вывода. Это типично для программных и аппаратных RAID, где оптимальный размер равен размеру сегмента чередования. Следует придерживаться значений, кратных рекомендуемым.
read_ahead_kb
Если приложение осуществляет чтение данных из файлов последовательно, операционная система может использовать алгоритм упреждения чтения. Этот алгоритм считывает больше данных, чем было запрошено, и помещает их в кэш, что экономит время на обращение к диску. Недостаток этого подхода состоит в том, что существует вероятность того, что данные не понадобятся, но они уже занимают место в кэше и будут вытеснены только тогда, когда нагрузка на память возрастет. В свою очередь, при наличии нескольких подобных процессов нагрузка на память возрастает значительно быстрее.
Для многопутевых устройств рекомендуется увеличить это значение, например до 8192 килобайт, так как они обычно включают в свой состав несколько физических устройств. Для начала можно присвоить read_ahead_kb значение 128 и корректировать его по мере необходимости.
rotational
SSD-диски не используют вращающиеся пластины в отличие от традиционных жестких дисков. Если устройство не определяет флаг, сообщающий о наличии движущихся деталей, может потребоваться обнулить параметр rotational вручную. Нулевое значение отключает использование алгоритмов снижения времени поиска данных, так как SSD-диски в этом не нуждаются.
rq_affinity
Значение 1 принуждает обработку операций на том же процессоре, где они были сгенерированы. Это может повысить эффективность кэширования данных.