XFS:kmem_alloc中可能的内存分配死锁

我正在执行数据分析,需要使用R编程语言(特别是bigmemory软件包)将大约112GB的大数据matrix加载到内存映射文件中(请参阅https://cran.r-project.org/web/packages/bigmemory /index.html )。 matrix有80664列和356751行。

数据存储由NFS挂载的XFS文件系统组成。

XFS挂载选项是:

 xfs noatime,nodiratime,logbufs=8,logbsize=256k,largeio,inode64,swalloc,allocsize=131072k 

NFS正在使用以下选项导出FS:

 rw,async,no_subtree_check,no_root_squash 

NFS客户端正在使用这些选项安装FS:

 defaults,async,_netdev 

在加载文件之后,计算节点变得无响应(包括群集上的其他节点),文件服务器日志报告以下错误:

 XFS: possible memory allocation deadlock in kmem_alloc (mode:0x250) 

我可以通过像这样删除caching来解决这个问题:

 echo 3 > /proc/sys/vm/drop_caches 

文件服务器有16 GB的内存。

我已经阅读了以下博客:

https://blog.codecentric.de/en/2017/04/xfs-possible-memory-allocation-deadlock-kmem_alloc/

然而,这个问题并不是由于碎片化,因为我写信给的文件系统报告的碎片率低于2%。

所以,由于上面的XFS错误,我认为文件服务器内存不足,因为它无法处理当前任务发出的IO请求数量。

除了周期性地放弃caching(例如,通过cron )之外,还有更长久的解决scheme吗?

先谢谢您的帮助。

编辑:客户端和服务器上的CentOS 7.2。

在客户端和服务器上编辑#2:Kernel 3.10.0-229.14.1.el7.x86_64。

我相信目前修订的CentOS 7有内核3.10.0-693.2.2.el7和更新的XFS用户空间工具。 有什么理由你不在更当前的操作系统? 您指定的版本可以追溯到2015年。