之前想把系统的日志写入内存当中,无奈默认只能写10M,吓得我赶紧把日志切回到硬盘上。不过紧巴巴的硬盘也不怎么够用。于是还是不死心,看看能不能把内存中日志的容量设置得大一点。于是就有了这篇文章。
做人最要紧呢,就是对自己的认识要足够清晰
怎么样才能知道我的机器上,总共有多少内存呢?虽然买的是云服务器,但是作为一个Linux服务器管理员,机器都给你了还没法解决,总觉得说不过去。于是今天又认识了一个新朋友:free
礼数要到位。
man free
手册上对该命令的描述不多,基本上就是说,这个命令能查看系统上物理内存和swap内存,总共有多少,使用了多少,还剩多少。以及内核使用了多少缓存。这个信息也是通过解析 /proc/meminfo 得来的。
什么是swap内存?描述中提到了我不太熟悉的 swap内存,顺便给大家科普一下。红帽的文档对它有一个说明:
Linux中的swap空间是当物理内存(RAM)耗尽时使用的。如果系统需要更多的内存资源,而RAM已经满了,那么内存中不活跃的页面会被移动到swap空间中。尽管swap空间能够帮机器提供少量的RAM,但是不能把它想成是RAM变多了。swap空间存在于硬盘中,比物理内存的访问速度更慢。
swap空间可以是一个专属swap分区,也可以是一个swap文件,亦或是两者的组合。
所以,听起来,似乎会让人联想到Windows上的虚拟内存的概念。有更专业的解答欢迎留到评论区。
free命令返回的结果分为好几列,分别是:total:总共安装内存容量,来自于 /proc/meminfo 中的 MemTotal 和 SwapTotal
used:已使用的内存容量,计算方法为:total - free -buffers - cache
这里提到了 buffers 和 cache 。两者在内存中,各自承担着不同的角色。
简单说一下区别的话:
cache:
它存储的东西可不止一样,不过最主要的呢,还是保存了硬盘中,最经常访问的数据,以便为系统进程提供更高的读写性能。尽可能最大化地使用内存,并且有一套自己判断该存什么,不该存什么的逻辑,也有一套何时释放内存空间的机制。
buffer:
保存了cache中数据的元数据。如果请求了cache中存在的数据,第一步是检查指向cache中的真实数据的元数据,一旦元数据找到了,内核就能够去获取cache中的真实数据了。
free:未使用的内存容量
shared:通常是 tmpfs 所使用的内存容量
buffers:内核缓冲使用的内存容量
cache:页面缓存和 slabs 使用的内存容量
buff/cache:buffers和cache的总和
available:预估不做swap的话,启动新应用可用的内存空间。
那么列就以上这么多,大家在使用命令的时候,可以各取所需。
命令选项命令选项有很多,来看2个比较常用的:
--si
如果你比较讲究,喜欢标准的程序员单位的话,不用这个选项就很适合您。各个单位之间,都相差1024倍,比如1M是1024K。如果你更习惯整数1000的话,可以带上这个选项。每个单位都差1000倍。
-h即--human
笔者自认为还是个人类,这个选项就是给人类用的。可以根据单位的设置,自动把容量缩小到3位数之内,同时带上对应的单位。
实践实践时间,漏家底的时候到了,看看我电脑上的内存有多大。
太好了,一个G的样子。
同意给笔者加内存的记得长按点赞哈。我们下期不见不散。
,