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