再聊linux free命令

网上关于linux free的文章已经非常多了,但是自己每当要用时总觉得不能得心应手,所以有必要再整理一下;也结合线上近期出现的一个由于内存占用导致ssh失败的问题来分析,进一步加深理解;

一、linux free命令介绍

命  令: free
功能说明:显示内存状态。
语  法: free [-bkmotV][-s <间隔秒数>]
补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参数:

 -b  以Byte为单位显示内存使用情况。 
 -k  以KB为单位显示内存使用情况。 
 -m  以MB为单位显示内存使用情况。 
 -o  不显示缓冲区调节列。 
 -s<间隔秒数>  持续观察内存使用状况。 
 -t  显示内存总和列。 
 -V  显示版本信息。

用得最多的还数free -gfree -m:

二、使用示例
[root@TENCENT64 ~]# free -m
                    total       used       free     shared    buffers     cached
第一行: Mem:         64178      30590      33587          0         51       1264
第二行: -/+ buffers/cache:      29274      34903
第三行: Swap:         2039          0       2039

Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。
系统的总物理内存:64178M,但系统当前真正可用的内存并不是第一行free 标记的 33587M,它仅代表未被分配的内存。
【第1行 Mem】:
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。
buffer 与cache 的区别见后面。
total = used + free
【第2行 -/+ buffers/cached】:
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
buffer 与cache 的区别:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use

三、疑点问答
  • 第一行中的used参数对应的是系统真实的内存吗?
    是的,不过该部分包含了系统cachedbuffers内存;
  • 第二行中-/+是啥意思?
    顾名思义就是做加减法,具体的含义分别就是第一行中的used数值减掉第一行中的cachedbuffers后系统所使用的内存和第一行中的free加上第一行中的cachedbuffers后总共使用的内存大小;
    即:
30590 - 51 - 1264 = 29274(基本相等,因为这里的单位是M)
33587 + 51 + 1264 = 34903

由于total = used + free; 根据上面的加减法可得知,第二行【-/+buffers/cache行】也同样满足total = used + free;

  • 怎么看系统内存占用的?
    如果第一行中的【free】比较大,则可认为系统内存占用非常少,说明内存还很充足; 反之,如果系统【free】比较小,但是第一行中的【buffers】和【cached】比较大,则认为操作系统自身分配的内存比较多,一般不用过多关注,操作系统会自身调整内存; 只要不用【swap】的交换空间,就不用担心自己的内存太少;
四、案例分享(未完待续)

昨天登录线上IDC机器,报错信息如下:

ssh_exchange_identification: Connection closed by remote host

通过公司机器健康度采集平台内存占用情况如下:


image.png

在20:00左右内存确实被打满了,导致登录失败,只能重启IDC机器; 幸运的是,部署同样服务的机器还能连接上去,机器used总内存在55g左右,其中应用内存占用28g左右,剩下20多g的内存全被cached+buffers占用;确实有点奇怪,该机器上并没有部署操作文件的服务,为啥cached+buffers不释放呢?
带着这个疑问,我先把服务的堆内存由8g调整到4g,然后再手动清空掉linux分配的缓存:

echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

然后等服务运行几天我再持续观察内存的变化,后续有结果了再来补充。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259