弹性文件服务 SFS-Linux内核5.4版本之后客户端的NFSv3文件系统顺序读业务场景性能不符合预期,如何处理?:问题原因
问题原因
预读机制:访问内存的速度比访问硬盘或者网络存储快很多,如果每一次访问文件数据都要从磁盘读取数据,就会导致非常严重的时延及等待问题,因此Linux为了提高读取性能,通过预读机制,将文件数据提前预读缓存到内存中,从而大大加快读取性能。参数“read_ahead_kb”为操作系统读业务可提前读取的最大KB数。
在Linux内核5.4版本前,“read_ahead_kb”被设置为挂载参数中rsize的15倍,如果不另外修改挂载参数,则rsize默认设置为1M,“read_ahead_kb”即为15M;在内核5.4及之后版本“read_ahead_kb”被固定为128 KB,导致顺序读场景下预读机制基本不会触发甚至不触发。
因此可以根据上层业务场景,适当调整参数“read_ahead_kb”,以优化大文件顺序读场景的性能。在小文件读取场景中将该值调整过大,可能会导致预读浪费,进而浪费带宽。