linux 内存调优

内存调优

    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  | grep  vm.min_free

    (默认3831kiB)

    7调节内存过量使用

    vm.overcommit_memory = 0(有申请时会尽量满足,但会检查内存是否足够)

    1(永远满足申请,不检查内存是否够用)

    2

    vm.overcommit_radio = 50(先用swap与内存的%50)

    8查看申请内存量

    cat /proc/meminfo | grep committed_AS

    9 cache

    查看slab cache (存放内核中的对象)

    less /proc/slabinfo

    slaptop

    vmstat   -m

    查看ARP cache

    ip neighbor  list

    arp -a

    cat /proc/net/arp

    清空网卡arp :ip neighboor  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 | grep pdflush (查看同步进程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次方,与上值对应变化,只需改一处)

    (pidof  vsftpd(查看进程号))

    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   开启

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值