Rhel

CPU LOAD AVRG + 如何處理 D 狀態的程序

  • November 28, 2021

我們可以從我們的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“發生在其他磁碟上,等等,磁碟使用 ext4 文件系統3T``"du -sk``sdd , sdf

我們懷疑我們有高 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 LOAD AVRG 約為 42-45(15 分鐘 avrg)

參考 :

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/

平均負載不是純粹的 CPU 負載,它是作為通用指標引入的,以允許共享機器上的使用者快速查看機器的“繁忙程度”。這就是為什麼導致大量磁碟活動的程序的計數方式與使用 CPU 的程序相同。

因此,這不是您要用於調整的指標。

D如果文件系統程式不當,就會出現處於狀態的程序,這在 90 年代的 NFS 中一直是煩惱的根源。從性能的角度來看,沒有在信號後清理的文件系統和有清理的文件系統之間沒有區別。

D狀態僅存在於缺乏適當清理機制並且必須遵循正常請求流的文件系統,即使它們所代表的程序已被中斷或終止。

引用自:https://unix.stackexchange.com/questions/679416