使用NFS导出FAT分区时内存不足

时间:2016-08-23 15:12:00

标签: linux-kernel nfs fat

使用NFSv3服务器将数据传输到FAT分区几个小时后,服务器没有空闲内存。

会发生什么:

  • 对于每个NFS Write命令,NFS守护程序打开文件,写入 收到的数据和发布文件。
  • 当使用flush选项安装FAT分区时,会有一个呼叫 到每个文件发布上名为congestion_wait的函数。这个 功能可以等待长达100毫秒。
  • 我们使用的内核版本是3.16,我们没有 我们使用2.6.37版时的问题。我发现其中一个 它们之间的区别在于版本3.6的fput function(由nfsd调用)使用工作队列释放文件。

问题是NFS守护程序可能需要处理比FAT文件系统可以释放文件更多的NFS Write命令。 工作队列可以增长,直到内存已满。 在我们的例子中,内存填充速度为100MB /小时,传输速率为50Mbits / s。

我正在寻找一种避免此问题的方法,我正在考虑将congestion_wait超时从100ms减少到10ms。

有人知道为什么选择100毫秒以及减少这个值是否安全?

FYI提交https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/fat/file.c?id=ae78bf9c4f5fde3c67e2829505f195d7347ce3e4引入了FAT文件系统刷新选项。

0 个答案:

没有答案