内存的调优

最重要的内存调优是保证应用程序保留在主存中,并且避免换页和交换经常发生。
调优的主要路线:

  1. 内核可调参数
  2. 配置大页面
  3. 分配器
  4. 资源控制
内核可调参数

linux可以通过sysctl设置多种可调参数,内核源码中有相关参数的介绍,具体可以参考一下两个地址:
vm.txt
/proc/sys
两个地址是一回事,可能vm.tx是以前的页面,不够美观,第二主要应该是更美观一点吧,谁知道呢,反正内核官网我是没找到第一的入口,另外源码中的文档我更没弄明白是怎么看

在这里插入图片描述
相比较设置参数,可能先要查看现有的配置是什么情况,sysctl -a即可查看所有的参数,除了通过命令直接设置相关参数,也可以配置在/ect/sysctl.conf 文件中

多个页面大小

更大的页面能提高TLB(这个很容易忘记是啥,Translation Lookaside Buffer 转换检测缓冲区,简单理解成页的索引)缓存命中率(增加它的覆盖范围)来提高内存I/O性能。
现代处理器支持多个页面大小,如默认的4KB以及2MB的大页面
设置大页面的方法文档

一个应用程序使用巨页面的方法是内存共享段,并传递SHM_HUGETLBS给shmget();另一个方法创建一个机遇巨页面的文件系统,允许应用程序从中映射内存。其他方法包括传递MAP_ANONYMOUS|MAP_HUGETLB给mmap()并使用libhugetlbfs API。
坦率的讲,上面这段话我没太明白,有一点想法就是,这个和mmap()的使用会不会有影响,如果是的话,那比如部署kafka的服务器是不是可以调一调?

分配器

有多种为多线程应用程序提升性能的用户级分配器可供选用,可以在编译阶段选择,也可以在执行时用LD_PRELOAD环境变量设置。
文中没有列举linux的示例,后续再去百度吧,不过这个分配器看着就有不少文章,目前不太想去多了解

资源控制

基础的资源控制,包括设置主存限制和虚拟内存限制,可以用ulimit实现。
linux中控制组(cgroup)的内存子系统可以提供多种附加控制

选项描述
memory.memsw.limit_in_bytes允许的最大内存和交换空间,单位字节
memory.limit_in_bytes允许的最大用户内存,包括文件缓存,单位字节
memory.swappiness类似vm.swappiness,可以设置于cgroup
memory.oom_control设置为0,运行OOM运用于这个cgroup,设置为1,禁用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值