栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux的内存

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux的内存

 free -h
             total       used       free     shared    buffers     cached
Mem:    7.6G       3.7G       3.9G        34M       642M       1.5G
-/+ buffers/cache:       1.6G       6.0G 
Swap:   7.8G         0B       7.8G 

total 内存总数: 7.6G
used 已经使用的内存数: 3.7G
free 空闲的内存数: 3.9G
shared 当前已经废弃不用,总是0
buffers Buffer Cache内存数: 642M
cached Page Cache内存数: 1.5G

关系:total = used + free

第2行:
-/+ buffers/cache的意思相当于:
-buffers/cache 的内存数: 1.6G (等于第1行的 used - buffers - cached)
+buffers/cache 的内存数: 6.0G (等于第1行的 free + buffers + cached)

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

sync #释放前最好sync一下,防止丢数据
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分配器中的缓存对象。

centos6中,优化mysql与php后,所占用的内存都是稳定的,但是服务器的内存使用一直在增加,缓存不会主动释放,难道只能用上述方式吗,还是我没有找到具体原因,有待考量

这样看好像是pagecache问题,看看如何优化它

参考 https://blog.csdn.net/u012489236/article/details/115579851
https://www.jianshu.com/p/d7355a840e61
什么时候触发回刷?
脏数据达到多少阈值还是定时触发呢?
内核是如何做到回写机制的

Linux内核在/proc/sys/vm中有透出数个配置文件,可以对触发回刷的时机进行调整。内核的回刷进程是怎么运作的呢?这数个配置文件有什么作用呢?

[root@svn_dev_lan ~]# sysctl -a | grep dirty
vm.dirty_background_ratio = 10
vm.dirty_background_bytes = 0
vm.dirty_ratio = 20
vm.dirty_bytes = 0
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000
page cache

page cache即系统脏页,是系统的io缓存,当数据写入磁盘前会先写入page cache中,然后异步刷入磁盘;写缓存可以提升IO的访问速度,但同时也会增加丢失数据的风险。

从page cache刷到磁盘有以下三种时机:

可用物理内存低于特定阈值时,为了给系统腾出空闲内存;
脏页驻留时间超过特定阈值时,为了避免脏页无限期驻留内存;
被用户的sync()或fsync()触发。
由系统执行的刷盘有两种写入策略:

异步执行刷盘,不阻塞用户I/O;
同步执行刷盘,用户I/O被阻塞,直到脏页低于某个阈值。
在一般情况下,系统先执行第一种策略,当脏页数据量过大,异步执行来不及完成刷盘时,切换到同步方式。

我们可以通过内核参数调整脏数据的刷盘阈值:

vm.dirty_background_ratio,默认值为10。该参数定义了一个百分比。当内存中的脏数据超过这个百分比后,系统使用异步方式刷盘。
vm.dirty_ratio,默认值为30。同样定义了一个百分比,当内存中的脏数据超过这个百分比后,系统使用同步方式刷盘,写请求被阻塞,直到脏数据低于dirty_ratio。如果还高于dirty_background_ratio,则切换到异步方式刷盘。因此 dirty_ratio 应高于dirty_background_ratio。
除了通过百分比控制,还可以指定过期时间:vm.dirty_expire_centisecs,默认值为3000(30秒),单位为百分之1秒,超过这个时间后,脏数据被异步刷盘。

可以通过下面的命令查看系统当前的脏页数量:

cat /proc/vmstat |egrep "dirty|writeback"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751288.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号