我們有一個Linux應用程序套件,它由大約3G的共享庫組成,其中許多不同的前端裝載共享庫的各個部分。我們使用24G的機器運行,並經常加載該3G的大部分。我們正在考慮試圖強制所有3G始終駐留在RAM中,以便每個應用都能儘快啓動。強制Linux庫駐留在物理RAM中?
可以這樣做嗎?我們的第一個想法是將二進制文件放在像/ dev/shm這樣的虛擬硬盤上,但是看起來內核可以自由地將內容交換出去,這是我們不想要的。我們可以將swappiness參數減少到0,但是我不認爲我們也想這樣做,因爲文件緩存很好地利用了內存。我們只是想指示這些特定的東西應該始終保持熱度。
有m鎖系統調用,這聽起來完全像我們所希望的,但我不知道如何將它與一個ramdisk整合。
也許我們根本不需要ramdisk,而是一個守護進程,它簡單地映射每個二進制文件的全部範圍,傳遞MAP_SHARED,MAP_LOCKED和MAP_POPULATE?這是否會導致其他進程的未來加載立即訪問相同的物理內存? ld使用mmap和MAP_SHARED加載共享庫是否正確?
任何指針讚賞!還有關於爲什麼這是或不是一個好主意的任何觀察。
爲什麼要「整合[m鎖]有一個ramdisk」?用什麼方法只是使用'mlock()'不能解決你的問題?據我所知,它可以以最簡單的方式完全符合你的要求。 – mkj