gpt4 book ai didi

linux - linux下如何控制虚拟内存管理?

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:08 24 4
gpt4 key购买 nike

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

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

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

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

当使用和释放 block 来控制虚拟内存时,是否应该使用 mmap 和 munmap ?这样做的开销是多少?此外,一些同事对分配如此大的 mmap 空间对性能的影响表示担忧。我希望它的行为类似于交换文件,以便只考虑脏页。

最佳答案

mmap/munmap 应该可以解决问题。请注意,修改页表可能会产生不可忽略的开销,并且可能涉及 TLB 缓存刷新,因此您可能希望聚合这些更改,而不是过于频繁地执行这些更改。

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

关于linux - linux下如何控制虚拟内存管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13120303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com