假设我想缓存某些计算,但将其同步到磁盘会导致 I/O 损失,这将完全违背缓存的全部目的。
这意味着,我需要能够找出剩余多少物理 RAM(包括缓存内存,假设我可以将其推出并允许一些松弛以增加缓冲)。我查看了/proc/meminfo 并知道如何读取它。我不太确定如何组合这些数字来获得我想要的。不需要代码,一旦我知道我需要什么,我就可以自己编写代码。
我不会在它需要运行的机器上安装 root,但它应该相当安静。没有大量的磁盘 I/O,没有其他进程突然占用大量内存。操作系统是一个相当新的 linux,开启了过度使用。这需要在不明显触发 OOM killer 的情况下工作。
数字不需要精确到兆字节,我假设它大致在 1 到 7 gib 范围内,具体取决于盒子,但接近 100 mb 会很好。
如果估计偏小,那肯定更好。
最佳答案
Unice 具有标准的 sysconf()
函数(OpenGroups man page,Linux 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/