网易首页 > 网易号 > 正文 申请入驻

详解CentOS的free命令

0
分享至

1.在CentOS6及以前的版本中

在CentOS6及以前的版本中,free命令输出是这样的:

$free -m
total used free shared buffers cached
Mem: 1002 769 233 0 62 421
-/+ buffers/cache: 286 716
Swap: 1153 0 1153

第一行

系统内存主要分为四部分:used(程序已使用内存),free(空闲内存),buffers(buffer cache),cached(Page cache)。

系统总内存total = used + free; buffers和cached被算在used里,因此第一行系统已使用内存used = buffers + cached + 第二行系统已使用内存used由于buffers和cached在系统需要时可以被回收使用,因此系统可用内存 = free + buffers + cached;

shared为程序共享的内存空间,往往为0。

第二行

正因为buffers和cached在系统需要时可以被回收使用,因此buffer和cached其实可以可以算作可用内存,因此:

系统可用内存,即第二行的free = 第一行的free + buffers + cached。

系统已使用内存,即第二行的used = total - 第二行free

第三行

swap内存交换空间使用情况

2. CentOS7及以后

CentOS7及以后free命令的输出如下:

# free -m
total used free shared buff/cache available
Mem: 3440 213 2276 168 950 2778
Swap: 0 0 0

buffer和cached被合成一组,加入了一个available,关于此available,文档上的说明如下:
•MemAvailable: An estimate of how much memory is available for starting new applications, without swapping.

即系统可用内存,之前说过由于buffer和cache可以在需要时被释放回收,系统可用内存即 free + buffer + cache,在CentOS7之后这种说法并不准确,因为并不是所有的buffer/cache空间都可以被回收。

即available = free + buffer/cache - 不可被回收内存(共享内存段、tmpfs、ramfs等)。

因此在CentOS7之后,用户不需要去计算buffer/cache,即可以看到还有多少内存可用,更加简单直观。

3. buffer/cache相关介绍

什么是buffer/cache?

buffer 和 cache 是两个在计算机技术中被用滥的名词,放在不同语境下会有不同的意义。在 Linux 的内存管理中,这里的 buffer 指 Linux 的内存: Buffer cache 。这里的 cache 指 Linux 内存中的: Page cache 。翻译成中文可以叫做缓冲区缓存和页面缓存。在历史上,它们一个( buffer )被用来当成对 io 设备写的缓存,而另一个( cache )被用来当作对 io 设备的读缓存,这里的 io 设备,主要指的是块设备文件和文件系统上的普通文件。但是现在,它们的意义已经不一样了。在当前的内核中, page cache 顾名思义就是针对内存页的缓存,说白了就是,如果有内存是以 page 进行分配管理的,都可以使用 page cache 作为其缓存来管理使用。当然,不是所有的内存都是以页( page )进行管理的,也有很多是针对块( block )进行管理的,这部分内存使用如果要用到 cache 功能,则都集中到 buffer cache 中来使用。(从这个角度出发,是不是 buffer cache 改名叫做 block cache 更好?)然而,也不是所有块( block )都有固定长度,系统上块的长度主要是根据所使用的块设备决定的,而页长度在 X86 上无论是 32 位还是 64 位都是 4k 。

明白了这两套缓存系统的区别,就可以理解它们究竟都可以用来做什么了。

什么是 page cache

Page cache 主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有 read / write 操作的时候。如果你仔细想想的话,作为可以映射文件到内存的系统调用: mmap 是不是很自然的也应该用到 page cache ?在当前的系统实现里, page cache 也被作为其它文件类型的缓存设备来用,所以事实上 page cache 也负责了大部分的块设备文件的缓存工作。

什么是 buffer cache

Buffer cache 则主要是设计用来在系统对块设备进行读写的时候,对块进行数据缓存的系统来使用。这意味着某些对块的操作会使用 buffer cache 进行缓存,比如我们在格式化文件系统的时候。一般情况下两个缓存系统是一起配合使用的,比如当我们对一个文件进行写操作的时候, page cache 的内容会被改变,而 buffer cache 则可以用来将 page 标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。这样,内核在后续执行脏数据的回写( writeback )时,就不用将整个 page 写回,而只需要写回修改的部分即可。

如何回收 cache ?

Linux 内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对 buffer / cache 的释放。尤其是被使用更多的 cache 空间。既然它主要用来做缓存,只是在内存够用的时候加快进程对文件的读写速度,那么在内存压力较大的情况下,当然有必要清空释放 cache ,作为 free 空间分给相关进程使用。所以一般情况下,我们认为 buffer/cache 空间可以被释放,这个理解是正确的。

但是这种清缓存的工作也并不是没有成本。理解 cache 是干什么的就可以明白清缓存必须保证 cache 中的数据跟对应文件中的数据一致,才能对 cache 进行释放。所以伴随着 cache 清除的行为的,一般都是系统 IO 飙高。因为内核要对比 cache 中的数据和对应硬盘文件上的数据是否一致,如果不一致需要写回,之后才能回收。

在系统中除了内存将被耗尽的时候可以清除缓存以外,我们还可以使用下面这个文件来人工触发缓存清除的操作:

[root@tencent64 ~]# cat /proc/sys/vm/drop_caches
1

方法是:

echo 1 > /proc/sys/vm/drop_caches

当然,这个文件可以设置的值分别为 1 、 2 、 3 。它们所表示的含义为:

echo 1 > /proc/sys/vm/drop_caches:

表示清除 pagecache 。

echo 2 > /proc/sys/vm/drop_caches:

表示清除回收 slab 分配器中的对象(包括目录项缓存和 inode 缓存)。 slab 分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的 pagecache 。

echo 3 > /proc/sys/vm/drop_caches:

表示清除 pagecache 和 slab 分配器中的缓存对象。

本文地址:https://www.linuxprobe.com/centos-free-command.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
离谱!老人未消费在星巴克休息,嫌吵闹怒砸星巴克,商家回应

离谱!老人未消费在星巴克休息,嫌吵闹怒砸星巴克,商家回应

看晓天下事
2024-05-23 15:41:14
养老金调整:企退和事退同涨3.6%,企退涨108,事退涨180,真假?

养老金调整:企退和事退同涨3.6%,企退涨108,事退涨180,真假?

社保精算师
2024-05-24 07:06:14
“宁愿自己进集中营也要反华!”这帮人到底是什么脑回路

“宁愿自己进集中营也要反华!”这帮人到底是什么脑回路

怪口历史的K先生
2024-04-16 20:45:58
广州小升初,很羡慕越秀区的“统考统改”,家长少焦虑,少出钱

广州小升初,很羡慕越秀区的“统考统改”,家长少焦虑,少出钱

解说阿洎
2024-05-24 18:37:06
这谁顶得住嘛!杨紫这身材,这才是尤物啊!

这谁顶得住嘛!杨紫这身材,这才是尤物啊!

冷却爱情
2024-04-19 10:10:08
长江电力股价创历史新高,给人的启示。

长江电力股价创历史新高,给人的启示。

股海风云大作手
2024-05-24 07:54:01
台海演习出现敏感科目!明显不是为台军准备,解放军打明牌了?

台海演习出现敏感科目!明显不是为台军准备,解放军打明牌了?

看度时政观望
2024-05-24 10:43:49
“轰轰烈烈”的大食堂,突然没了音讯,有什么不对劲儿的吗?

“轰轰烈烈”的大食堂,突然没了音讯,有什么不对劲儿的吗?

花小萌和你聊情感
2024-05-22 07:10:28
35℃!福建天气疯狂反转!暴雨、冰雹、强对流马上还要来……

35℃!福建天气疯狂反转!暴雨、冰雹、强对流马上还要来……

鲁中晨报
2024-05-24 20:46:19
球迷:二哥退役了赛后说的 李晓旭亲自回应:我可没说

球迷:二哥退役了赛后说的 李晓旭亲自回应:我可没说

直播吧
2024-05-24 17:15:14
真是开了眼了!央视曝光!看看你还敢在直播间买这些衣服吗?

真是开了眼了!央视曝光!看看你还敢在直播间买这些衣服吗?

娱乐的小灶
2024-05-24 13:20:51
法国有点慌:奥运不足100天,准备得稀烂,俄罗斯又来打擂台

法国有点慌:奥运不足100天,准备得稀烂,俄罗斯又来打擂台

路平说
2024-05-04 21:59:55
真被张召忠说中了?掏空国库建造的2艘航母,如今彻底沦为废铁

真被张召忠说中了?掏空国库建造的2艘航母,如今彻底沦为废铁

高山非凡创作
2024-05-16 07:48:51
巴基斯坦双胞胎姐妹,一个嫁中国,一个留巴,6年后差距一目了然

巴基斯坦双胞胎姐妹,一个嫁中国,一个留巴,6年后差距一目了然

嘿哥哥科技
2024-05-23 20:35:31
伊朗总统座机失事后,飞行员的电话为何接通?

伊朗总统座机失事后,飞行员的电话为何接通?

中国新闻周刊
2024-05-23 19:04:10
俄媒:普京签令,允许使用美国在俄资产补偿因俄罗斯在美资产被没收造成的损失

俄媒:普京签令,允许使用美国在俄资产补偿因俄罗斯在美资产被没收造成的损失

环球网资讯
2024-05-23 22:17:19
短短18天,上海已有3个楼盘出现零认购

短短18天,上海已有3个楼盘出现零认购

魔都安家
2024-05-24 20:04:44
芬兰和立陶宛彻底傻眼,俄罗斯宣布不承认与两国的海上边界

芬兰和立陶宛彻底傻眼,俄罗斯宣布不承认与两国的海上边界

体坛片语
2024-05-22 20:46:31
快看!凯特王妃最新照片曝光,和威廉一起录制节目

快看!凯特王妃最新照片曝光,和威廉一起录制节目

莫叔运动世界
2024-05-23 16:55:56
《歌手2024》两位混子歌手被淘汰,台上三位混子坚持不了多久了

《歌手2024》两位混子歌手被淘汰,台上三位混子坚持不了多久了

阿芒娱乐说
2024-05-24 16:01:48
2024-05-25 00:20:49
linux系统运维之家
linux系统运维之家
科技资讯
1392文章数 7553关注度
往期回顾 全部

科技要闻

对话王小川:我们不跟进大模型价格战

头条要闻

媒体:解放军军演打赖清德个措手不及 美方反应出人意料

头条要闻

媒体:解放军军演打赖清德个措手不及 美方反应出人意料

体育要闻

阿兰,好久不见

娱乐要闻

霍启仁求婚成功,郭晶晶要有妯娌了

财经要闻

白重恩解读中国经济的3个关键问题

汽车要闻

宝马M品牌上新 2024年在华推出近10款高性能车型

态度原创

数码
健康
亲子
艺术
军事航空

数码要闻

极具创意难掩槽点 铭凡V3三合一Windows平板电脑评测

在中国,到底哪些人在吃“伟哥”?

亲子要闻

天热给娃吹空调,忘记这件事,孩子真的爱生病

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

军事要闻

东部战区持续位台岛周边演习最新照片发布

无障碍浏览 进入关怀版