use*_*721 5 concurrency performance mmap solid-state-drive
我有巨大的气象文件.太大了适合公羊.
我需要执行大量并发随机读取.所以,我认为SSD + mmap可以提高性能.
但是什么是并发mmap读取?他们应该如何组织?

是否存在并发原因(线程之间共享的数据结构和资源的争用),导致您希望在不同的线程中独立打开相同的文件?如果不是,那么我看不出这样做的理由。它只会让内核工作起来更加困难,因为必须跟踪一堆不同的内存映射(每个线程一个),这些映射最终都映射到同一个对象,消耗更多的文件描述符(没什么大不了的,除非你有一个非常大的数字)文件的数量),并且当您多次映射相同的文件时会消耗更多的地址空间。
如果我了解在您的场景中,文件大多不经常打开,读取很多,然后很少关闭,我认为线程之间不会有太多争用。因此,请为所有线程全局打开文件。
无论线程之间是否存在对打开文件管理的争用,有一个最重要的原因支持每个进程仅映射每个文件一次,那就是如果您的地址备用只有 32 位。如果您处于 32 位模式,那么如果您的文件很大并且您想要映射其中的重要部分,则地址空间是相当有限的资源。在这种情况下,您肯定需要通过不在两个不同线程中浪费地映射同一文件两次来节省地址空间。
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |