我试图了解使用Linux读取系统调用的读写副本的缓冲区大小的选择。虽然我知道您可以在互联网上找到大量的人,这些人会告诉您必须选择多个页面大小,但所有这些,我似乎都找不到一个答案。
如果选择较小的缓冲区大小,则发送许多用于读取/写入文件的I / O请求会增加开销。 但是,如果您选择太大的缓冲区大小,那么相对于4K-64K缓冲区,您将没有任何优势。 为什么100M文件副本的4M缓冲区不比4K缓冲区快? read(2)手册页指出,虽然读取的系统调用读取的字节数少于请求的字节数,但这通常是由于EOF,终止信号等原因引起的,但是它没有提及大小限制。
据我了解,不选择大缓冲区大小的唯一原因是为了节省内存使用,真的吗?
编辑:我问了一位教授,据我所知,这是由于磁盘缓存不足而无法容纳整个请求所致。这对我来说听起来足够好,但是如果有一些可以讨论的细节,我将这个问题悬而未决。