我有一个程序,它大量使用内存映射文件到虚拟内存中,特别是比物理内存大得多的文件。
该计划的表现并不完美。鉴于设置,主要页面错误可能是罪魁祸首。
所以我想知道这有多糟糕,并编写了一个程序来估计主要页面错误的影响。基本上我会绘制几个GB大小的文件并读取一定数量的随机字节,同时测量读取字节所需的时间。
我可以很好地看到整体运行时间以及累积或直方图分析的访问时间的巨大差异,具体取决于文件是否可能不在缓存中(echo 3> / proc / sys / vm / drop_caches),当它在测试程序的第二次运行中已经存在于缓存中时。
此外,我查看/usr/bin/time -v
的输出,但这些数字令人困惑(为简洁而修剪了一些行):
User time (seconds): 0.66
System time (seconds): 3.66
Percent of CPU this job got: 3%
Elapsed (wall clock) time (h:mm:ss or m:ss): 2:17.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1593920
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 7672
Minor (reclaiming a frame) page faults: 93641
File system inputs: 5094600
File system outputs: 200
Page size (bytes): 4096
Exit status: 0
任何人都可以回答以下问题: