内存交换区

当操作系统因为没有足够的内存而将一些虚拟内存写到磁盘就会发生内存交换,内存交换对操作系统中运行的进程是透明的,只有操作系统知道特定的虚拟内存地址是在物理内存还是磁盘上?

 

虚拟内存写到磁盘上该如何理解?

操作系统通常允许对虚拟内存和io进行一些控制,我们提供过一些gun/linux上控制它们的办法,最基本的办法是修改/proc/sys/vm/swappiness为一个很小的值,比如0或1,这告诉内核除非虚拟内存完全满了,否则不要使用交换区,下面是如何检查这个值得例子

cat /proc/sys/vm/swappiness

这个值显示为60,这是默认的设置(范围0-100,如果我设置比100大会如何),对服务器而言这是个很糟糕的默认值,这个值只对笔记本使用,服务器应该设置为0

 

另一个选项是修改引擎怎能么读取和写入数据。例如,使用innodb_flush_method=o_direct

另一个选项是使用mysql的memlock配置项,可以把mysql锁定在内存,这可以避免交换,但是也可能带来危险,如果没有足够的可锁定内存,myqsql在尝试分配更多内存时会崩溃,这也可能导致锁定的内存太多而没有足够的内存留给操作系统

 

转载于:https://www.cnblogs.com/lehao/p/3913821.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值