free命令
- 展示系统中空闲和已经使用的内存数量
- 格式
free [options]
- 使用总结:free命令选项不多,核心在于搞清楚其展示的各列的含义
描述
- free分别展示系统中总的空闲和已经使用的物理内存以及swap内存,还有内核使用的buffers和caches。
- 信息是通过
/proc/meminfo
收集的 - 展示的列为:
名称 | 详解 |
---|---|
total | 总体安装的内存,在/proc/meminfo 中的MemTotal和SwapTotal |
used | 使用了的内存,计算公式为total-free-buffers-cache |
free | 没有使用的内存(/proc/meminfo 中的MemFree以及SwapFree) |
shared | 主要由tmpfs使用的内存(/proc/meminfo 中的Shmem) |
buffers | 内核buffers使用的内存(/proc/meminfo 中的Buffers) |
cache | page cache和slabs使用的内存(/proc/meminfo 中的Cached及SReclaimable) |
buff/cache | buffers和cache之和 |
available | 估算对于新启动应用程序还有多少可用内存,不含swap。不同于cache或者free字段提供的数据,这个字段考虑了page cache,并且由于部分可回收内存slabs仍然在使用中,因此并不是所有可回收内存slab都会被回收。(/proc/meminfo 中的MemAvailable,3.14内核可用) |
- buffers和cache的区别
/proc/meminfo
中的Buffers定义- 给原始磁盘块使用的相对临时存储,这个不应该特别大(20MB这样)
- 就是用来缓存磁盘的数据
- 这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以将多次小的写合并成单次大的写等等
/proc/meminfo
中的Cached定义- 给从磁盘中读取的文件的内存cache(page cache)。不包含
SwapCached
- 就是缓存从文件读取的数据
- 这样,下次访问这些文件数据时,可以直接从内存cache中快速读取,而不需要再次访问缓慢的磁盘
- 给从磁盘中读取的文件的内存cache(page cache)。不包含
/proc/meminfo
中的SwapCached定义- 曾经被交换出去的内存,现在要换入。但是仍然还在swap文件中。
- 如果内存压力高,这些页面没有必要再次交换出去,因为他们已经在swap文件中。这样可以节省IO。
- 曾经被交换出去的内存,现在要换入。但是仍然还在swap文件中。
/proc/meminfo
中的SReclaimable定义- 可能被回收Slab的部分,例如caches。
/proc/meminfo
中的SUnreclaim定义- 在内存压力下不能被回收的Slab的部分
- slab包括两部分,可回收部分就是
SReclaimable
记录的,不可回收部分用SUnreclaim
记录。 - buffers和cache区别总结:
- Buffer 是对磁盘数据的缓存
- 而 Cache 是文件数据的缓存,
- 它们两者都既会用在读请求中,也会用在写请求中。
选项
名称 | 详解 |
---|---|
-b, --bytes | 以B为单位显示内存数量 |
-k, --kibi | 以KiB为单位显示内存数量,这个是默认的 |
-m, --mebi | 以MiB为单位显示内存数量 |
-g, --gibi | 以GiB为单位显示内存数量 |
–tebi | 以TiB为单位显示内存数量 |
–pebi | 以PiB为单位显示内存数量 |
–kilo | 以KB为单位显示内存数量,暗含在–si中 |
–mega | 以MB为单位显示内存数量,暗含在–si中 |
–giga | 以GB为单位显示内存数量,暗含在–si中 |
–tera | 以TB为单位显示内存数量,暗含在–si中 |
–peta | 以TB为单位显示内存数量,暗含在–si中 |
-h, --human | 将所有的输出字段自动最短的三位数字的单元并显示单位。使用的是2的1024次方的单位 |
-w, --wide | 切换到宽模式。宽模式产生超过80字符的行。这个模式下,buffers和cache在两个单独的列中显示 |
-c, --count count | 显示结果count次数,需要-s选项 |
-l, --lohi | 展示详细的低和高内存统计数据 |
-s, --seconds delay | 延迟delay秒之后持续显示。delay可以用任意浮点数,因为里面用的是usleep(3) 所以支持小于1秒的 |
–si | 使用10的幂的单位而不是2的1024次的单位 |
-t, --total | 增加一行展示各列的总数 |
–help | 帮助 |
-V, --version | 版本 |