实际内存使用量


15

如果我正确理解,在以下由free产生的输出中,3535m是应用程序可用的实际可用内存,仅使用413m,这是正确的吗?需要对Mem和-/ +缓冲区/缓存行之间的区别进行一些说明。

自由-m
             已使用的可用共享缓冲区总数
内存:3949 3854 95 0 9 3431
-/ +缓冲区/缓存:413 3535
掉期:2047 1322 725

Answers:


16

Mem: total数字是应用程序可以使用的RAM总量。这是系统上安装的总RAM减去:

  • 硬件设备保留的内存(如果图形卡没有自己的RAM,通常为视频内存);
  • 内核本身使用的内存。

该总数包括:

  • free:当前用于任何目的的内存;
  • shared:一个不再存在的概念。留在输出中是为了向后兼容(有一些脚本可解析的输出free)。(在当前系统上,您通常会看到非零值,因为shared已将其重新设置为显示通过共享内存机制显式共享的内存。在较旧的系统上,它包括多个进程映射的文件以及在之后共享的可共享内存fork()。)
  • buffers:由文件支持的内存,并且可以根据需要将其写出到磁盘;
  • cache:由文件支持的内存,可以随时回收(与之不同的buffers是,缓冲区必须在重用之前保存到磁盘上,而高速缓存包含可以从磁盘上重新加载的内容);
  • used -buffers/cache:应用程序使用的内存(未分页交换)。

紧要关头,系统可以在没有缓冲区和缓存的情况下运行,为应用程序保留RAM,并在不进行任何缓存的情况下系统地执行磁盘读写。这些-/+ buffers/cache数字指示应用程序直接使用的RAM量(used列)和应用程序未使用的RAM量(free列)。

尽管变化很大,但正常运行的系统通常将其RAM的一半用于应用程序,另一半用于缓冲区和高速缓存。除非您正在运行专用的文件服务器,否则系统的RAM会超出当前所需要的内存。如果free - buffers/cache数字较低,则表明系统没有足够的RAM(与普遍的看法相反,拥有大量的内存用于缓冲区和缓存对于系统性能很重要,而尝试为应用程序保留更多的内存将使99.99%的系统变慢)。

swap行很简单,它显示了正在使用的交换量(按应用程序或用于tmpfs存储),没有的交换量。


1
“共有:一个不再存在的概念。”-似乎在2011年至2016年之间重新引入了该概念:unix.stackexchange.com/questions/307015/…–
Marisha

3

你是对的。缓冲区和缓存由操作系统使用,但可立即用于应用程序。为了满足下一个内存请求,操作系统愿意使某些缓存无效并丢弃。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.