linux系统内存缓冲和磁盘预留

1. 系统缓冲

一般情况下,linux会把可用内存的40%的空间作为文件系统的缓存。文件系统缓存同步触发条件:

  • 空闲内存低于阈值时或当空闲内存不足时,需要释放掉一部分缓存,会把脏页都回写到磁盘。
  • 脏页在内存中时间超过阈值时,确保脏页不会无限期的留在内存中。
  • 当用户进程调用sync和fsync系统调用时。

系统对同步时间有最大120秒的限制。如果文件系统不能在时间限制之内完成数据同步,则会发生错误。这通常发生在内存很大的系统上。系统内存大,则缓冲区大,同步数据所需要的时间就越长,超时的概率就越大。

Linux有一些参数可以改变操作系统对脏页的回写行为:

  • vm.dirty_background_ratio是内存可以填充脏页的百分比,当脏页总大小达到这个比例后,系统后台进程就会开始将脏页刷磁盘(vm.dirty_background_bytes类似,只不过是通过字节数来设置)。
  • vm.dirty_ratio是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值。如果脏数据超过这个数量,新的IO请求将会被阻挡,直到脏数据被写进磁盘。
  • vm.dirty_writeback_centisecs指定多长时间做一次脏数据写回操作,单位为百分之一秒。
  • vm.dirty_expire_centisecs指定脏数据能存活的时间,单位为百分之一秒,比如这里设置为30秒,在操作系统进行写回操作时,如果脏数据在内存中超过30秒时,就会被写回磁盘。

查看系统缓冲

# sysctl -a | grep dirty

修改系统缓冲

# sysctl -w vm.dirty_ratio=10
# sysctl -w vm.dirty_background_ratio=5
# sysctl -w vm.dirty_writeback_centisecs=100 

2. 磁盘预留

Linux 系统中,ext 文件系统(包括 ext2、ext3、ext4)都会默认预留 5% 的磁盘空间,用于 root 用户维护系统或记录系统关键日志使用。因此 used 空间加 avail 空间不等于磁盘大小。

查看磁盘预留空间

# dumpe2fs /dev/sda1 | grep -i reserved

调整 /dev/sda1,只预留1%的空间

# tune2fs -m 1 /dev/sda1

3. swap交换空间

swap空间是一块磁盘空间,操作系统使用这块空间保存从内存中换出的操作系统不常用page数据,这样可以分配出更多的内存做page cache。这样通常会提升系统的吞吐量和IO性能,但同样会产生很多问题。页面频繁换入换出会产生IO读写、操作系统中断,这些都很影响系统的性能。这个值越大操作系统就会更加积极的使用swap空间。

查看swap配置

# sysctl -a | grep swappiness 

修改swappniess

# sysctl -w vm.swappiness=0   // 禁止操作系统使用任何的swap空间
# sysctl -w vm.swappines=100  // 操作系统会尽量使用swap空间
  • swappniess很小时,系统能并发的进程或者线程就会减少,但每个进程或者线程运行的速度较快,cpu利用率较好。
  • swappniess很大时,系统并发好,但每个进程或者线程速度较慢。较多IO读写和系统中断会消耗很多cpu资源,此时系统效率较低。

参考:
https://my.oschina.net/u/4278165/blog/4178066/print
https://www.cnblogs.com/howhy/p/6904162.html
https://www.jianshu.com/p/3b6612318c23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值