微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为 mmap() 内存手动触发页面错误,用于随机读取的长序列

如何解决为 mmap() 内存手动触发页面错误,用于随机读取的长序列

我正在编写一个应用程序,该应用程序将一个巨大的文件mmap() 放入内存中,并且对于给定的用户输入,对该文件执行一长串确定性随机读取。一个粗略的轮廓:

int* data = mmap(HugeFile);

int sum = 0;
for (int i = 0,ptr = Userinput(); i < LargeNumber; i++)
{
    sum += data[ptr];
    ptr = DeterministicCalculation(ptr);
}

由于频繁出现页面错误,应用程序变慢。并且因为只有在前一个页面错误完成后才会触发下一个页面错误,所以我无法使 SSD 上的磁盘 IO 饱和。

最好,我想做类似的事情

for (int i = 0,ptr = Userinput(); i < LargeNumber; i++)
{
    AsyncPageFault(data[ptr]);
    ptr = DeterministicCalculation(ptr);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。