【发布时间】:2021-10-13 13:40:30
【问题描述】:
我创建了一个约 3TB 的二进制文件(位于 AWS EBS 卷上),旨在存储一个 MxN 的双精度矩阵,表示多天的统一财务时间序列。有 M=37932 个不同的时间序列,每个时间序列有 N=10415118 个元素。
我有一个 C++ 程序,它读取特定日期的金融市场数据,创建指向上述二进制文件中适当起始位置的 M 文件指针,然后在在处理金融市场数据时正确的文件指针。
我正在使用一个运行 Ubuntu 16.04 的 72 核 AWS EC2 实例,并且一次在 54 个进程中并行运行上述 C++ 程序(总共有数百个日期要经过)。因此,总共有大约 54*37932=2048328 个文件指针在系统上一次打开。
一段时间后,进程开始卡在不间断的睡眠“D 状态”并挂起。有谁知道为什么会这样?当我并行运行较少的上述进程时,这个问题往往会较少出现。
我在 EBS 卷上也注意到了这一点,可能是它引起了问题?我不确定它是否对 EBS 卷有意义以及是否/如何修复它。
$ sudo xfs_db -c frag -r /dev/nvme2n1
actual 1468060, ideal 16154, fragmentation factor 98.90%
(不确定这是否更适合 ServerFault)
【问题讨论】:
标签: linux amazon-web-services sleep blocking fragmentation