假设我想在文件中写入1 GB的数据,比如说ext3使用write(2)系统调用的Linux文件系统,这种情况发生在一个非常繁忙的环境中(许多类似的I/O很简洁).什么是在区间的最佳缓冲区大小,说,[4 kB, 4 MB]这样做,当
O_DIRECT开放标志,或O_DIRECT?请不要"自己检查"答案 - 我想从"文件系统"人那里得到答案.
我需要在txt文件中写入一个进程的结果。这个过程很长,要写入的数据量很大(~150Gb)。该程序运行良好,但问题是 RAM 超载,并且在某个时刻,它会停止。
程序很简单:
ostream f;
f.open(filePath);
for(int k=0; k<nDataset; k++){
//treat element of dataset
f << result;
}
f.close();
Run Code Online (Sandbox Code Playgroud)
有没有办法在不超载内存的情况下写入这个文件?
我在Linux上使用C,我的程序是高CPU密度和I/O密度.使用time命令显示我的程序有很多开销:
real 1m4.639s
user 0m53.929s
sys 0m9.747s
Run Code Online (Sandbox Code Playgroud)
有可能找出'sys 0m9.747s'的成本并减少它吗?
=================================================
如果没有代码这个问题不容易回答,请原谅我,但我的代码太长了,无法在此发布.所以任何提示或线索也会这样做.谢谢