如何知道 Linux 中单个进程有多少可用内存?

如何知道 Linux 中单个进程有多少可用内存?

我有一台专用于 Redis 的 Linux 服务器。Redis 是应该几乎占用了所有内存。我担心 Linux 可能会对 Redis 的内存消耗进行限制。

问题是:如何确定一个单一进程在不被操作系统阻止的情况下到底能占用多少内存?

互联网上的信息相互矛盾。有 overcommit_ratio、ulimit 和许多其他因素可能会影响正确答案。99% 的信息都集中在将资源稀缺的进程的内存限制到少量。而我感兴趣的是确保我的重要大型进程能够顺利使用我将提供的所有大量 RAM。

答案1

在正常情况下,您的 redis 进程应该获得系统上可用的尽可能多的内存(如果有的话,+ 交换)。

Redis 文档 (https://redis.io/topics/admin) 建议将 overcommit 设置为 1(从不检查),这可能有利于它能够分配大部分虚拟内存地址空间,而无需实际使用全部内存。当然,它最终可能会使用过多内存并被 oom-killer(操作系统)杀死 - 请参阅https://stackoverflow.com/questions/20207697/redis-process-was-killed-by-os-is-there-a-bug

相关内容