Linux CentOS 中断不可能な D 状態はハードウェアの不良が原因の可能性

Linux CentOS 中断不可能な D 状態はハードウェアの不良が原因の可能性があるそうです。

 

こちら

 

複数日にわたる均一な財務時系列を表す倍精度の MxN 行列を保存することを目的とした、最大 3TB のバイナリ ファイル (AWS EBS ボリューム上に配置) を作成しました。M=37932 個の異なる時系列があり、それぞれに N=10415118 個の要素があります。

特定の日付の金融市場データを読み取り、前述のバイナリ ファイル内の適切な開始位置を指す M ファイル ポインターを作成し、適切なファイル ポインターの位置に目的の時系列データを書き込む C++ プログラムがあります。金融市場データを処理するためです。

私は、Ubuntu 16.04 を実行している 72 コアの AWS EC2 インスタンスを使用しており、上記の C++ プログラムを一度に 54 プロセスで並行して実行していました (合計で数百の日付を実行する必要があります)。つまり、合計で約 54*37932=2048328 個のファイル ポインターがシステム上で同時に開かれたことになります。

しばらくすると、プロセスが中断不可能なスリープ「D 状態」でスタックし始め、ハングするだけになりました。これがなぜ起こるか知っている人はいますか? 前述のプロセスを並行して実行する回数が少ないほど、この問題は発生しにくくなる傾向があります。

EBS ボリュームでもこれに気付きました。もしかしたら、それが問題を引き起こしているのでしょうか? これが EBS ボリュームにとって意味があるかどうか、また修正する必要があるかどうか、また修正する必要があるかどうかはわかりません。

$ sudo xfs_db -c frag -r /dev/nvme2n1 
actual 1468060, ideal 16154, fragmentation factor 98.90%
(代わりにこれが ServerFault に適しているかどうかはわかりません)

 

 

通常、プロセスが D 状態のままになるのは、ハードウェアの不良が原因とのこと。この状態が続く要因が見当たらない場合は、ハードウェア側を調査するのも一つかもしれません。

 

中断不可能な D 状態は、ディスク ドライバがディスク内のデータを探しているときに、プロセスを続行するためにディスクが待機する必要がある場合に開始されます。通常、プロセスが D 状態のままになるのは、ハードウェアの不良が原因です (使用しているプラ​​ットフォームではこのようなことは起こらないはずです) が、最悪の事態は、たった 1 つのファイルに 3 テラバイトものログ データが存在することです。これは奇妙であるだけでなく、すべての卵を同じかごに入れているため、ハードウェアの障害で死亡することを余儀なくされます。データを記述し、履歴データを含むおそらくいくつかのディレクトリにこの巨大なデータを適用する方がよいでしょう。行列を説明する一連のテキスト ファイルは、データを保存するためのはるかに安全で信頼性の高い方法であり、データ構造について少し考えれば、おそらく適切な圧縮を行うこともできます。

マトリックスを処理するためにアマゾンのサービスに注文した素晴らしいシステムについて説明しているだけなので、これ以上のことはできません...しかし、そこに保存したものについては説明していません。あなたが今持っているコンピューターではデータをまったく処理できないため、Amazon にもっと大きなコンピューターを依頼することを勧めるしかありません。データをより適切に再構成すればメッシュは改善される可能性がありますが、完全に活用されていない素晴らしいシステムを説明しただけになってしまいます。

 

クラウドだと発生することは少ないかもしれません。

 

linux - Many open files leading to uninterruptible sleep "D state" - Stack Overflow

 

【2023改良型】 イヤホン 有線イヤホン 3.5mmジャック ノイズキャンセリング マイク付き 通話可能 ハイレゾ クリア通話 音量調節 ステレオイヤフォン ヘッドホン 全ての3.5mmインターフェース機器に対応できます