gpt4 book ai didi

linux - Linux 上的 munmap 性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:14 33 4
gpt4 key购买 nike

我在 RHEL 5.8 上有一个多线程应用程序,它通过 mmap 读取大文件(每个文件大约 500MB)并对它们进行一些处理;一个线程执行 mmap,其他线程执行处理。当文件不再位于文件系统上时,将执行 munmap 以释放内存。我的问题是 munmap(有时关闭文件)会减慢其他线程的速度,在不同的内存上执行操作,所以我想知道是否有更好的方法来实现它。我有 2 个想法:将内存拆分为更小的 block 以 munmap 更小的 block (这甚至可能吗?),或者根本不使用 munmap 并自己分配/释放内存,如果文件不再在文件系统上,则可选择缓存内存块,并将其重新用于下一个文件。感谢您的任何想法。

最佳答案

它变慢的实际原因是 munmap() 在系统调用的整个持续时间内获取 mm->mmap_sem 锁。其他几个操作可能会被此阻塞,例如(但不限于)fork()/mmap()。对于没有为内存中的页面实现无锁 get_user_pages_fast() 操作的架构来说,这一点尤其重要,因为一堆 futex 操作(支持 pthread 原语)将调用 get_user_pages_fast () 并且默认实现将尝试对 mmap_sem 进行读取锁定。

关于linux - Linux 上的 munmap 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819186/

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