linux - 如何找出linux下的空闲物理内存量(在c中)

标签 linux memory-management

假设我想缓存某些计算,但将其同步到磁盘会导致 I/O 损失,这将完全违背缓存的全部目的。

这意味着,我需要能够找出剩余多少物理 RAM(包括缓存内存,假设我可以将其推出并允许一些松弛以增加缓冲)。我查看了/proc/meminfo 并知道如何读取它。我不太确定如何组合这些数字来获得我想要的。不需要代码,一旦我知道我需要什么,我就可以自己编写代码。

我不会在它需要运行的机器上安装 root,但它应该相当安静。没有大量的磁盘 I/O,没有其他进程突然占用大量内存。操作系统是一个相当新的 linux,开启了过度使用。这需要在不明显触发 OOM killer 的情况下工作。

数字不需要精确到兆字节,我假设它大致在 1 到 7 gib 范围内,具体取决于盒子,但接近 100 mb 会很好。

如果估计偏小,那肯定更好。

最佳答案

Unice 具有标准的 sysconf() 函数(OpenGroups man pageLinux man page)。

利用这个函数,可以得到总的物理内存:

unsigned long long ps = sysconf(_SC_PAGESIZE);
unsigned long long pn = sysconf(_SC_AVPHYS_PAGES);
unsigned long long availMem = ps * pn;

关于linux - 如何找出linux下的空闲物理内存量(在c中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883606/

相关文章:

linux - 使用 AWK 打印除第一列之外的所有列

linux - 在 SIGSEGV 上使用 sigaction 处理程序时如何识别页面错误的读取或写入操作?(LINUX)

.net - 如果 .NET 使应用程序占用空间过大,托管内存有哪些优势?

Java 100个左右的并行线程,内存管理

python-3.x - 合并到 1 后删除以前的 pandas 表

c++ - 智能指针和派生类

c - 从套接字读取时出现问题

linux - HAProxy tcp方式源客户端ip

linux - 使用 mongodump 和 mongorestore 的 MongoDB DigitalOcean

c++ - 如何在 C++ 类内存结构中创建 "spacer"?