繁体   English   中英

如何在Linux中控制虚拟内存管理?

[英]How to control virtual memory management in linux?

我正在编写一个程序,该程序使用mmap文件保存组织为64 MB块数组的巨大缓冲区。

这些块用于汇总通过网络从不同主机接收的数据。 结果,事先不知道写入每个块的总数据大小。 在大多数情况下,它只有2MB,但在某些情况下可能高达20MB或更多。

数据不会在缓冲区中保留很长时间。 在不到一秒钟的时间内删除90%,其余的传输到另一台主机。

我想知道是否有一种方法可以告诉虚拟内存管理器,删除数据后内存页不再脏了。

使用并释放块来控制虚拟内存时,我应该使用mmap和munmap吗? 这样做的开销是多少? 另外,一些同事对分配这么大的mmap空间对性能的影响表示关注。 我希望它的行为像交换文件一样,以便仅考虑脏页。

mmap / munmap应该可以解决问题。 请注意,修改页表的开销可能微不足道,并且可能涉及TLB缓存刷新,因此您可能希望汇总这些更改,而不必经常进行。

分配大内存空间会消耗页表项。 只要您不触摸页面,就不会真正分配它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM