RHEL + можно ли улучшить производительность дисков, настроив параметры ядра?

RHEL + можно ли улучшить производительность дисков, настроив параметры ядра?

у нас есть кластер Hadoop, и мы собираем данные по метрикам, чтобы исследовать поведение замедления в приложениях Spark.

после длительного исследования нашего кластера Hadoop

мы заметили из метрики Prometheus, что node_disk_io_now имеет высокие значения, превышающие норму, и это актуально для всех дисков HDFS на машинах с узлами данных.

определение node_disk_io_now следующее:

node_disk_io_now (поле 9) Единственное поле, которое должно быть равно нулю. Увеличивается по мере поступления запросов в соответствующую структуру request_queue и уменьшается по мере их завершения.

мы хотим знать, может ли настройка параметров ядра дать положительные аспекты производительности дисков.

согласно определению node_disk_io_now, кажется, что слишком много задач ждут в очереди,

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

решение1

В вашем вопросе я не вижу, какой тип диска вы используете, SSD/SAS/NLSAS или гибридный. Это самая важная часть вашего выбора.

Отвечая на ваш вопрос относительно параметров ядра, я бы сказал, что да, есть некоторые параметры, с которыми вы можете поиграться, чтобы найти наиболее подходящие для вашего кластера.

Важной частью оптимизации ввода-вывода является планировщик ввода-вывода. В текущих ядрах Linux есть три планировщика ввода-вывода.

NOOP (ФИФО):Используется для хранилищ типа SAN, SSD, где устройство хранения само по себе достаточно интеллектуально, чтобы заботиться о собственной оптимизации.

КРАЙНИЙ СРОК:В целом хорошо для файловых серверов и серверов баз данных. Вам нужно подумать, увеличиваете ли вы пропускную способность или задержку. Или вы можете увеличить запросы на чтение или наоборот.

CFQ:Не рекомендуется для серверов, подходит для использования на настольных компьютерах.

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

vm.swappiness
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_expire_centisecs
and....

решение2

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

Также убедитесь, что все ваши монтирования в /etc/fstab имеют одинаковые параметры.

Помимо этого, вам необходимо проверить характеристики ваших дисков и убедиться, что они одинаковы.

Вы также можете проверить размер RAM, так как некоторые файловые системы выполняют интенсивное кэширование в RAM. Не уверен насчет HDFS, но, например, ZFS сильно на это полагается.

Связанный контент