有没有告诉计算机将一个项目保留在ram中,或者至少要尽量避免将其分页到磁盘?我希望能够做到这一点,以确保我的内存部分永远不会去磁盘获取其信息,因为我知道它是需要几乎立即获取但可能无法经常获取的东西
这是用linux。虽然我对其他平台感兴趣,但如果你有答案那么
答案 0 :(得分:6)
这是O / S特定的,但是......
在POSIX世界中,您使用mlock and mlockall表示数据必须保存在RAM中而不是分页。您可能需要严格的用户权限。
请注意Linux默认overcommit政策。如果你想确定你实际拥有了内存的内存,请确保在锁定它之前触摸它并假设它全部在RAM中。
根据您真正关心的原因,您甚至可以完全删除掉掉。根据您的系统交换到的位置(DMA,PIO等),这可能是您性能的唯一保证,无论您在应用程序中执行什么操作。
答案 1 :(得分:0)
您可以在操作系统中关闭分页。在程序级,分页主要是不透明的。您可以使用64位编译程序,以获得额外的可寻址内存。
答案 2 :(得分:-1)
正确的电话是madvise(p, sizeof(*p), MADV_WILLNEED)
。这告诉Linux你将很快需要 *p
。如果它意外地被分页,那么这甚至会导致Linux取消它。
与mlock
不同,此调用可以在没有严格用户权限的情况下完成。