Linux内存子系统及常用调优参数
1》内存子系统
1>组件:
slab allocator
buddy system
kswapd
pdflush
2>虚拟化环境:
PA:进程地址;
HA:虚拟机地址;
MA:机器地址;
虚拟机转换:PA---->HA
GuestOS(来宾主机),OS(宿主主机);
Shadow PT:影子列表
3>Memory:
TLB:提升性能;
Hugetable page:
使用的文件系统:Hugetlbfs;
启用hugepages:
1)修改/etc/sysctl.conf:
vm.nr_hugepages = n

2) Kernel parameter:
hugepages = n
2》创建hugepages从而被应用所使用(不必明确指定文件系统类型,应用要使用时会自动调用,一般MYSQL的缓存块需要使用大页面):


3》Strace看进程如何运行,执行了哪些系统调用:
1>strace -p PID ***查看启动进程的系统调用;

2>strace 命令:查看命令的系统调用;

strace -c 命令:加入-c可以只输出命令过程中的摘要信息;
-o:将追踪结果保存至文件中,以供后续分析使用;
4》优化内存子系统的使用:
1>尽可能降低微小内存对象的开销;
Slab cache:
2>降低或延迟慢速子系统的服务时间;
Filesystem metadata:buffer cache(slab cache)====>使用buffer cache缓存文件元数据;
Disk IO:page cache====>使用page cache来缓存DISK IO,加速读操作;
Interprocess communications:shared memory====>使用共享内存来完成进程间通信;
Network IO:buffer cache,arp cache,connection ruacking====>使用buffer cache,arp cache和connection tracking提升网络IO性能;
3>设置内存的最小空余KB;
4>注意避免内存过量使用:
物理内存的过量使用是以swap为前提的,可以超出物理内存一部分;

0:不回收dentries和inodes;
1-99:倾向于不回收;
100:倾向性与page cache和swap cache相同;
100+:倾向于回收;
内存溢出(OOM):当内核发现由于发生内存溢出而无法再使用时会强制杀死占用大量内存的进程;
5>调整网络IO的ARP缓存(/proc/net/arp);
5》进程间通信相关内存的调优:
1>进程间通信类型:messages,semaphores,shared memory;

2>查看三者当前的限值:

3>进程间通信管理类命令:
ipcs:查看一些消息队列;
ipcrm:删除某些已经失去作用的消息队列,释放内存;
4>share memory 和messages的相关参数:
shm:
shmmni:系统级别,所允许使用的共享内存段上限;
shmall:系统级别,能够为共享内存分配使用的最大页面数;
shmmax:单个共享内存段的上限;
messages:
msgmnb:单个消息队列的上限,单位为字节,默认是16384;
msgmni:系统级别,消息队列个数上限;
msgmax:单个消息大小的上限,单位为字节;
5>手动清写脏缓存和缓存,然后回收:
sync:
echo s > /proc/sysrq-trigger
回收:
echo 1 > /proc/sys/vm/drop_caches

1 to free pagecache
2 to free dentries and inodes
3 to free pagecache,dentries and inodes
6>Out-of-memory killer:
决定各个进程是否会被杀死的数值oom_score:
-16-15:帮助计算oom_score
-17:disables the oom_killer for that process
6》Swap相关:
1>哪些页面会被swap:
非活动页;
匿名页;
Swap cache:可以有效的避免资源竞争;
2>如何提高swap的性能:
降低swap的think time,意味着我们使用小的swap分区;
降低访问次数,尽量不要使用swap,增大物理内存,不行的话就增加多个swap分区;
降低服务时间;
7》监控内存使用相关命令:
sar -r:查看内存活动情况;
sar -R:内存变换速率;
sar -W:缓存空间活动情况;
sar -B:I/O使用情况,报告页面换进换出;
Linux内存子系统及常用调优参数的更多相关文章
- JVM的常用的调优策略和垃圾回收算法及Tomcat的常用调优参数
jvm调优主要针对堆内存,堆内存分为:新生区.养老区和永久区 永久区存放的是系统jdk自身的interface和class的元数据,所以唯有新生区和养老区具有优化空间. 新生区:伊甸区和幸存者区.所有 ...
- JVM常用调优工具介绍
前言 王子在之前的JVM文章中已经大体上把一些原理性问题说清楚了,今天主要是介绍一些实际进行JVM调优工作的工具和命令,不会深入讲解,因为网上资料很多,篇幅可能不长,但都是实用的内容,小伙伴们有不清楚 ...
- Dubbo性能调优参数及原理
本文是针对 Dubbo 协议调用的调优指导,详细说明常用调优参数的作用域及源码. Dubbo调用模型 常用性能调优参数 参数名 作用范围 默认值 说明 备注 threads provider 200 ...
- Linux TCP/IP调优参数 /proc/sys/net/目录
所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...
- JVM性能调优的6大步骤,及关键调优参数详解
JVM性能调优方法和步骤1.监控GC的状态2.生成堆的dump文件3.分析dump文件4.分析结果,判断是否需要优化5.调整GC类型和内存分配6.不断分析和调整JVM调优参数参考 对JVM内存的系统级 ...
- 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
- 大数据集群Linux CentOS 7.6 系统调优篇
大数据集群Linux CentOS 7.6 系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设置主机hosts文件 1>.修改主机名 [root@node100 ...
- JVM调优参数、方法、工具以及案例总结
这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数.JVM调优方法(流程) ...
- linux分析、诊断及调优的必备“杀器”之一
下面分别列出linux分析.诊断及调优时用到的工具,并分别进行说明,以方便自己和其他同学参考学习,禁止转载. 1.top top - 02:06:59 up 4 days, 17:14, 2 user ...
随机推荐
- 通过Roslyn构建自己的C#脚本(更新版)(转)
http://www.cnblogs.com/TianFang/p/6939723.html 之前写过文章介绍过如何通过Roslyn构建自己的C#脚本,但那篇文章是参考自Roslyn CTP版 ...
- Linux Shell中有三种引号的用法
Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...
- Express 应用生成器
[Express 应用生成器] 通过应用生成器工具 express 可以快速创建一个应用的骨架. 通过如下命令安装,-g意味着安装在全局目录下: 下面的示例就是在当前工作目录下创建一个命名为 myap ...
- chrome input去除黄色背景色
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; border: 1px solid #CCC!impo ...
- 【英宝通Unity4.0公开课学习 】(四)GUI到物理引擎
今天老妈打电话来说和老爸吵架了... 真的是家家都有本难念的经啊.前后帮她分析了个半小时才帮她解开心结...现在想想老爸还是蛮可怜的,连分享的人都木有 讲的GUI都看睡着了...因为想着可以用NGUI ...
- Spring AOP开发
--------------------siwuxie095 Spring AOP 开发 1.在 Spring 中进行 ...
- 在c#中设置Excel格式
生成excel的时候有时候需要设置单元格的一些属性,可以参考一下: range.NumberFormatLocal = "@"; //设置单元格格式为文本 ange.get_Ran ...
- 360随身wifi隐藏ssid方法
360随身wifi隐藏ssid方法 以win7为例,介绍如何隐藏360随身wifi ssid方法 一. 禁止360随身wifi官方驱动自启动方法: 1. 找到360wifi自启动文件: 进入以下 ...
- Linux中chown、chmod、chgrp
1.chgrp (转变文件所属用户组) chgrp(转变文件所属用户组)change group chgrp 用户组 文件名 ###便是这个格了.若是整个目次下的都改,则加-R参数用于递归. 如:ch ...
- Git Submodule 使用简介
参考http://www.diguage.com/archives/146.html 一.添加子模块 从新建一个项目,或者从远处服务器上克隆一个项目,作为“顶级项目”.这里,从 Github 上新建一 ...