什么是RAM?在智能手机世界中,我们每个人都知道RAM。因此,我不想深究,就简单总结一下。RAM,代表随机存取存储器,是一种计算机数据存储器,用于存储常用程序以提高系统性能。什么是虚拟内存?虚拟内存是一种内存管理,其中计算机通过将最近未使用的程序数据从RAM临时移动到硬盘来平衡或管理内存不足。什么是vmstat?vmstat是一个标准工具,用于报告Linux系统的虚拟内存统计信息。vmstat报告有关进程、内存、分页、块IO、陷阱(中断)和cpu活动的信息。它可以帮助Linux管理员在解决问题时识别系统瓶颈。在Linux中安装SysstatLinux中没有独立的vmstat包。它与sysstat捆绑在一起,可在大多数发行版的默认存储库中使用。如果未安装,只需根据您的发行版输入以下命令即可。[在CentOS/RHEL中安装vmstat]$sudoyuminstallsysstat[在Fedora中安装vmstat]$sudodninstallsysstat[在Debian/Ubuntu中安装vmstat]$sudoapt-getinstallsysstat[在ArchLinux中安装vmstat]$sudopacman-Ssysstat[在Mageia中安装vmstat]$sudourpmisysstat[InstallvmstatinopenSUSE]$sudozypperinstallsysstat不带参数运行vmstat假设你已经成功安装了vmstat,在终端中不带参数运行vmstat,它会显示vmstat的默认结果。#vmstatprocs------------内存------------swap--------io-----system-----cpu----rbswpdfreebuffcachesisobiboincsussyidwa2079496161412013924078792800231000111880当您看到上面的输出时,您可能已经大致了解它是什么以及它的用途。别着急,我们会对每个参数进行深入的解释,这样你就可以理解vmstat的作用和用途。procs:procs中有r和b列,报告进程统计信息。在上面的输出中,有两个进程在运行队列中等待CPU(r)和零个睡眠进程(b)。通常,它不应超过处理器(或内核)的数量,如果发现异常,最好使用top命令进一步排除故障。r:等待运行的进程数。b:睡眠状态的进程数。memory:memory下,有swpd、free、buff、cache这些列,报告内存统计信息。您可以使用free-m命令查看相同的信息。上面的内存统计中,统计是以千字节为单位表示的,有点乱,最好加上M参数,以兆字节为单位查看统计。swpd:使用的虚拟内存量。free:可用内存量。buff:用作缓冲区的内存量。缓存:用作缓存的内存量。inact:非活动内存的数量。active:活动内存量。swap:swap有si和so列用于报告交换内存统计信息。您可以使用free-m命令查看相同的信息。si:从磁盘交换的内存量(swapin,内存从swap移动到realmemory)。so:交换到磁盘的内存量(swappedout,内存从realmemory移动到swap)。I/O:I/O有bi和bo列,以“blockread”和“blockwrite”为单位报??告每秒读取和写入磁盘的块的统计信息。如果发现有巨大的I/O读写,最好使用iotop和iostat命令查看。bi:从块设备接收到的块数。bo:发送到块设备的块数。系统:系统有in和cs列,它报告每秒系统操作。in:每秒系统中断次数,包括时钟中断。cs:系统为了处理所有任务执行的上下文切换次数。CPU:CPU有us、sy、id和wa列,报告CPU资源(已用)占总CPU时间的百分比。如果发现异常,最好使用top和free命令。us:处理器在非内核程序中花费的时间。sy:处理器在核心相关任务上花费的时间。id:处理器空闲时间。wa:处理器等待IO操作完成以继续处理任务的时间。以MB为单位输出默认情况下,vmstat以千字节为单位显示内存统计信息,这很难理解,最好添加-Sm参数以获取以兆字节为单位的统计信息。#vmstat-Smprocs------------内存------------swap--------io-----system------cpu----rbswpdfreebuffcachesisobiboincsussyidwa10103371406211600401500111870延迟运行vmstat以获得更好的统计信息默认情况下vmstat的单个统计信息不足以进行进一步的故障排除,因此添加更新延迟(延迟是以秒为单位的更新之间的延迟)以定期捕获活动。如果你想延迟2秒运行vmstat,只需使用下面的命令(如果你想要更长的延迟,你可以根据自己的意愿进行更改)。以下命令将每2秒运行一次,直到它退出。#vmstat2procs-----------memory-------------swap-------io-----system------cpu----rbswpdfreebuffcachesisobiboincsussyidwa10105500325776416016216691200401500111870001055003256444160162166920000131083117411187000105500308648416024216692800116155914531628200010550028594841603221669320001293410039190000105500326620416040216694000127922106891900001055003667044160482166944000178359559190000105500366456416056216694800122859918919000010550036645641605621669480001515391504172810001055003652244160602166996001199841097111880带延迟和计数运行vmstat或者,你可以带延迟和特定计数运行vmstat,一旦达到给定的计数,然后自动退出。Thefollowingcommandwillrunevery2secondsandexitautomaticallyafter10times.#vmstat210procs-----------memory-------------swap-------io-----system------cpu----rbswpdfreebuffcachesisobiboincsussyidwa1079496158191615738081041200231001111880207949615594641573808104160011182117492127700079496158376815738481041600146681799919002079496155636415738481042800111392154515283000794961583272157384810428001013071448142840207949615820321573848104280014142460541960107949615758481573848104280010191224072627100079496158288415738481043600169678825919002079496156936815739281043200112692096991900107949615836121574008104440073920012530202770显示活动和非活动内存默认情况下,vmstat会显示除活动和非活动内存之外的内存统计信息。Ifyouwanttoseeactiveandinactivememorystatistics,addthe-aparameteraftervmstat.#vmstat-aprocs-----------memory-------------swap-------io-----system------cpu----rbswpdfreeinactivesisobiboincsussyidwa10105500238759241514858411200401501111870PrintdiskstatisticsAddthe-dparameteraftervmstattodisplaystatistics(includingread,writeandIO)inarowforeachdisk.#vmstat-ddisk------------读取------------------------写入------------------IO------Summarydiskstatistics在vmstat后加-D会显示全局统计信息(包括所有磁盘、分区、所有读取、合并读取、读取扇区、Write、CombinedWrite、Sector书面和IO)。#vmstat-D27disks3partitions275754028totalreads1388030mergedreads5751195976readsectors638710116millireading38795040writes29520659mergedwrites2209820333writtensectors130210652milliwriting0inprogressIO224704millispentIO打印指定分区统计vmstat添加-p参数后面跟上设备名会显示指定分区统计(包括读、读取的扇区、写以及请求的写)。#vmstat-p/dev/sdb1sdb1readsreadsectorswritesrequestedwrites311527890839453206728016TimestampvmstatstatisticsWhenyouwanttofindmemoryspikesinaspecifictimeinterval,addthe-tparametertothevmstatcommandfollowedbyadelayandacount.NOTE:ThiscombinationdoesnotworkonDebianbasedsystems.#vmstat-t15procs-----------memory-------------swap-------io------system-------cpu---------timestamp---rbswpdfreebuffcachesisobiboincsussyidwast00069814161813242458860400010000100002017-01-1115:42:15MST2006981276181324245886040000914000100002017-01-1115:42:16MST00069820161813242458860400007511600100002017-01-1115:42:17MST0006982016181324245886040000433900100002017-01-1115:42:18MST000698228018132424588604000011318500100002017-01-1115:42:19MSTPrintmorestatisticsvmstatfollowedbythe-sparameterwilldisplayasummaryofdifferentstatistics.#vmstat-s32849392totalmemory25864128usedmemory16468180activememory8320888inactivememory6985264freememory181324buffermemory24588612swapcache20970492totalswap0usedswap20970492freeswap891075non-niceusercputicks6532niceusercputicks1507099systemcputicks18925265601idlecputicks113043IO-waitcputicks108IRQcputicks4185softirqcputicks0stolencputicks4071862pagespagedin216759718pagespagedout0pagesswappedin0pagesswappedout369611221interrupts477861261CPUcontextswitches1478258826boottime2196121forks打印slab统计vmstat后面跟上-m参数会显示slab信息。#vmstat-mCacheNumTotalSizePagesnf_conntrack_expect0024016nf_conntrack_ffffffff81b2a920186031212fib6_nodes24596459ip6_dst_cache163038410ndisc_cache73025615ip6_mrt_cache0012830RAWv6353510887UDPLITEv60010244UDPv641210244tw_sock_TCPv60032012request_sock_TCPv60019220TCPv64619202fat_inode_cache566726fat_cache0032112ioat24096414012830ext4_inode_cache343223436410004ext4_xattr008844...阅读更多关于vmstat如果你想了解关于vmstat的更多选项,请阅读手册。#vmstat--help或#manvmstat关于作者:MageshMaruthamuthu,喜欢玩所有Linux发行版
