Мы можем видеть на нашем сервере RHEL 7.6 (версия ядра - 3.10.0-957.el7.x86_64), что следующий процесс находится в состоянии D (они запускаются от пользователя HDFS)

Примечание. Код состояния D означает, что процесс постоянно находится в спящем режиме.

ps -eo s,user,cmd | grep ^[RD]
D hdfs     du -sk /grid/sdj/hadoop/hdfs/data/current/BP-1018134753-10.3.6.170-1530088122990
D hdfs     du -sk /grid/sdm/hadoop/hdfs/data/current/BP-1018134753-10.3.6.170-1530088122990
R root     ps -eo s,user,cmd

Примечание - диски sdj и sdm имеют размер 3T байт, также "du -sk" встречается на других дисках как sdd , sdf и т. д. а диски с файловой системой ext4

Мы подозреваем, что тот факт, что у нас высокая загрузка ЦП, обусловлен тем, что "du -sk" фактически работают на дисках

Поэтому я подумал, что мы можем сделать в отношении поведения ниже

Один из вариантов, возможно, отключить проверку "du -sk" от HDFS , но не знаю, как это сделать

Второй вариант - подумать, что на самом деле вызывает состояние D?

Я не уверен ... но, может быть, обновление версии ядра поможет избежать состояния D? или еще? (например, отключить потоки ЦП) и т. д.?

Подробнее

lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core: 2
Core(s) per socket: 12
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6

И CPU LOAD AVRG составляет около ~ 42-45 (в среднем за 15 минут)

Справка :

https://community.cloudera.com/t5/Support-Questions/Does-hadoop-run-dfs-du-automatically-when-a-new-job-starts/td-p/231297

https://community.cloudera.com/t5/Support-Questions/Can-hdfs-dfsadmin-and-hdfs-dsfs-du-be-taxing-on-my-cluster/m-p/182402

https://community.pivotal.io/s/article/Dealing-with-Processes-in-State-D---Uninterruptible-Sleep-Usually-IO?language=en_US

https://www.golinuxhub.com/2018/05/how-to-disable-or-enable-hyper/

0
yael 28 Ноя 2021 в 17:34

1 ответ

Лучший ответ

Средняя нагрузка — это не просто загрузка ЦП, она была введена как общая метрика, позволяющая пользователям на общих машинах быстро увидеть, насколько «занята» машина. Вот почему процесс, вызывающий большую дисковую активность, считается так же, как и процесс, использующий ЦП.

Таким образом, это не та метрика, которую вы хотите использовать для настройки.

Процессы в состоянии D происходят, если файловая система плохо запрограммирована, это было постоянным источником раздражения в 90-х годах с NFS. С точки зрения производительности нет никакой разницы между файловой системой, в которой нет возможности очистки после сигнала, и файловой системой, в которой она есть.

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

1
Simon Richter 28 Ноя 2021 в 17:43
Так что на самом деле пользователь HDFS запускает «du -sk», какое решение мы можем сделать по этому поводу? , а может как я понял из вашего поста решения этой проблемы нет ?
 – 
yael
28 Ноя 2021 в 17:56
Вы ожидаете, что эти команды du когда-нибудь закончатся? Это проблема? Средняя нагрузка — интересная метрика, но она ничего не значит, если вы используете ее для измерения чего-то еще. Любой поток ЦП, который находится в очереди времени выполнения в ожидании планировщика (в данном случае для ввода-вывода), увеличит среднюю нагрузку, поэтому ожидается то, что вы описываете.
 – 
jsbillings
28 Ноя 2021 в 19:54
, du завершается через некоторое время, иногда через 30 секунд, а иногда и более, как 1-2 минуты (конечно, зависит от размера диска)
 – 
yael
28 Ноя 2021 в 21:25