zoukankan      html  css  js  c++  java
  • RHCA442学习笔记-Unit11内存缓存

     
    Unit 11 Memory Caches 内存缓存
     
            学习目标:
     
                  A. 使用内存来改善运行慢的子系统的服务时间
     
    11.1 Strategies for using memory 内存使用策略
    A.      减少内存使用者负载
    a.       slab cache 分配缓存
    B.      减少或延时运行慢的子系统的服务时间
    a.       Filesystem metadata文件系统源数据:buffer cache(slab cache)
    b.       Disk IO: page cache
    c.       Interprocess communications进程间通信:shared memory共享内存
    d.       Network IO: buffer cache, arp cache, connection tracking
    C.      调整内存要注意的:
    a.       怎么样回收页面才能避免内存的压力
    b.       IO速度慢要怎么做?
    1) 对于小的写入调整内存效果不是很明显
    2) 对于大的数据写入使用重排序更有效。
    影响磁盘IO最主要的因素是page cache.
     
                                                         
    11.2  A closer look at demand paging 页面调度
           A.      只有进程要存储数据时才分配页面框给进程
    a.       常驻页面是存放在主存(RAM)里面的
    b.       非常驻页面是放在磁盘上面或者没在使用的。
                       B.允许内存过量使用系统内存
                              a. 对科学计算应用方面很有帮助。
                              b. 有利于执行程序与内存的地址参照
                             c. 当进程存储数据时不会用到Memory(RAM+swap).
         
     
    11.3 Tuning page allocation 页面分配
    A.      参数设置
    vm.min_free_kbytes 内存最小保留空间
    B.      运用
    应用程序会不定期分配和使用大内存块。
    C.      结论:
    a.       减少页面调度的服务时间
    b.       内存最小保留空间不能被其它程序使用。
    c.       内存最小保留空间过大的话会给ZONE_NORMAL造成压力。
     
     
    11.4 Tuning overcommit 调整overcommit
    A.      参数设置
    vm.overcommit_memory:
    a. 0=henuristic overcommit   默认值,程序运行时如内存不够分配则拒绝并报警。
    b. 1=always overcommit     应用程序要多少就分配多少,不管内存够不够。
     
    c. 2=commit all swap plus a percentage of RAM (may be >100)
    vm.overcommit_ratio 默认值为50, swp+RAM*50%
    B.      在/proc/meminfo里查看committed_AS
    作用:评估在当系统负载下需要多少内存以避免内存溢出。
    C.      结论:
    a.       允许内核满足对大虚拟地址空间的请求
    b.       警告:当内存溢出或内存过量使用时进程会崩溃。
     
     
    11.5 Slab cache 缓存分配
    A.        slab用来存放内核当中的表对象。
    a.       频繁申请分配页面的对象减少负担(slab缓存之)
    b.       例如:filesystem metadata(dentry and inode caches)
    B.        监视:
    cat /proc/slabinfo
    slabtop
    vmstat –m
     
    下面命令查看内核是否支持slab:
    grep CONFIG_SLAB /boot/config-*
     
     
    11.6 ARP cache   ARP缓存表
         A. ARP表是用来映射硬件地址与协议地址的(MAC----IP)
             a. ARP表缓存在slab里面( grep arp /proc/slabinfo)
             b. 垃圾过滤器会定时删除表里旧的或过期的表项。
         B.ARP缓存不足的话会导致:
             a. 主机间通讯间歇性延时。
             b. ARP表不稳定.
         C. ARP缓存太大会给ZONE_NORMAL造成压力。
         D. 查看ARP表项:
             ip neighbor list
             cat /proc/net/arp
         E. 清空ARP表
              Ip neighbor flush dev eth0
     
     
    11.7 Tuning ARP cache    ARP缓存调整
         A. Soft upper limit软限制
             net.ipv4.neigh.default.gc_thresh2 默认值512(条) :arp表项条数
              达到这个值后过5秒钟才清除
    B. Hard upper limit 硬限制  
    net.ipv4.neigh.default.gc_thresh3 默认值1024
    C.        表项垃圾清除间隔时间(秒)
    net.ipv4.neigh.default.gc_interval 默认值30秒
     
    注:达到限制值128后每30秒清除一次ARP表
     
     
    11.8 Page cache 页面缓存
    A.      大部份页面活动都是由于I/O操作产生的。
    a. 读文件:文件从磁盘读到内存
    b. 读进来的这些数据页面都放在页面缓存里面
                B. 页面缓存总是会去检查IO请求情况
                    a. 目录读取
                    b. 常规文件读写
                    c. 块设备文件读写
                    d. 访问内存映射文件
                    e. 访问swap 页面。
                C. 页面缓存里面的页存放的都是跟file data 有关的数据.
     
     
    11.9 Tuning page cache 页面缓存调整
    A.      查看分配给页面缓存使用的地址大小 /proc/meminfo
    B.      调整page cache在内存中分配的长度/大小
         vm.lowmem_reserve_ratio   分配给page cache 的大小
         vm.vfs_cache_pressure      虚拟内存回收director和inode缓冲的倾向,越大越易回收。
    C.      调整到达率/完成率
    vm.page-cluster 默认值3,2^3 单位:pages ,必须是2^n,与内存一次交换多少页。
    vm.zone_reclaim_mode 页面回收
     
            
    11.10          Anonymous pages 匿名页
    A.      匿名页里存放的是其它进程的消耗性的数据
    B.      存放的数据跟文件无关,但包括:
    a. 程序数据—阵列,堆地址等等
    b. 匿名内存范围
    c. 脏页
    d. 进程间通讯的共享内存范围
                C. 查看使用量
                   grep Anon /proc/meminfo
                   cat /pro/PID/statm
    D.     匿名页可以与swap交换数据.
    Anonymous pages = RSS – Shared
     
     
    11.11          SysV IPC 进程间通讯
    A.      以下情况比较消耗内存
    a.       Semaphores 信号量 :协调进程间对共享资源的抢占
    b.       Message queues 消息队列:进程间交换信息
    c.       Share memory 共享内存:进程间所要访问的数据在内存当中的同一地方s
    B.      查看SysV共享内存
    ipcs     查看当前正在使用的情况
    ipcs –l    查看共享内存的限制情况
    C.      使用POSIX共享内存文件系统做一个最快的存储
    dd if=/dev/zero 0f=/dev/shm/test bs=1M count=50
    共享内存文件系统路径:/dev/shm 可以读写数据但重启后数据丢失。
     
     
    11.12 Tuning SysV IPC 进程间通讯性能调整
    A.        设置信号量数量(flags)
    Kernel.sem
    每个信号量集合的最大信号量数,默认为250,
    整个系统所允许的最大信号量数,默认为32000,
    每次IPC调用影响的信号量的最大数,默认为32,
    信号量集合的最大数,默认为128。
    注:运行高并发应用程序时(如:数据库),将系统的最大信号量数调大,以减少进程间对信号量的争抢
    B.        消息数量与大小(non-pageable)
    Kernel.msgmni=16,最大消息队列数,默认16
    Kernel.msgmnb=16384,单个消息队列的最大字节数,默认16384,
    Kernel.msgmax=8192,最大消息长度(整个消息块大小)。默认8192,
    注:适用于少量数据交换
                 C.共享内存大小与数量
                    Kernel.shmni=4096,系统范围内共享内存段的最大数量,默认4096,
                    Kernel.shmmax每个共享内存段的最大尺寸(单位:字节)。。
                    Kernel.shmall=2097152,共享内存页面数(系统一次可以共享内存的总量,单位:页,SHMMAX/PAGE_SIZE),默认2097152                  
     注:适用于海量数据交换(如:oracle数据库)
     
     
    11.13 Viewing memory with free 查看内存释放情况
    A.      用free -ltm 命令查看内存使用的总体情况
    B.      计算/buffers/cache 单位(MiB)
    used=used – bufers – cached
    free= free + buffers + cached
     
    grep –i memory /var/log/dmesg
    grep e820 /var/log/dmesg
     
     
    11.14          Other commands to view memory usage 查看内存使情况其它命令
    A.      查看系统内存
    cat /proc/meminfo
    cat /proc/zoneinfo
    a.       总的物理内存
    b.       内存缓存大小
    c.       正在使用的与未使用的
    B.      pages tables 页表
    cat /proc/vmstat
    C.      Summary 汇总
    vmstat –s
    D.     IO devices IO设备
    cat /proc/iomem
     
  • 相关阅读:
    改造MFC程序,使原来不支持winsocket的工程支持winsocket
    算术移位和逻辑移位实现分析
    MFC 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,已解决。
    在MFC中,使用控制台Console输出调试信息
    在MFC中使用GDI+的一般方法,以VC6.0编译器为例
    WinForm 实现主程序(exe)与其关联类库(*.dll)分开存放
    Deserializing/Serializing SOAP Messages in C#
    List分页
    ConvertJavaMiliSecondToDateTime
    中文数字大小写转阿拉伯数字
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5635678.html
Copyright © 2011-2022 走看看