Network-Share
如何通過網路加速記憶體映射文件?
在 SMB 文件共享上映射文件的記憶體會導致在呼叫返回之前將其全部傳輸。對於大文件,這會導致應用程序長時間鎖定。我該如何解決?
“使用 X 而不是 SMB”是一個有效的答案。
編輯:任何應用程序,任何文件。我不是想解決一個特定的案例。記憶體映射文件是一種打開文件的方式,以便它在應用程序中顯示為工作記憶體的一部分——您可以像訪問數組一樣訪問文件。
這是作業系統實現的工件,
mmap
與使用的網路協議無關(儘管我喜歡在 SMB 上胡扯…)。SMB 不僅能夠從文件中讀取隨機塊,因此沒有理由在請求時無法讀取塊。我目前沒有可訪問的 SMB 伺服器來驗證它,但我確實有一個 NFS 伺服器,我只是嘗試了mmap
一個 1.7GB 的文件,它立即返回,所以至少它肯定不是一些固有的mmap 概念的局限性。