在处理较大的文件时,人为地填充缓冲区缓存是否有益?
这是一个场景:需要逐行处理大文件.从概念上讲,很容易并行化任务以使多核机器饱和.但是,由于需要首先读取行(在将它们分发给工作者循环之前),因此整个过程变为IO限制因此更慢.
在实际处理发生时,将文件的全部或部分预先读入缓冲区缓存以获得更快的读取时间是否合理?
更新:我在readahead系统调用中写了一个小的front-end.稍后尝试添加一些基准测试……
解决方法:
要使用整个文件填充缓存:
cat big.file >/dev/null
要使用文件的一部分填充缓存,请按照this comment:
time dd if=big.file of=/dev/null bs=1024k count=XXX skip=YYY
例2.5G文件:
$time rarara big.file 0 2459650481
real 0m13.803s
$sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
$time dd if=big.file of=/dev/null bs=4096 count=600501 skip=0
real 0m14.394s
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!