摘自 https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat

    1. Linux Performance Measurements using vmstat

      vmstat
      (virtual memory statistics) is a valuable monitoring utility, which
      also provides information about block IO and CPU activity in addition to
      memory.

      Contents

      vmstat Basics

      vmstat provides a number of values and will typically be called using two numerical parameters.

      • Example: vmstat 1 5

        • 1 -> the values will be re-measured and reported every second
        • 5 -> the values will be reported five times and then the program will stop

      The first line of the report will contain the average values since
      the last time the computer was rebooted. All other lines in the report
      will represent their respective current values. Vmstat does not need any
      special user rights. It can run as a normal user.

      [user@fedora9 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      3 0 0 44712 110052 623096 0 0 30 28 217 888 13 3 83 1 0
      0 0 0 44408 110052 623096 0 0 0 0 88 1446 31 4 65 0 0
      0 0 0 44524 110052 623096 0 0 0 0 84 872 11 2 87 0 0
      0 0 0 44516 110052 623096 0 0 0 0 149 1429 18 5 77 0 0
      0 0 0 44524 110052 623096 0 0 0 0 60 431 14 1 85 0 0
      [user@fedora9 ~]$

      Meaning of the individual Values

      (Source man vmstat):

      • Procs

        • r: The number of processes waiting for run time.
        • b: The number of processes in uninterruptible sleep.
      • Memory
        • swpd: the amount of virtual memory used.
        • free: the amount of idle memory.
        • buff: the amount of memory used as buffers.
        • cache: the amount of memory used as cache.
        • inact: the amount of inactive memory. (-a option)
        • active: the amount of active memory. (-a option)
      • Swap
        • si: Amount of memory swapped in from disk (/s).
        • so: Amount of memory swapped to disk (/s).
      • IO
        • bi: Blocks received from a block device (blocks/s).
        • bo: Blocks sent to a block device (blocks/s).
      • System
        • in: The number of interrupts per second, including the clock.
        • cs: The number of context switches per second.
      • CPU
        • These are percentages of total CPU time.
        • us: Time spent running non-kernel code. (user time, including nice time)
        • sy: Time spent running kernel code. (system time)
        • id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
        • wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
        • st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

      Examples

      CPU User Load Example

      A standard audio file will be encode as an MP3 file by means of the lame encoder[1] in this example. This process is quite CPU intensive and also demonstrates the execution of vmstat in parallel with a user CPU time of 97%:

      [user@fedora8 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      6 1 0 302380 16356 271852 0 0 561 568 80 590 43 7 43 7 0
      1 0 0 300892 16364 273256 0 0 0 52 79 274 97 3 0 0 0
      2 0 0 299544 16364 274532 0 0 0 0 78 372 97 3 0 0 0
      1 0 0 298292 16368 275780 0 0 0 0 53 255 97 3 0 0 0
      1 0 0 296820 16368 277192 0 0 0 0 77 377 97 3 0 0 0
      [user@fedora8 ~]$

      CPU System Load Example

      In this example, a file will be filled with random content using dd.

      [user@fedora9 ~]$ dd if=/dev/urandom of=500MBfile bs=1M count=500
      

      For this, /dev/urandom[2] will supply random numbers, which will be generated by the kernel. This will lead to an increased load on the CPU (sy – system time). At the same time, the vmstat executing in parallel will indicate that between 93% and 97% of the CPU time is being used for the execution of kernel code (for the generation of random numbers, in this case).

      [user@fedora9 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      2 0 402944 54000 161912 745324 5 14 54 59 221 867 13 3 82 2 0
      1 0 402944 53232 161916 748396 0 0 0 0 30 213 3 97 0 0 0
      1 0 402944 49752 161920 751452 0 0 0 0 28 290 4 96 0 0 0
      1 0 402944 45804 161924 755564 0 0 0 0 29 188 2 98 0 0 0
      1 0 402944 42568 161936 758608 0 0 0 17456 272 509 7 93 0 0 0
      [user@fedora9 ~]$

      The time for executing system calls[3][4][5] will be counted as system time (sy).

      RAM Bottleneck (swapping) Example

      In this example, many applications will be opened (including VirtualBox with a Windows guest system, among others). Almost all of the working memory will be used. Then, one more application (OpenOffice) will be started. The Linux kernel will then swap out several memory pages to the swap file on the hard disk, in order to get more RAM for OpenOffice. Swapping the memory pages to the swap file will be seen in the so (swap out - memory swapped to disk) column as vmstat executes in parallel.

      [user@fedora8 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      3 1 244208 10312 1552 62636 4 23 98 249 44 304 28 3 68 1 0
      0 2 244920 6852 1844 67284 0 544 5248 544 236 1655 4 6 0 90 0
      1 2 256556 7468 1892 69356 0 3404 6048 3448 290 2604 5 12 0 83 0
      0 2 263832 8416 1952 71028 0 3788 2792 3788 140 2926 12 14 0 74 0
      0 3 274492 7704 1964 73064 0 4444 2812 5840 295 4201 8 22 0 69 0
      [user@fedora8 ~]$

      High IO Read Load Example

      A large file (such as an ISO file) will be read and written to /dev/null using dd.

      [user@fedora9 ~]$ dd if=bigfile.iso of=/dev/null bs=1M
      

      Executed in parallel, vmstat will show the increased IO read load (the bi value).

      [user@fedora9 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      3 1 465872 36132 82588 1018364 7 17 70 127 214 838 12 3 82 3 0
      0 1 465872 33796 82620 1021820 0 0 34592 0 357 781 6 10 0 84 0
      0 1 465872 36100 82656 1019660 0 0 34340 0 358 723 5 9 0 86 0
      0 1 465872 35744 82688 1020416 0 0 33312 0 345 892 8 11 0 81 0
      0 1 465872 35716 82572 1020948 0 0 34592 0 358 738 7 8 0 85 0
      [user@fedora9 ~]$

      High IO Write Load Example

      In contrast with the previous example, dd will read from /dev/zero and write a file. The oflag=dsync will cause the data to be written immediately to the disk (and not merely stored in the page cache).

      [user@fedora9 ~]$ dd if=/dev/zero of=500MBfile bs=1M count=500 oflag=dsync
      

      Executed in parallel, vmstat will show the increased IO write load (the bo value).

      [user@fedora9 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      1 1 0 35628 14700 1239164 0 0 1740 652 117 601 11 4 66 20 0
      0 1 0 34852 14896 1239788 0 0 0 23096 300 573 3 16 0 81 0
      0 1 0 32780 15080 1241304 0 0 4 21000 344 526 1 13 0 86 0
      0 1 0 36512 15244 1237256 0 0 0 19952 276 394 1 12 0 87 0
      0 1 0 35688 15412 1237180 0 0 0 18904 285 465 1 13 0 86 0
      [user@fedora9 ~]$

      CPU Waiting for IO Example

      In the following example, an updatedb process is already running. The updatedb utility is part of mlocate. It examines the entire file system and accordingly creates the database for the locate command (by means of which file searches can be performed very quickly). Because updatedb reads all of the file names from the entire file system, the CPU must wait to get data from the IO system (the hard disk). For that reason, vmstat running in parallel will display large values for wa (waiting for IO):

      [user@fedora9 ~]$ vmstat 1 5
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      2 1 403256 602848 17836 400356 5 15 50 50 207 861 13 3 83 1 0
      1 0 403256 601568 18892 400496 0 0 1048 364 337 1903 5 7 0 88 0
      0 1 403256 600816 19640 400568 0 0 748 0 259 1142 6 4 0 90 0
      0 1 403256 600300 20116 400800 0 0 476 0 196 630 8 5 0 87 0
      0 1 403256 599328 20792 400792 0 0 676 0 278 1401 7 5 0 88 0
      [user@fedora9 ~]$

      Additional vmstat Options

      vmstat --help

      [user@fedora9 ~]$ vmstat --help
      usage: vmstat [-V] [-n] [delay [count]]
      -V prints version.
      -n causes the headers not to be reprinted regularly.
      -a print inactive/active page stats.
      -d prints disk statistics
      -D prints disk table
      -p prints disk partition statistics
      -s prints vm table
      -m prints slabinfo
      -S unit size
      delay is the delay between updates in seconds.
      unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
      count is the number of updates.
      [user@fedora9 ~]$

      vmstat

      [user@fedora9 ~]$ vmstat
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free buff cache si so bi bo in cs us sy id wa st
      2 0 14960 38016 6584 1069284 0 1 506 81 727 1373 12 4 81 3 0
      [user@fedora9 ~]$

      vmstat -V

      [user@fedora9 ~]$ vmstat -V
      procps version 3.2.7
      [user@fedora9 ~]$

      vmstat -a

      [user@fedora9 ~]$ vmstat -a
      procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r b swpd free inact active si so bi bo in cs us sy id wa st
      3 0 14960 38024 988284 461704 0 1 506 81 726 1372 12 4 81 3 0
      [user@fedora9 ~]$

      vmstat -d

      [user@fedora9 ~]$ vmstat -d
      disk- ------------reads------------ ------------writes----------- -----IO------
      total merged sectors ms total merged sectors ms cur sec
      ram0 0 0 0 0 0 0 0 0 0 0
      ram1 0 0 0 0 0 0 0 0 0 0
      ram2 0 0 0 0 0 0 0 0 0 0
      ram3 0 0 0 0 0 0 0 0 0 0
      ram4 0 0 0 0 0 0 0 0 0 0
      ram5 0 0 0 0 0 0 0 0 0 0
      ram6 0 0 0 0 0 0 0 0 0 0
      ram7 0 0 0 0 0 0 0 0 0 0
      ram8 0 0 0 0 0 0 0 0 0 0
      ram9 0 0 0 0 0 0 0 0 0 0
      ram10 0 0 0 0 0 0 0 0 0 0
      ram11 0 0 0 0 0 0 0 0 0 0
      ram12 0 0 0 0 0 0 0 0 0 0
      ram13 0 0 0 0 0 0 0 0 0 0
      ram14 0 0 0 0 0 0 0 0 0 0
      ram15 0 0 0 0 0 0 0 0 0 0
      sda 136909 31536 13893867 1197609 58190 219323 2233264 7688807 0 677
      sda1 35703 6048 1326394 511477 6728 16136 182984 419232 0 222
      sda2 85 1489 2935 653 141 3603 29952 5254 0 1
      sda3 101111 23961 12564154 685330 51321 199584 2020328 7264321 0 512
      sr0 0 0 0 0 0 0 0 0 0 0
      fd0 0 0 0 0 0 0 0 0 0 0
      [user@fedora9 ~]

      vmstat -D

      [user@fedora9 ~]$ vmstat -D
      22 disks
      0 partitions
      273820 total reads
      63034 merged reads
      27787446 read sectors
      2395193 milli reading
      116450 writes
      438666 merged writes
      4467248 written sectors
      15377932 milli writing
      0 inprogress IO
      1412 milli spent IO

      vmstat -p

      vmstat -p will not work under Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=485246. The following report comes from an Ubuntu 9.10 system.

      user@ubuntu-9-10:~$ vmstat -p /dev/sda9
      sda9 reads read sectors writes requested writes
      23420 411365 24464 530801
      user@ubuntu-9-10:~$

      vmstat -s

      [user@fedora9 ~]$ vmstat -s
      1553972 total memory
      1516180 used memory
      461892 active memory
      988304 inactive memory
      37792 free memory
      6644 buffer memory
      1069388 swap cache
      1052248 total swap
      14960 used swap
      1037288 free swap
      161467 non-nice user cpu ticks
      7586 nice user cpu ticks
      46310 system cpu ticks
      1108919 idle cpu ticks
      46832 IO-wait cpu ticks
      2694 IRQ cpu ticks
      2452 softirq cpu ticks
      0 stolen cpu ticks
      6947021 pages paged in
      1116896 pages paged out
      183 pages swapped in
      3744 pages swapped out
      9985406 interrupts
      18852586 CPU context switches
      1239004323 boot time
      15072 forks
      [user@fedora9 ~]$

      vmstat -m

      [user@fedora9 ~]$ vmstat -m
      Cache Num Total Size Pages
      fuse_request 11 11 368 11
      fuse_inode 9 9 448 9
      rpc_inode_cache 8 8 512 8
      nf_conntrack_expect 0 0 168 24
      nf_conntrack 26 80 248 16
      dm_uevent 0 0 2464 3
      UDPv6 22 22 704 11
      TCPv6 6 6 1344 6
      kmalloc_dma-512 8 8 512 8
      sgpool-128 12 12 2048 4
      scsi_io_context 0 0 104 39
      ext3_inode_cache 6822 8360 496 8
      ext3_xattr 85 85 48 85
      journal_handle 170 170 24 170
      journal_head 76 219 56 73
      revoke_record 256 256 16 256
      flow_cache 0 0 80 51
      bsg_cmd 0 0 288 14
      mqueue_inode_cache 7 7 576 7
      isofs_inode_cache 0 0 376 10
      hugetlbfs_inode_cache 11 11 344 11
      dquot 0 0 128 32
      shmem_inode_cache 1058 1071 448 9
      xfrm_dst_cache 0 0 320 12
      UDP 19 21 576 7
      TCP 17 24 1216 6
      blkdev_queue 21 21 1080 7
      biovec-256 2 2 3072 2
      biovec-128 5 5 1536 5
      biovec-64 7 10 768 5
      sock_inode_cache 619 650 384 10
      file_lock_cache 39 39 104 39
      Acpi-Operand 2935 2958 40 102
      Acpi-Namespace 1700 1700 24 170
      Cache Num Total Size Pages
      taskstats 25 26 312 13
      proc_inode_cache 233 242 360 11
      sigqueue 28 28 144 28
      radix_tree_node 7888 8606 296 13
      bdev_cache 24 24 512 8
      inode_cache 370 462 344 11
      dentry 6592 15390 136 30
      names_cache 2 2 4096 2
      avc_node 73 73 56 73
      selinux_inode_security 9888 10030 48 85
      idr_layer_cache 627 644 144 28
      buffer_head 2308 2688 64 64
      mm_struct 659 693 448 9
      vm_area_struct 11110 11592 88 46
      files_cache 115 130 384 10
      sighand_cache 141 150 1344 6
      task_struct 246 248 3696 2
      anon_vma 4778 5120 16 256
      kmalloc-4096 95 112 4096 8
      kmalloc-2048 272 304 2048 16
      kmalloc-1024 518 524 1024 4
      kmalloc-512 764 888 512 8
      kmalloc-256 198 208 256 16
      kmalloc-128 629 832 128 32
      kmalloc-64 4322 5568 64 64
      kmalloc-32 1554 1664 32 128
      kmalloc-16 2644 3584 16 256
      kmalloc-8 3561 3584 8 512
      kmalloc-192 6349 6930 192 21
      kmalloc-96 885 1176 96 42
      [user@fedora9 ~]$

      References

    2. http://lame.sourceforge.net/
    3. http://en.wikipedia.org/wiki//dev/random
    4. http://en.wikipedia.org/wiki/System_call
    5. http://www.softpanorama.org/Internals/unix_system_calls.shtml

http://www.ibm.com/developerworks/linux/library/l-system-calls/

Linux vmstat 使用说明的更多相关文章

  1. linux vmstat使用说明

    FIELD DESCRIPTION FOR VM MODE Procs r: The number of processes waiting for run time. 表示运行队列,就是说多少个进程 ...

  2. Linux vmstat使用

    Vmstat命令的简单使用 Vmstat命令是Linux/unix常用的系统监控工具,可以方便的查看CPU.内存.swap分区.IO读写等情况. Vmstat常用的参数主要有两个:1.采集的时间间隔 ...

  3. Linux vmstat命令实战详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...

  4. Linux vmstat字段解析

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...

  5. Linux vmstat命令--监控CPU 性能分析

    top是给Linux设计的.在FreeBSD VM里面的Free概念和其他OS完全不同,使用top查看Free内存对于FreeBSD来说可以说没什么意义.正确的方法是看vmstat. vmstat是V ...

  6. (转)Linux vmstat命令实战详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...

  7. Linux vmstat:报告虚拟内存统计的工具

    众所周知,计算机必须有称之为RAM(随机访问内存)的存储器使得计算机工作.RAM指的是插在计算机主板上的物理存储.这里的RAM被用于加载像浏览器.文字处理器这类的程序,实际上,你使用的程序都运行在内存 ...

  8. Linux vmstat具体解释(系统IO)

    1. vmstat 能够展现给定时间间隔的server的状态值,包含server的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 vmstat 2 10 2: 每隔2s 10 : 统计10次 ...

  9. Linux vmstat命令详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...

随机推荐

  1. 算法基础——KMP字符串匹配

    原题链接 题目: 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字. 模板串P在模式串S中多次作为子串出现. 求出模板串P在模式串S中所有出现的位置的起始下标. 输入 ...

  2. PowerPoint无法正常加载MathType的解决方法

    MathType是一款十分便捷的数学公式编辑器,可以和很多办公软件和网站兼容使用,我们日常用的比较多的也就是Office和WPS,更具体的说是Word\Excel\PPT等等一系列办公常用软件. 不过 ...

  3. SFTP 服务器cd() 方法和 ls() 方法说明

    方法说明: cd():这个方法用于进入某个目录下. 默认情况,当连接SFTP服务器成功后直接进入用户目录,比如我连接自己本机SFTP服务器后进入/Users/mac目录.cd() 方法进入每一个目录都 ...

  4. 再也不用担心问RecycleView了——面试真题详解

    关于RecycleView,之前我写过一篇比较基础的文章,主要说的是缓存和优化等问题.但是有读者反映问题不够实际和深入.于是,我又去淘了一些关于RecycleView的面试真题,大家一起看看吧,这次的 ...

  5. z-index失效原因分析——由一个bug引发的对层叠上下文和z-index属性的深度思考

    新年刚开工就被一个bug虐得整个人都不好了,特地记录下. (一)bug描述 在一个fixed-data-table(一个React组件)制作的表格中,需要给表头的字段提示的特效,所以做了一个提示层,但 ...

  6. 【鸿蒙应用开发】第三章 “颜控”时代下如何构建UI界面

    为什么是第三章,前面两章呢? 原本是以碎片化的方式将HarmonyOS应用开发快速掌握,但是在准备六大布局组合复杂UI界面Demo时,很多组件之前都没有应用.因此准备将知识体系进行细化,以章节的形式希 ...

  7. 推荐系统实践 0x09 基于图的模型

    用户行为数据的二分图表示 用户的购买行为很容易可以用二分图(二部图)来表示.并且利用图的算法进行推荐.基于邻域的模型也可以成为基于图的模型,因为基于邻域的模型都是基于图的模型的简单情况.我们可以用二元 ...

  8. KNN 算法-理论篇-如何给电影进行分类

    公号:码农充电站pro 主页:https://codeshellme.github.io KNN 算法的全称是K-Nearest Neighbor,中文为K 近邻算法,它是基于距离的一种算法,简单有效 ...

  9. Error:Execution failed for task ':app:mergeDebugResources'. > Error: Some file crunching failed, see logs for details

    android studio中的资源文件命名是不能带有数字的,因为会与R类的资源ID起冲突,所以编译就发生了错误.

  10. python之Bug之字符串拼接bug

    \r\n拼接Bug 环境: python3.4.pycharm2017 偶然的学习中遇到了一个问题,百思不得姐,什么问题呢,大家输入太快了,难免有失误就如下面的代码 #构造响应数据 response_ ...