在我在Linux(Ubuntu 14.4)中运行的C++程序中,我需要读取一个完全缓存在C++向量中的90 GB文件,而我只有125 GB的内存.
当我按块读取文件块时,它会不断导致linux中缓存的mem使用率增加,结果是128 GB内存的50%以上,然后可用内存容易变为50 GB以下.
total used free shared buff/cache available
Mem: 125 60 0 0 65 65
Run Code Online (Sandbox Code Playgroud)
Swap: 255 0 255
所以我发现可用内存然后变为零,文件读取过程几乎停止了,我必须手动运行:
echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
清除缓存的mem,以便恢复文件读取过程.我理解缓存的mem是为了加快再次读取文件.我的问题是如何避免手动运行drop cache命令以确保文件读取过程能够成功完成?