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

Linux kernel 使用NFS导出FAT分区时内存不足,linux-kernel,nfs,fat,Linux Kernel,Nfs,Fat,使用NFSv3服务器将数据传输到FAT分区数小时后,服务器没有剩余的可用内存 发生了什么: 对于每个NFS写入命令,NFS守护进程都会打开文件,写入 收到数据并发布文件 使用flush选项装入FAT分区时,会调用 对于名为“拥塞”的函数,请等待每个文件的发布。这 该功能最多可等待100毫秒 我们使用的内核是3.16版,我们没有 使用2.6.37版时出现问题。我发现其中一个 它们之间的区别在于3.6版的fput 函数(由nfsd调用)使用工作队列发布文件 问题在于,NFS守护进程可能必须处理比

使用NFSv3服务器将数据传输到FAT分区数小时后,服务器没有剩余的可用内存

发生了什么:

  • 对于每个NFS写入命令,NFS守护进程都会打开文件,写入 收到数据并发布文件
  • 使用flush选项装入FAT分区时,会调用 对于名为“拥塞”的函数,请等待每个文件的发布。这 该功能最多可等待100毫秒
  • 我们使用的内核是3.16版,我们没有 使用2.6.37版时出现问题。我发现其中一个 它们之间的区别在于3.6版的fput 函数(由nfsd调用)使用工作队列发布文件
问题在于,NFS守护进程可能必须处理比FAT文件系统所能释放的文件更多的NFS写命令。 工作队列可能会增长,直到内存已满。 在我们的例子中,内存以100MB/小时的速度填充,传输速率为50Mbits/s

我正在寻找一种方法来避免这个问题,我正在考虑将拥塞等待超时从100ms减少到10ms

有人知道为什么选择100ms以及降低该值是否安全吗?

仅供参考,提交时引入了FAT文件系统刷新选项