Linux
典型軟體的記憶體使用是否被誇大了?
假設多個程序正在使用同一個共享庫(例如 Gtk)。大概,它們
mmap
是庫文件,而在物理上,RAM 是共享的?但是,如係統監視器所示,庫的大小會添加到每個程序的記憶體大小中,從而導致數字誇大。這是準確的嗎?
實際的記憶體統計將共享記憶體與私有記憶體分開,但一些工具在顯示程序記憶體使用情況時會聚合這些記憶體。此外,cgroups 將對該程序的記憶體使用收費,因此如果您在 cgroups 中有最大記憶體限制,這很重要。
這並沒有誇大程序的記憶體使用——它確實在使用該記憶體。但是,如果您查看一組程序的總記憶體使用量,並且只查看組合總數,那麼結果將誇大於實際使用量。沒有簡單的方法可以知道共享庫被重用了多少次,而無需深入研究每個程序正在使用的庫,儘管它應該在 cgroups 中正確計算。
因此,如果您想知道一組程序的真實記憶體使用情況,並且認為將它們全部添加到同一個記憶體 cgroup 中是合理的,那麼這應該會給您一個正確的答案。