我们可以从我们的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 文件系统
我们怀疑 CPU 负载 avrg 高的事实是因为实际在磁盘上运行的“du -sk”
所以我在想我们可以针对以下行为做些什么
一种选择可能是禁用“ du -sk
”验证HDFS
,但不知道如何做到这一点
第二个选择是思考究竟是什么导致了这种D
状态?
我不确定......但也许升级内核版本将有助于避免 D 状态?要不然? (比如禁用 CPU 线程)等?
更多细节
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 负载平均约为 42-45(15 分钟平均)
参考 :
https://www.golinuxhub.com/2018/05/how-to-disable-or-enable-hyper/
答案1
平均负载并不是纯粹的 CPU 负载,它是作为一个通用指标引入的,以便共享计算机上的用户可以快速了解计算机的“繁忙”程度。这就是为什么导致大量磁盘活动的进程与使用 CPU 的进程的计数方式相同。
因此,这不是您想要用于调整的指标。
D
如果文件系统编程不当,就会发生进程状态,这在 90 年代的 NFS 中一直是令人烦恼的根源。从性能的角度来看,不提供信号后清理功能的文件系统与具有信号后清理功能的文件系统没有区别。
该D
状态仅适用于缺乏适当清理机制的文件系统,并且即使它们所代表的程序已被中断或终止,也必须遵循正常的请求流程。