51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1536|回复: 0

性能测试:Linux/Unix操作系统之内存监控

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:12
  • 签到天数: 918 天

    连续签到: 3 天

    [LV.10]测试总司令

    发表于 2022-3-29 10:50:36 | 显示全部楼层 |阅读模式
     内存监控
      在分析内存监控技术之前,首先需要了解一些内存相关的概念和内存分析的原理,通常所以说的内存都是物理层面的内存,但是操作系统要是使用这些内存就需要分页(pages),将内存分成一页一页的,这就是虚拟内存(VMM虚拟内存管理器)的概念。
      VMM在处理虚拟地址空间时,会将虚拟地址空间划分成段,每段的大小是256MB,它是虚拟内存地址空间中一个邻接的部分,数据对象可以映射到该空间。进程对数据的寻址能力按段(或对象)的级别进行管理,所以段既可以在进程间共享,也可以进行专门维护,如进程可以共享代码段但拥有独立和专用的数据段。
      虚拟内存段划分成固定大小的单元,把这种单元叫做页,缺省值页面大小为4096字节,但有一些系统也支持大页面,通常只能通过系统调用shmat访问。段中的每页在需要之前可位于内存(RAM)中,或存储在磁盘上,同样,实内存也可以划分成4096字节的页面帧,VMM的角色是管理分配实内存页面帧并且解析程序对虚拟内存页面的引用,这些页面当前不在实内存中或还不存在(例如,当进程第一次引用其数据段的某一页时),在任何给定时刻使用的虚拟内存数量可能比实内存大,所以VMM必须将余量存储在磁盘上。
      SWAP又被称为交换分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP 分区)虚拟成内存来使用。它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见,但其访问速度远远慢于实内存的访问速度。
      ·Buffers/cache: cache是将最近使用过的文件放在内存中,下次需要访问的时候就直接读内存中的内容,而不需要再次访问硬盘。这样就提高了应用程序的效率。Buffers是指当应用程序需要写数据到磁盘时,耗时会比较长,系统让这些数据暂时保存在内存中,程序继续执行其它操作。后续的一些时间点,把内存上的数据写到磁盘上。
      · Active/inactive:活动和非活动内存,当前被process使用内存为活动内存,已经分配但是未被使用内存为非活动内存。
      · Kernel Usage of Memory:在操作系统过程中,内核也需要使用内存,该值记录内核使用内存的情况。
      监控内存使用情况的工具通常有:vmstat和ps。
      Vmstat命令总结了系统中所有进程使用的总活动虚拟内存,以及空闲列表上实内存页帧的数量,活动的虚拟内存定义为虚拟内存中实际可以得到的工作段页面的数量。
      当确定内存是否短缺或者是需要进行某种内存调整时,在一组时间间隔里输入vmstat命令,检查结果报告中的pi和po列,这两列表明了每秒调页空间页面调入的数量和每秒调页空间页面调出的数量。如果这些值经常为非零值,说明可能存在内存瓶颈,偶尔出现非零值不用在意,因为页面调度是虚拟内存的主要原理。
      vmstat 2 10报告如图9-22所示。

    图9-22 vmstat 2 10报告
    从图9-22中到可以看出内存中buffer和cache 分配情况,其中free是指空闲的内存,一个页面是实内存4KB的区域,系统维护内存页面的缓冲区,称为空闲列表,当VMM需要空间时可以很方便地访问此空闲列表。一般情况下如果free的值较大时swap的值则显示为零,因为当内存够用时就没有必须使用交换分区了,所以看到swap栏中的si/so两列的值也为零。
      si:The rate of memory (in KB/s) that has been swapped in from disk during the last sample。自上次取样以来从磁盘交换进来内存比特率。
      so:The rate of memory (in KB/s) that has been swapped out to disk during the last sample。自上次取样以来交换到磁盘的内存比特率。
      vmstat –s命令向标准输出发送摘要报告,该报告从系统初始化开始,以绝对计数表示,而不是基于某个时间间隔。在性能测试过程中在负载测试之前先使用该命令保存一份报告,等负载测试完成后再使用该命令监控,并将保存监控结果,比较这两份报告的差异。
      vmstat -s报告如图9-23所示。

    图9-23 vmstat -s报告
    该报告详细列出了内存的使用数据,其中页面调进和页面调出的数量代表虚拟内存从页面空间和文件空间调进或调出页面的活动。
      使用ps命令也可以确定内存使用情况,通过ps命令可以监视个别进程对内存的使用,ps v PID命令为个别进程提供了最全面的内存相关统计信息的报告,主要报告的内容包括以下几个方面
      ·缺页故障;
      · 工作段已经达到的大小;
      · 内存中工作段和代码段的大小;
      · 文本段的大小;
      · 驻留集的大小;
      · 进程合作的实内存百分比;
      如实例ps v,报告如图9-24所示。

    图9-24 ps v报告
    结果报告中重要列描述如下:
      -PGIN:缺页故障引起的页面调进的数目,操作系统把所有I/O归于缺页故障,所以该项主要是I/O量的测量。
      -SIZE:进程数据区的虚拟大小(在调页空间),用千字节表示(在其它标志中用SZ来表示),这个数目等于进程可用的工作段页数目的4倍。如果一些工作段页当前被调出,这个数字将大于所使用的实内存量,SIZE包含了私有段的页面和进程的共享库数据段。
      -RSS:进程实内存(驻留集合)的大小,用千字节表示。这个数值等于内存中的工作段页和代码段页数和的4倍,代码段页是为所有当前程序运行的实例所共享的,如果26个ksh进程正在运行,那么只能是ksh可执行程序的任何给定页面的一份副本位于内存中。
      -TSIZ:文本(共享程序)映像的大小,这是可执行文件的文本区域的大小,可执行程序文本区的页面是只能在用到时带入内存中的,即转移到内存或从内存装入。这个值表明可以装入的文本量的上限,TSIZ的值并不反映实内存的使用情况。
      -TRS:文本驻留集合(实内存)的大小,这个值等于进程可用的代码段页数值的4倍。
      %MEM:由内存中工作段和代码段页和的4倍(即RSS的值),再除以机器实内存的大小(单位为KB),再乘以100,四舍五入到最接近的百分点,这个指表明了进程使用的实内存,它不会夸大一个进程与其它进程共享程序文本的开销。
      注意:ps命令并不表明共享内存段或内存映像段消耗的内存,因为许多应用程序使用共享内存或内存映像段。
      如果需要获得物理内存和swap交换分区的详细信息可以使用procinfo命令。





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-28 20:02 , Processed in 0.064545 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表