
у нас есть кластер 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 сильно на это полагается.