最近在看《 linux 系统编程》书的时候,有提到一个概念,就是 read/write 数据时,数据的大小最好与块大小对齐:比如块大小 1k,那么每次调用 read/write 的数据大小最好是 1k 的整数倍,这样会提高性能
里面提到了一个测试:针对 2m 的数据,每次写 1130 字节会比每次写 1024 字节表现更差,因为 1130 不是 1k 的倍数,即没有与块对齐
这里有个疑问: 每次 read/write 实际上都是针对页缓存操作的,后续由操作系统负责页回写到设备。那用户进程每次写的 batch 更大,不是意味着系统调用会更少,整体开销不是会更少吗?跟块设备进行交互的是块读取和块写入,而这个过程并不是发生在 read/write 的流程里的(不阻塞的意思),而是由内核处理, 那么块对齐的优势是体现在哪个方面?
还是说我哪个点理解有错?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.