tom*_*ums 3 memory linux arch-linux
我有一个 NAS,带有一个 cutom 网络操作系统和大量运行的守护进程,它们一起形成一个系统来补充 Mobotix IP 摄像机。
最近几周,我遇到了一些问题 - 内置资源监视器显示内存使用量每天增加大约 10%。一旦达到 90%,它就处于 +/- 1% 的范围内。
我也在计算,我称之为优化的内存。也就是说,删除缓冲区并添加缓存,这些每天保持在 20% 左右。
free
截至目前的输出:
total used free shared buffers cached
Mem: 1901072 1731036 170036 0 146228 1207360
-/+ buffers/cache: 377448 1523624
Swap: 1048572 1648 1046924
Run Code Online (Sandbox Code Playgroud)
如您所见,内存几乎已满,但缓存/缓冲似乎占用了大部分内存。
我有一种感觉,这是由于某处内存泄漏引起的,但我不确定。
如何检测哪些进程正在填充缓冲/缓存内存?
这不是问题,Linux 应该这样做。如果您真的遇到内存问题,您会注意到一切运行缓慢,进程被OOM 杀手杀死。
Linux 内核利用未使用的 RAM 进行磁盘缓存。这是一件好事,它使一切运行得更快。该内存仍然可供任何需要它的程序使用,如果其他地方不需要它,它只会用于缓存。这就是为什么分开free
显示的原因buffers/cache
,您应该将它们视为空闲内存。
可用的系统内存的实际金额free
+ buffers
+ cache
,在这个例子中你张贴的170036 + 146228 + 1207360 = 1523624
,是的〜的可用内存1.5G。
这在RedHat 文档中有很好的解释:
在此示例中,可用内存总量为 4040360 KB。进程使用 264224 KB,其他应用程序免费使用 3776136 KB。不要被第一行显示 28160KB 是免费的搞糊涂了!如果您查看使用数据,您会发现大部分内存使用用于缓冲区和缓存。Linux 总是尝试通过将可用内存用于缓冲区(文件系统元数据)和缓存(具有文件或块设备的实际内容的页面)来使用 RAM 来加速磁盘操作。这有助于系统运行得更快,因为磁盘信息已经在内存中,从而节省了 I/O 操作。如果程序或应用程序(如 Oracle)需要空间,Linux 将释放缓冲区和缓存以为应用程序提供内存。 如果您的系统运行了一段时间,您通常会在第一行的“空闲”字段下看到一个小数字。
有关更多信息,请参见此处:
归档时间: |
|
查看次数: |
1096 次 |
最近记录: |