内存文件系统:Hugetlbfs
能够实现使用多种不同的页面大小。
用命令cat /proc/meminfo | grep -i Huge查看是否启用大叶面
[root@hxk1 ~]# cat /proc/meminfo | grep -i Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total为0表示没有启动,HugePages_Free:表示多少空闲大页面,HugePages_Rsvd:已经被分配但是还没用,Hugepagesize:大页面的大小。
启动Hugetlbfs文件系统:编辑/etc/sysctl.conf
添加 vm.nr_hugepages=n即可(n表示数量)。
然后sysctl -p即可生效。
比如我这里设置为 vm.nr_hugepages=20
[root@hxk1 ~]# cat /proc/meminfo | grep -i Huge
HugePages_Total: 20
HugePages_Free: 20
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
已成功启动。
我们可以把大页面当做一个文件系统来使用。
首先找一个挂载目录 mkdir /huge
mount -t hugetlbfs none /huge
这个是不可以自己来使用,得应用于某个应用程序来使用。
strace命令:
后面加命令可以追踪该命令的系统调用
如果加上-c则是追踪系统调用的结果。
——————————————————————————————————————-
strace:
strace COMMAND: 查看命令的syscall
strace -p PID: 查看已经启动进程的syscall
-c: 只输出其概括信息;
-o FILE: 将追踪结果保存至文件中,以供后续分析使用;
——————————————————————————————————————-
如下图:
物理内存的过量使用是以swap为前提的:
可以超出物理内存一部分:
参数vm.overcommit_memory
有三个值
0表示启发式过量,自己决定要不要过量,什么时候过量使用。
1表示总是过量(在数据库尽量不要使用swap,太慢了)
2表示所有的物理内存加上一部分swap
vm.overcommit_ratio可以定义超出内存百分之多少。只有vm.overcommit_memory设定为2才有意义。
slabtop:
可以动态显示slab信息
通过cat /proc/slabinfo
tunables
tumables后面表示可调参数 limit:表示可以被每个cpu缓存的最大对象数目。
batchcount:表示一次性传送到cpu缓存中对象的个数。
sharedfactor:在SMP(对称cpu架构中)共享多少个缓存的。
调整方法:echo ‘调整对象’ 三个值空格空开 > /proc/slabinfo即可。
降低微型内存对象的系统开销
增大slab缓存。
调整网络IO的ARP缓存:
默认情况下ARP缓存都在/proc/net/arp文件当中,软限制为512个条目,硬限制为1024个条目。软限制为可以超过512,但是不能超过硬限制的1024,超过的部分有时间限制。
ip neighbor flush dev ethx 清楚某个设备所记录的缓存条目
对arp缓存做设置
参数: net.ipv4.neigh.default.gc_thresh1:表示当缓存器内的值少于设定值的时候,垃圾回收器不管里面条目是否过期都不进行处理。默认数值是128。
net.ipv4.neigh.default.gc_thresh2:软限制默认512
net.ipv4.neigh.default.gc_thresh3:硬限制默认1024
net.ipv4.neigh.default.gc_interval:一旦超过默认的128或者自己设定的数值。不管是否到达软限制,则进行清理。如果超出软限制,还需要清理超出软限制的达到时间规定的条目。设置的数值表示每隔几秒清理一次。
页面缓存:
主要目的是加速读操作
主要目的是加速读操作
page cache可用缓存目录读取,普通文件的读写操作等
调整page cache参数
vfs_cache_pressure:
0:不回收dentries和inodes;
1-99: 倾向于不回收;
100: 倾向性与page cache和swap cache相同;
100+:倾向于回收;
page-cluster=3:表示一次可以交换八个页面,默认就是3.
1-99: 倾向于不回收;
100: 倾向性与page cache和swap cache相同;
100+:倾向于回收;
page-cluster=3:表示一次可以交换八个页面,默认就是3.
zone_reclaim_mode:1表示内存区域回收功能打开,2表示回收写操作产生的脏页,4表示回收swap页面。
匿名页(anonymous page)
程序数据比如数组,堆中数据,匿名的内存区域,脏内存区域,进程间通信共享的页面。
匿名页是不能被交换出去的。
匿名页的大小=实际内存-共享内存