Linux

如何判斷 Linux 中單個程序有多少記憶體可用?

  • March 25, 2020

我有一個專門用於 Redis 的 Linux 伺服器。Redis應該佔用幾乎所有的 RAM。我擔心 Linux 可能會對 Redis 的記憶體消耗施加限制。

問題是:如何確定一個程序在沒有作業系統阻止的情況下可能佔用多少 RAM?

網際網路上的資訊是矛盾的。有 overcommit_ratio、ulimit 和許多其他可能影響正確答案的東西。99% 的資訊都集中在資源稀缺的情況下,將程序的記憶體限制在少量。而我有興趣確保我的重要的巨大程序能夠順利使用我將提供的所有巨大的 RAM。

在正常情況下,您的 redis 程序應該獲得與系統上可用的記憶體一樣多的記憶體(如果有的話 + 交換)。

Redis 文件(https://redis.io/topics/admin)建議將 overcommit 設置為 1(從不檢查),這可能有利於它能夠分配大部分虛擬記憶體地址空間而無需實際使用它。當然,它最終可能會使用過多的記憶體並被 oom-killer(作業系統)殺死 - 請參閱https://stackoverflow.com/questions/20207697/redis-process-was-killed-by-os-is-有一個錯誤

引用自:https://serverfault.com/questions/1008159