CPU LOAD AVRG+D状態のプロセス処理方法

CPU LOAD AVRG+D状態のプロセス処理方法

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 -sksdd , sdf

CPU ロード avrg が高いという事実は、"du -sk" が実際にディスクで実行されているためであると疑われます。

だから、私は次の動作について何ができるか疑問に思いました。

1つのオプションは " du -sk"検証を無効にすることですが、HDFSこれを行う方法はわかりません。

D2番目のオプションは、この状態の原因が正確に何であるかを考えることです。

よくわかりませんが...カーネルバージョンをアップグレードすると、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://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/mp/182402

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

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

答え1

負荷平均は純粋なCPU負荷ではなく、共有コンピュータのユーザーがコンピュータがどれほど「忙しい」かをすばやく理解できるように、一般的な指標として導入されました。これが、多くのディスクアクティビティを引き起こすプロセスがCPUを使用するプロセスと同じ方法で計算される理由です。

したがって、これはチューニングに使用したい指標ではありません。

Dファイルシステムが正しくプログラムされていないと、プロセスの状態が発生する可能性があります。これは1990年代のNFSの継続的な悩みでした。パフォーマンスの観点から、シグナリング後のクリーンアップ機能を提供しないファイルシステムと提供するファイルシステムの間に違いはありません。

このD状態は、適切なクリーンアップメカニズムがないファイルシステムにのみ適用され、プログラムが中断または終了した場合でも通常の要求フローに従う必要があります。

関連情報