linux 内存调优
2016-07-08 16:21
344 查看
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
内存调优 1 查看
less /proc/PID/status
less /proc/PID/statm pmap PID(进程号)
memusage 命令 (yum install glibc-utils -y)
ipcs (各种内存使用情况)
sar -R 1 20 (-:消耗 +:回收)
sar -W 1 20 (swap)
sar -B 1 20 (I/O)
sar -r 1 20 (内存)
vmstat -n 1 20 (内存)
valgrind --tool=memcheck 命令 (查看命令内存状况)
2 限制内存
vim /etc/security/limits.conf
user1 hard as 1000 (用户user1所有累加起来,内存不超过1000kiB)
user1 soft as 800 (用户user1一次运行,内存不超过800kiB)
普通用户查询自己的限制
ulimit -a
…(-v) 4500
…(-u) 16384
…(-t) unlimited
调节soft限制
ulimit -v 4000
ulimit -u 16000
ulimit -t 10000
3 查询TLB
x86info -c
dmesg getconf -a
4 提升TLB命中率
(有大量连续数据) 使用大页hugepages
查询大页的chunk size(默认为4MB)
x86info
dmesg
less /proc/meminfo 调整大页
vim /etc/sysctl.conf
vm.nr_hugepage=20(则TLB空间为20*4MB(chunk size)=80MB)
(针对应用程序)文件系统大页
mkdir /my-hugepages
mount -t hugetlbfs none /my-hugepages
(要写入/etc/fstab)
5 跟踪程序使用系统调用及运行资源
yum install strace –y
strace -fc 命令
6 最小保留内存空间(如果常有大内存程序,建议调大)
sysctl -a | grepvm.min_free
(默认3831kiB)
7 调节内存过量使用
vm.overcommit_memory = 0(有申请时会尽量满足,但会检查内存是否足够)
1(永远满足申请,不检查内存是否够用) 2
vm.overcommit_radio = 50(先用swap与内存的%50)
8 查看申请内存量
cat /proc/meminfo | grepcommitted_AS
9 cache
查看slab cache (存放内核中的对象)
less /proc/slabinfo
slaptop
vmstat -m
查看ARP cache
ip neighbor list
arp -a
cat /proc/net/arp
清空网卡arp :ipneighboor flush dev eth0
调节arp大小:软限制 net.ipv4.neigh.default.gc_thresh2 = 512(条记录)
硬限制 net.ipv4.neigh.default.gc_thresh3 = 1024(条记录)
缓存记录net.ipv4.neigh.default.gc_thresh1 = 128(条记录)
每隔多少秒清空一次 net.ipv4.neigh.default.gc_interval = 30 (秒)
查看page cache
less /proc/meminfo
调节page cache(大量一样的请求 调大page cache)
vm.lowmem_reserve_ratio = 256 256 32 (保留多少内存作为pagecache当前 最大 最小)
vm.vfs_cache_pressure=100 (大于100,回收pagecache)vm.page.cluster=3(一次性从swap写入内存的量为2的3次方页) vm.zone_reclaim_mode=0
1(当内存危机时,是否尽量回收内存 0:尽量回收 1:尽量不回收)
查看anon page(匿名页,用来存放一些其他数据,可用于swap)
less /proc/meminfo less /proc/PID/statm
10 查看内存空闲值
free -ltm
使用=used-buffer-cached
空闲=free+buffer+cached
11 将内存,文件系统,磁盘信息进行同步
ps aux | greppdflush (查看同步进程pdflush)
vm.nr_pdflush_threads=2(此为pdflush进程数量,不写则默认会根据I/O自动调整)
(当内存较小,调大pdflush数量可更快同步,但由于内存信息被清空,下次访问相同数据会变慢)
12 脏页
vm.dirty_background_radio=10
(当脏页占内存10%,pdflush工作)
vm.dirty_radio=40
(当进程自身脏页占内存40%,进程自己处理脏页,将其写入磁盘)
vm.dirty_expire_centisecs=3000
(脏页老化时间为30秒 3000/100=30秒)
vm.dirty_writeback_centisecs=500
(每隔5秒,pdflush监控一次内存数量 500/100=5秒)
13 sync
将所有缓存,脏页同步到磁盘,一般敲三次
echo 3 > /proc/sys/vm/drop_caches 回收buffers (可用free -m 查看)
14内存溢出自动杀死进程(SELINUX关)
vm.panic_on_oom=0(计算机自动处理)
1(自行配置处理)(子进程会继承父进程此值)
/proc/PID/oom_adj (-19不可被杀死~15可被杀死)
/proc/PID/oom_score (0~2588672)(2的n次方,与上值对应变化,只需改一处)
(pidofvsftpd(查看进程号)) 15 swap优化
swap尽量放在多个设备,这样多个I/O可同时运作
vm.swappiness=60 (0优先使用cache~100优先使用swap)
swap大小 内存
swap 1~2G 1.5倍 2~8G 1倍 >8G 0.75倍
vm.swap_token_timeout = 300 (秒)
(多久往swap里写一次)
swapon -s 查看
swapoff -a 关闭
swapon -a 开启
内存调优 1 查看
less /proc/PID/status
less /proc/PID/statm pmap PID(进程号)
memusage 命令 (yum install glibc-utils -y)
ipcs (各种内存使用情况)
sar -R 1 20 (-:消耗 +:回收)
sar -W 1 20 (swap)
sar -B 1 20 (I/O)
sar -r 1 20 (内存)
vmstat -n 1 20 (内存)
valgrind --tool=memcheck 命令 (查看命令内存状况)
2 限制内存
vim /etc/security/limits.conf
user1 hard as 1000 (用户user1所有累加起来,内存不超过1000kiB)
user1 soft as 800 (用户user1一次运行,内存不超过800kiB)
普通用户查询自己的限制
ulimit -a
…(-v) 4500
…(-u) 16384
…(-t) unlimited
调节soft限制
ulimit -v 4000
ulimit -u 16000
ulimit -t 10000
3 查询TLB
x86info -c
dmesg getconf -a
4 提升TLB命中率
(有大量连续数据) 使用大页hugepages
查询大页的chunk size(默认为4MB)
x86info
dmesg
less /proc/meminfo 调整大页
vim /etc/sysctl.conf
vm.nr_hugepage=20(则TLB空间为20*4MB(chunk size)=80MB)
(针对应用程序)文件系统大页
mkdir /my-hugepages
mount -t hugetlbfs none /my-hugepages
(要写入/etc/fstab)
5 跟踪程序使用系统调用及运行资源
yum install strace –y
strace -fc 命令
6 最小保留内存空间(如果常有大内存程序,建议调大)
sysctl -a | grepvm.min_free
(默认3831kiB)
7 调节内存过量使用
vm.overcommit_memory = 0(有申请时会尽量满足,但会检查内存是否足够)
1(永远满足申请,不检查内存是否够用) 2
vm.overcommit_radio = 50(先用swap与内存的%50)
8 查看申请内存量
cat /proc/meminfo | grepcommitted_AS
9 cache
查看slab cache (存放内核中的对象)
less /proc/slabinfo
slaptop
vmstat -m
查看ARP cache
ip neighbor list
arp -a
cat /proc/net/arp
清空网卡arp :ipneighboor flush dev eth0
调节arp大小:软限制 net.ipv4.neigh.default.gc_thresh2 = 512(条记录)
硬限制 net.ipv4.neigh.default.gc_thresh3 = 1024(条记录)
缓存记录net.ipv4.neigh.default.gc_thresh1 = 128(条记录)
每隔多少秒清空一次 net.ipv4.neigh.default.gc_interval = 30 (秒)
查看page cache
less /proc/meminfo
调节page cache(大量一样的请求 调大page cache)
vm.lowmem_reserve_ratio = 256 256 32 (保留多少内存作为pagecache当前 最大 最小)
vm.vfs_cache_pressure=100 (大于100,回收pagecache)vm.page.cluster=3(一次性从swap写入内存的量为2的3次方页) vm.zone_reclaim_mode=0
1(当内存危机时,是否尽量回收内存 0:尽量回收 1:尽量不回收)
查看anon page(匿名页,用来存放一些其他数据,可用于swap)
less /proc/meminfo less /proc/PID/statm
10 查看内存空闲值
free -ltm
使用=used-buffer-cached
空闲=free+buffer+cached
11 将内存,文件系统,磁盘信息进行同步
ps aux | greppdflush (查看同步进程pdflush)
vm.nr_pdflush_threads=2(此为pdflush进程数量,不写则默认会根据I/O自动调整)
(当内存较小,调大pdflush数量可更快同步,但由于内存信息被清空,下次访问相同数据会变慢)
12 脏页
vm.dirty_background_radio=10
(当脏页占内存10%,pdflush工作)
vm.dirty_radio=40
(当进程自身脏页占内存40%,进程自己处理脏页,将其写入磁盘)
vm.dirty_expire_centisecs=3000
(脏页老化时间为30秒 3000/100=30秒)
vm.dirty_writeback_centisecs=500
(每隔5秒,pdflush监控一次内存数量 500/100=5秒)
13 sync
将所有缓存,脏页同步到磁盘,一般敲三次
echo 3 > /proc/sys/vm/drop_caches 回收buffers (可用free -m 查看)
14内存溢出自动杀死进程(SELINUX关)
vm.panic_on_oom=0(计算机自动处理)
1(自行配置处理)(子进程会继承父进程此值)
/proc/PID/oom_adj (-19不可被杀死~15可被杀死)
/proc/PID/oom_score (0~2588672)(2的n次方,与上值对应变化,只需改一处)
(pidofvsftpd(查看进程号)) 15 swap优化
swap尽量放在多个设备,这样多个I/O可同时运作
vm.swappiness=60 (0优先使用cache~100优先使用swap)
swap大小 内存
swap 1~2G 1.5倍 2~8G 1倍 >8G 0.75倍
vm.swap_token_timeout = 300 (秒)
(多久往swap里写一次)
swapon -s 查看
swapoff -a 关闭
swapon -a 开启
相关文章推荐
- linux下实现CPU使用率和内存使用率获取方法
- linux 参数优化
- 工作环境配置
- ubuntu安装openssh-server 报依赖错误的解决过程 ubuntu自带的有openssh-client,所以可以通过 1 ssh username@host 来远程连接linux 可
- linux学习6:文件内容查阅
- 在centos7上配置caffe所遇到的一些问题
- linux 服务器卸载和安装jdk(包括openjdk)
- Linux必会原理之软连接文件和硬链接文件的区别
- Linux必会原理之文件删除的原理
- linux原始套接字(1)-arp请求与接收
- linux的端口小结
- 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署
- Linux常用目录含义总结
- 如何查看Linux磁盘空间大小
- Linux启动流程【转载】
- Ubuntu/Linux 下部署Ant攻略
- Linux服务器宕机案例第二则
- linux 内存调优
- CentOS 6.5 搭建 LAMP 环境
- CentOS 配置集群机器之间SSH免密码登录