超级干货:3个性能监控和优化命令详解

1个月前 (01-18 21:07)阅读2回复0
zaibaike
zaibaike
  • 管理员
  • 注册排名1
  • 经验值192155
  • 级别管理员
  • 主题38431
  • 回复0
楼主

小编为各人整理出了三个有关性能监控和优化号令详尽讲解,别看只要三个,但不影响他们啊,本篇文章很长,涉及top号令、free号令和vmstat号令,实的是很详尽的讲解,期看能帮到各人,别的还有两条相关的号令详解,消化消化那篇的常识,过几天再上那两条~

1 top号令top 号令是 Linux 下常用的性能阐发东西,可以实时展现系统中各个历程的资本占用情况,类似于 Windows 的使命治理器。

下面详尽介绍它的利用办法。top 是一个动态展现过程,即能够通过用户按键来不竭刷新当前形态。假设在前台施行该号令,它将独占前台,曲到用户末行该法式为行。

比力准确地说,top 号令供给了实时的对系统处置器的形态监视。它将展现系统中 CPU最“灵敏”的使命列表。该号令能够按 CPU 利用。

内存利用和施行时间对使命停止排序;并且该号令的良多特征都能够通过交互式号令或者在小我定造文件中停止设定。

号令格局:

top [参数]号令功用:

展现当前系统正在施行的历程的相关信息,包罗历程ID、内存占用率、CPU占用率等

号令参数:

-b 批处置-c 展现完全的指号令-I 漠视失效过程-s 保密形式-S 累积形式-i时间 设置间隔时间-u用户名 指定用户名-p历程号 指定历程-n次数 轮回展现的次数4.利用实例:

实例1:展现历程信息

号令:top

输出:

[root@TG1704 log]# toptop - 14:06:23 up 70 days, 16:44, 2 users, load average: 1.25, 1.32, 1.35Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombieCpu(s): 5.9%us, 3.4%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%stMem: 32949016k total, 14411180k used, 18537836k free, 169884k buffersSwap: 32764556k total, 0k used, 32764556k free, 3612636k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java 18249 root 18 0 3201m 1.9g 11m S 35.9 6.0 569:39.41 java 2808 root 25 0 3333m 1.0g 11m S 24.3 3.1 526:51.85 java 25668 root 23 0 3180m 704m 11m S 14.0 2.2 360:44.53 java 574 root 25 0 3168m 611m 10m S 12.6 1.9 556:59.63 java 1599 root 20 0 3237m 1.9g 11m S 12.3 6.2 262:01.14 java 1008 root 21 0 3147m 842m 10m S 0.3 2.6 4:31.08 java 13823 root 23 0 3031m 2.1g 10m S 0.3 6.8 176:57.34 java 28218 root 15 0 12760 1168 808 R 0.3 0.0 0:01.43 top 29062 root 20 0 1241m 227m 10m S 0.3 0.7 2:07.32 java 1 root 15 0 10368 684 572 S 0.0 0.0 1:30.85 init 2 root RT -5 0 0 0 S 0.0 0.0 0:01.01 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 5 root RT -5 0 0 0 S 0.0 0.0 0:00.80 migration/1 6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1 7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1 8 root RT -5 0 0 0 S 0.0 0.0 0:20.59 migration/2 9 root 34 19 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/2 10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2 11 root RT -5 0 0 0 S 0.0 0.0 0:23.66 migration/3 12 root 34 19 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/3 13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3 14 root RT -5 0 0 0 S 0.0 0.0 0:20.29 migration/4 15 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/4 16 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/4 17 root RT -5 0 0 0 S 0.0 0.0 0:23.07 migration/5 18 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/5 19 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/5 20 root RT -5 0 0 0 S 0.0 0.0 0:17.16 migration/6 21 root 34 19 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/6 22 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/6 23 root RT -5 0 0 0 S 0.0 0.0 0:58.28 migration/7阐明:

统计信息区:前五行是当前系统情状整体的统计信息区。下面我们看每一行信息的详细意义。

第一行,使命队列信息,同 uptime 号令的施行成果,详细参数阐明情状如下:

14:06:23:当前系统时间up 70 days, 16:44:系统已经运行了70天16小时44分钟(在那期间系统没有重启过得吆!)2 users:当前有2个用户登录系统load average: 1.15, 1.42, 1.44:load average 后面的三个数别离是1分钟、5分钟、15分钟的负载情状。load average 数据是每隔 5 秒钟查抄一次活泼的历程数,然后按特定算法计算出的数值。假设那个数除以逻辑 CPU 的数量,成果高于5的时候就表白系统在超负荷运转了。第二行,Tasks — 使命(历程),详细信息阐明如下:

系统如今共有 206 个历程,此中处于运行中的有1个,205 个在休眠(sleep),stoped形态的有0个,zombie 形态(僵尸)的有0个。

第三行,cpu形态信息,详细属性阐明如下:

5.9%us:用户空间占用CPU的百分比。3.4% sy:内核空间占用CPU的百分比。0.0% ni:改动过优先级的历程占用CPU的百分比90.4% id:闲暇CPU百分比0.0% wa:IO期待占用CPU的百分比0.0% hi:硬中断(Hardware IRQ)占用CPU的百分比0.2% si:软中断(Software Interrupts)占用CPU的百分比备注:在那里CPU的利用比率和windows概念差别,需要理解linux系统用户空间和内核空间的相关常识!

第四行,内存形态,详细信息如下:

32949016k total — 物理内存总量(32GB)14411180k used — 利用中的内存总量(14GB)18537836k free — 闲暇内存总量(18GB)169884k buffers — 缓存的内存量 (169M)第五行,swap交换分区信息,详细信息阐明如下:

32764556k total — 交换区总量(32GB)0k used — 利用的交换区总量(0K)32764556k free — 闲暇交换区总量(32GB)3612636k cached — 缓冲的交换区总量(3.6GB)备注:

第四行中利用中的内存总量(used)指的是如今系统内核掌握的内存数,闲暇内存总量(free)是内核还未纳进其管控范畴的数量。纳进内核治理的内存不见得都在利用中,还包罗过往利用过的如今能够被反复操纵的内存,内核其实不把那些可被从头利用的内存交还到free中往,因而在linux上free内存会越来越少,但不消为此担忧。

假设出于习惯往计算可用内存数,那里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的 cached,按那个公式此台办事器的可用内存:18537836k +169884k +3612636k = 22GB摆布。

关于内存监控,在 top 里我们要时刻监控第五行 swap 交换分区的used,假设那个数值在不竭的改变,阐明内核在不竭停止内存和swap的数据交换,那是实正的内存不敷用了。

第六行,空行。

第七行以下:各历程(使命)的形态监控,项目列信息阐明如下:

PID:历程idUSER:历程所有者PR:历程优先级NI:nice值。负值表达高优先级,正值表达低优先级VIRT:历程利用的虚拟内存总量,单元kb。VIRT=SWAP+RESRES:历程利用的、未被换出的物理内存大小,单元kb。RES=CODE+DATASHR:共享内存大小,单元kbS:历程形态。D=不成中断的睡眠形态 R=运行 S=睡眠 T=跟踪/停行 Z=僵尸历程%CPU:前次更新到如今的CPU时间占用百分比%MEM:历程利用的物理内存百分比TIME+:历程利用的CPU时间总计,单元1/100秒COMMAND:历程名称(号令名/号令行)其他利用身手:

1.多U多核CPU监控

在top根本视图中,按键盘数字“1”,可监控每个逻辑CPU的情况:

看察上图,办事器有16个逻辑CPU,现实上是4个物理CPU。再按数字键1,就会返回到top根本视图界面。

2.高亮展现当前运行历程

敲击键盘“b”(翻开/封闭加亮效果),top的视图改变如下:

我们发现历程id为2570的“top”历程被加亮了,top历程就是视图第二行展现的独一的运行态(runing)的阿谁历程,能够通过敲击“y”键封闭或翻开运行态历程的加亮效果。

3.历程字段排序

默认进进top时,各历程是根据CPU的占用量来排序的,鄙人图中历程ID为28894的java历程排在第一(cpu占用142%),历程ID为574的java历程排在第二(cpu占用16%)。

敲击键盘“x”(翻开/封闭排序列的加亮效果),top的视图改变如下:

能够看到,top默认的排序列是“%CPU”。

4.通过”shift + ”或”shift + ”能够向右或左改动排序列

下图是按一次”shift + ”的效果图,视图如今已经根据%MEM来排序。

2、free 号令free号令能够展现Linux系统中闲暇的、已用的物理内存及swap内存,及被内核利用的buffer。在Linux系统监控的东西中,free号令是最经常利用的号令之一。

1.号令格局:free [参数]

2.号令功用:free 号令展现系统利用和闲暇的内存情状,包罗物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被漠视

3.号令参数:

-b  以Byte为单元展现内存利用情状。-k  以KB为单元展现内存利用情状。-m  以MB为单元展现内存利用情状。-g 以GB为单元展现内存利用情状。-o  不展现缓冲区调剂列。-s 间隔秒数  继续看察内存利用情况。-t  展现内存总和列。-V  展现版本信息。4.利用实例:

实例1:展现内存利用情状

号令:

freefree -gfree -m输出:

[root@SF1150 service]# free total used free shared buffers cachedMem: 32940112 30841684 2098428 0 4545340 11363424-/+ buffers/cache: 14932920 18007192Swap: 32764556 1944984 30819572[root@SF1150 service]# free -g total used free shared buffers cachedMem: 31 29 2 0 4 10-/+ buffers/cache: 14 17Swap: 31 1 29[root@SF1150 service]# free -m total used free shared buffers cachedMem: 32168 30119 2048 0 4438 11097-/+ buffers/cache: 14583 17584Swap: 31996 1899 30097阐明:

下面是对那些数值的阐明:

total:总计物理内存的大小。used:已利用多大。free:可用有几。Shared:多个历程共享的内存总额。Buffers/cached:磁盘缓存的大小。第三行(-/+ buffers/cached):

used:已利用多大。free:可用有几。第四行是交换分区SWAP的,也就是我们凡是所说的虚拟内存。

区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。

那两个的区别在于利用的角度来看,第一行是从OS的角度来看,因为关于OS,buffers/cached 都是属于被利用,所以它的可用内存是 2098428 KB,已用内存是30841684KB,此中包罗,内核(OS)利用+Application(X, oracle,etc)利用的+buffers+cached。

第三行所指的是从利用法式角度来看,关于利用法式来说,buffers/cached 是等于可用的,因为buffer/cached是为了进步文件读取的性能,当利用法式需在用到内存的时候,buffer/cached会很快地被收受接管。

所以从利用法式的角度来说,可用内存=系统free memory+buffers+cached。

如本机情状的可用内存为:18007156=2098428KB+4545340KB+11363424KB

接下来阐明什么时候内存会被交换,以及按什么方交换。

当可用内存少于额定值的时候,就会开会停止交换.若何看额定值:

号令:

cat /proc/meminfo输出:

[root@SF1150 service]# cat /proc/meminfoMemTotal: 32940112 kBMemFree: 2096700 kBBuffers: 4545340 kBCached: 11364056 kBSwapCached: 1896080 kBActive: 22739776 kBInactive: 7427836 kBHighTotal: 0 kBHighFree: 0 kBLowTotal: 32940112 kBLowFree: 2096700 kBSwapTotal: 32764556 kBSwapFree: 30819572 kBDirty: 164 kBWriteback: 0 kBAnonPages: 14153592 kBMapped: 20748 kBSlab: 590232 kBPageTables: 34200 kBNFS_Unstable: 0 kBBounce: 0 kBCommitLimit: 49234612 kBCommitted_AS: 23247544 kBVmallocTotal: 34359738367 kBVmallocUsed: 278840 kBVmallocChunk: 34359459371 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0Hugepagesize: 2048 kB交换将通过三个路子来削减系统中利用的物理页面的个数: 削减缓冲与页面cache的大小,将系统V类型的内存页面交换出往, 换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不敷)。事实上,少量地利用swap是不是影响到系统性能的。

那 buffers 和 cached 都是缓存,两者有什么区别呢?

为了进步磁盘存取效率,Linux 做了一些精心的设想,除了对 dentry 停止缓存(用于VFS,加速文件途径名到 inode 的转换),还摘取了两种次要 Cache 体例:Buffer Cache 和Page Cache。前者针对磁盘块的读写,后者针对文件 inode 的读写。那些 Cache 有效缩短了 I/O 系统挪用(好比 read,write,getdents)的时间。

磁盘的操做有逻辑级(文件系统)和物理级(磁盘块),那两种Cache就是别离缓存逻辑和物理级数据的。

Page cache 现实上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到现实的物理磁盘,那种映射关系由文件系统来完成。当 page cache 的数据需要刷新时,page cache 中的数据交给 buffer cache,因为Buffer Cache 就是缓存磁盘块的。但是那种处置在 2.6 版本的内核之后就变得很简单了,没有实正意义上的 cache 操做。

Buffer cache 是针对磁盘块的缓存,也就是在没有文件系统的情状下,间接对磁盘停止操做的数据会缓存到buffer cache中,例如,文件系统的元数据城市缓存到buffer cache中。

简单说来,page cache 用来缓存文件数据,buffer cache 用来缓存磁盘数据。在有文件系统的情状下,对文件操做,那么数据会缓存到 page cache,假设间接摘用dd等东西对磁盘停止读写,那么数据会缓存到 buffer cache。

所以我们看linux,只要不消swap的交换空间,就不消担忧本身的内存太少.假设经常swap用良多,可能你就要考虑加物理内存了。那也是linux看内存能否够用的原则。

假设是利用办事器的话,一般只看第二行,+buffers/cache,即对利用法式来说free的内存太少了,也是该考虑优化法式或加内存了。

实例2:以总和的形式展现内存的利用信息

号令:

free -t输出:

[root@SF1150 service]# free -t total used free shared buffers cachedMem: 32940112 30845024 2095088 0 4545340 11364324-/+ buffers/cache: 14935360 18004752Swap: 32764556 1944984 30819572Total: 65704668 32790008 32914660[root@SF1150 service]#阐明:实例3:周期性的查询内存利用信息

号令:

free -s 10输出:

[root@SF1150 service]# free -s 10 total used free shared buffers cachedMem: 32940112 30844528 2095584 0 4545340 11364380-/+ buffers/cache: 14934808 18005304Swap: 32764556 1944984 30819572 total used free shared buffers cachedMem: 32940112 30843932 2096180 0 4545340 11364388-/+ buffers/cache: 14934204 18005908Swap: 32764556 1944984 308195723、vmstatvmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操做系统的虚拟内存、历程、CPU活动停止监控。他是对系统的整体情状停止统计,不敷之处是无法对某个历程停止深进阐发。vmstat 东西供给了一种低开销的系统性能看察体例。因为 vmstat 自己就是低开销东西,在十分高负荷的办事器上,你需要查看并监控系统的安康情状,在掌握窗口仍是可以利用vmstat 输出成果。在进修vmstat号令前,我们先领会一下Linux系统中关于物理内存和虚拟内存相关信息。

物理内存和虚拟内存区别:我们晓得,间接从物理内存读写数据要比从硬盘读写数据要快得多,因而,我们期看所有数据的读取和写进都在内存完成,而内存是有限的,如许就引出了物理内存与虚拟内存的概念。

物理内存就是系统硬件供给的内存大小,是实正的内存,相关于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了称心物理内存的不敷而提出的战略,它是操纵磁盘空间虚拟出的一块逻辑内存,用做虚拟内存的磁盘空间被称为交换空间(Swap Space)。

做为物理内存的扩展,linux会在物理内存不敷时,利用交换分区的虚拟内存,更详尽的说,就是内核会将暂时不消的内存块信息写到交换空间,如许一来,物理内存得到了释放,那块内存就能够用于其free号令能够展现Linux系统中闲暇的、已用的物理内存及swap内存,及被内核利用的buffer。在Linux系统监控的东西中,free号令是最经常利用的号令之一。

1.号令格局:

free [参数]2.号令功用:free 号令展现系统利用和闲暇的内存情状,包罗物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被漠视

3.号令参数:

-b  以Byte为单元展现内存利用情状。-k  以KB为单元展现内存利用情状。-m  以MB为单元展现内存利用情状。-g 以GB为单元展现内存利用情状。-o  不展现缓冲区调剂列。-s间隔秒数  继续看察内存利用情况。-t  展现内存总和列。-V  展现版本信息。4.利用实例:实例1:展现内存利用情状

号令:

freefree -gfree -m输出:

[root@SF1150 service]# free total used free shared buffers cachedMem: 32940112 30841684 2098428 0 4545340 11363424-/+ buffers/cache: 14932920 18007192Swap: 32764556 1944984 30819572[root@SF1150 service]# free -g total used free shared buffers cachedMem: 31 29 2 0 4 10-/+ buffers/cache: 14 17Swap: 31 1 29[root@SF1150 service]# free -m total used free shared buffers cachedMem: 32168 30119 2048 0 4438 11097-/+ buffers/cache: 14583 17584Swap: 31996 1899 30097它目标,当需要用到原始的内容时,那些信息会被从头从交换空间读进物理内存。

linux的内存治理摘取的是分页存取机造,为了包管物理内存能得到足够的操纵,内核会在恰当的时候将物理内存中不经常利用的数据块主动交换到虚拟内存中,而将经常利用的信息保留到物理内存。

要深进领会linux内存运行机造,需要晓得下面提到的几个方面:

起首,Linux系统会不时的停止页面交换操做,以连结尽可能多的闲暇物理内存,即便并没有什么工作需要内存,Linux也会交换出暂时不消的内存页面。那能够制止期待交换所需的时间。

其次,linux停止页面交换是有前提的,不是所有页面在不消时都交换到虚拟内存,linux内核根据”比来最经常利用“算法,仅仅将一些不经常利用的页面文件交换到虚拟内存,有时我们会看到那么一个现象:linux物理内存还有良多,但是交换空间也利用了良多。其实,那其实不希罕,例如,一个占用很大内存的历程运行时,需要消耗良多内存资本,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来那个占用良多内存资本的历程完毕并释放了良多内存时,适才被交换出往的页面文件其实不会主动的交换进物理内存,除非有那个需要,那么此刻系统物理内存就会闲暇良多,同时交换空间也在被利用,就呈现了适才所说的现象了。关于那点,不消担忧什么,只要晓得是怎么一回事就能够了。

最初,交换空间的页面在利用时会起首被交换到物理内存,假设此时没有足够的物理内存来包容那些页面,它们又会被立即交换出往,如斯以来,虚拟内存中可能没有足够空间来存储那些交换页面,最末会招致linux呈现假死机、办事反常等问题,linux固然能够在一段时间内自行恢复,但是恢复后的系统已经根本不成用了。

因而,合理规划和设想linux内存的利用,长短常重要的。

虚拟内存原理:

在系统中运行的每个历程都需要利用到内存,但不是每个历程都需要每时每刻利用系统分配的内存空间。当系统运行所需内存超越现实的物理内存,内核会释放某些历程所占用但未利用的部门或所有物理内存,将那部门材料存储在磁盘上曲到历程下一次挪用,并将释放出的内存提赐与有需要的历程利用。

在Linux内存治理中,次要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中比来不常利用的页面换到磁盘上,把活动页面保留在内存中供历程利用。交换手艺是将整个历程,而不是部门页面,全数交换到磁盘上。

分页(Page)写进磁盘的过程被称做Page-Out,分页(Page)从磁盘从头回到内存的过程被称做Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发作了分页错误(Page Fault)。

当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部门物理内存。虽然Page-Out不是经常发作,但是假设Page-out频繁不竭的发作,曲到当内核治理分页的时间超越运行程式的时间时,系统效能会急剧下降。那时的系统已经运行十分慢或进进暂停形态,那种形态亦被称做thrashing(波动)。

1.号令格局:

vmstat [-a] [-n] [-S unit] [delay [ count]]vmstat [-s] [-n] [-S unit]vmstat [-m] [-n] [delay [ count]]vmstat [-d] [-n] [delay [ count]]vmstat [-p disk partition] [-n] [delay [ count]]vmstat [-f]vmstat [-V]2.号令功用:用来展现虚拟内存的信息

3.号令参数:

-a:展现活泼和非活泼内存-f:展现从系统启动至今的fork数量 。-m:展现slabinfo-n:只在起头时展现一次各字段名称。-s:展现内存相关统计信息及多种系统活动数量。delay:刷新时间间隔。假设不指定,只展现一条成果。count:刷新次数。假设不指定刷新次数,但指定了刷新时间间隔,那时刷新次数为无限。-d:展现磁盘相关统计信息。-p:展现指定磁盘分区统计信息-S:利用指定单元展现。参数有 k 、K 、m 、M ,别离代表1000、1024、1000000、1048576字节(byte)。默认单元为K(1024 bytes)-V:展现vmstat版本信息。4.利用实例:

实例1:展现虚拟内存利用情状号令:

vmstat输出:

阐明:字段阐明:

Procs(历程):r: 运行队列中历程数量b: 期待IO的历程数量Memory(内存):swpd: 利用虚拟内存大小free: 可用内存大小buff: 用做缓冲的内存大小cache: 用做缓存的内存大小Swap:

si: 每秒从交换区写到内存的大小so: 每秒写进交换区的内存大小IO:(如今的Linux版本块的大小为1024bytes)bi: 每秒读取的块数bo: 每秒写进的块数系统:

in: 每秒中断数,包罗时钟中断。cs: 每秒上下文切换数。CPU(以百分比表达):us: 用户历程施行时间(user time)sy: 系统历程施行时间(system time)id: 闲暇时间(包罗IO期待时间),中心处置器的闲暇时间 。以百分比表达。wa: 期待IO时间备注:假设 r经常大于 4 ,且id经常少于40,表达cpu的负荷很重。假设pi,po 持久不等于0,表达内存不敷。假设disk 经常不等于0, 且在 b中的队列 大于3, 表达 io性能欠好。Linux在具有高不变性、可靠性的同时,具有很好的可伸缩性和扩展性,可以针对差别的利用和硬件情况调整,优化出称心当前利用需要的更佳性能。因而企业在庇护Linux系统、停止系统调优时,领会系统性能阐发东西是至关重要的。

号令:

vmstat 5 5表达在5秒时间内停止5次摘样。将得到一个数据汇总他可以反映实正的系统情状。

实例2:展现活泼和非活泼内存

号令:

vmstat -a 2 5输出:

[root@localhost ~]# vmstat -a 2 5procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 0 3029752 387728 513008 0 0 0 2 3 2 0 0 100 0 0 0 0 0 3029752 387728 513076 0 0 0 0 1005 34 0 0 100 0 0 0 0 0 3029752 387728 513076 0 0 0 22 1004 36 0 0 100 0 0 0 0 0 3029752 387728 513076 0 0 0 0 1004 33 0 0 100 0 0 0 0 0 3029752 387728 513076 0 0 0 0 1003 32 0 0 100 0 0阐明:

利用-a选项展现活泼和非活泼内存时,所展现的内容除增加inact和active外,其他展现内容与例子1不异。字段阐明:

Memory(内存):inact: 非活泼内存大小(当利用-a选项时展现)active: 活泼的内存大小(当利用-a选项时展现)实例3:查看系统已经fork了几次

号令:

vmstat -f输出:

[root@SCF1129 ~]# vmstat -f 12744849 forks[root@SCF1129 ~]#阐明:那个数据是从/proc/stat中的processes字段里获得的

实例4:查看内存利用的详尽信息

号令:

vmstat -s输出:

[root@localhost ~]# vmstat -s 4043760 total memory 1013884 used memory 513012 active memory 387728 inactive memory 3029876 free memory 199616 buffer memory 690980 swap cache 6096656 total swap 0 used swap 6096656 free swap 83587 non-nice user cpu ticks 132 nice user cpu ticks 278599 system cpu ticks 913344692 idle cpu ticks 814550 IO-wait cpu ticks 10547 IRQ cpu ticks 21261 softirq cpu ticks 0 stolen cpu ticks 310215 pages paged in 14254652 pages paged out 0 pages swapped in 0 pages swapped out 288374745 interrupts 146680577 CPU context switches 1351868832 boot time 367291 forks阐明:那些信息的别离来自于/proc/meminfo,/proc/stat和/proc/vmstat。

实例5:查看磁盘的读/写

号令:

vmstat -d输出:

[root@localhost ~]# vmstat -ddisk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur secram0 0 0 0 0 0 0 0 0 0 0ram1 0 0 0 0 0 0 0 0 0 0ram2 0 0 0 0 0 0 0 0 0 0ram3 0 0 0 0 0 0 0 0 0 0ram4 0 0 0 0 0 0 0 0 0 0ram5 0 0 0 0 0 0 0 0 0 0ram6 0 0 0 0 0 0 0 0 0 0ram7 0 0 0 0 0 0 0 0 0 0ram8 0 0 0 0 0 0 0 0 0 0ram9 0 0 0 0 0 0 0 0 0 0ram10 0 0 0 0 0 0 0 0 0 0ram11 0 0 0 0 0 0 0 0 0 0ram12 0 0 0 0 0 0 0 0 0 0ram13 0 0 0 0 0 0 0 0 0 0ram14 0 0 0 0 0 0 0 0 0 0ram15 0 0 0 0 0 0 0 0 0 0sda 33381 6455 615407 63224 2068111 1495416 28508288 15990289 0 10491hdc 0 0 0 0 0 0 0 0 0 0fd0 0 0 0 0 0 0 0 0 0 0md0 0 0 0 0 0 0 0 0 0 0[root@localhost ~]#阐明:那些信息次要来自于/proc/diskstats.merged:表达一次来自于合并的写/读恳求,一般系统会把多个毗连/临近的读/写恳求合并到一路来操做.

实例6:查看/dev/sda1磁盘的读/写

号令:输出:

[root@SCF1129 ~]# df文件系统 1K-块 已用 可用 已用% 挂载点/dev/sda3 1119336548 27642068 1034835500 3% /tmpfs 32978376 0 32978376 0% /dev/shm/dev/sda1 1032088 59604 920056 7% /boot[root@SCF1129 ~]# vmstat -p /dev/sda1sda1 reads read sectors writes requested writes 18607 4249978 6 48[root@SCF1129 ~]# vmstat -p /dev/sda3sda3 reads read sectors writes requested writes 429350 35176268 28998789 980301488[root@SCF1129 ~]#阐明:

那些信息次要来自于/proc/diskstats。

reads:来自于那个分区的读的次数。

read sectors:来自于那个分区的读扇区的次数。

writes:来自于那个分区的写的次数。

requested writes:来自于那个分区的写恳求次数。

实例7:查看系统的 slab 信息

号令:vmstat -m输出:

[root@localhost ~]# vmstat -mCache Num Total Size Pagesip_conntrack_expect 0 0 136 28ip_conntrack 3 13 304 13ip_fib_alias 11 59 64 59ip_fib_hash 11 59 64 59AF_VMCI 0 0 960 4bio_map_info 100 105 1064 7dm_mpath 0 0 1064 7jbd_4k 0 0 4096 1dm_uevent 0 0 2608 3dm_tio 0 0 24 144dm_io 0 0 48 77scsi_cmd_cache 10 10 384 10sgpool-128 32 32 4096 1sgpool-64 32 32 2048 2sgpool-32 32 32 1024 4sgpool-16 32 32 512 8sgpool-8 45 45 256 15scsi_io_context 0 0 112 34ext3_inode_cache 51080 51105 760 5ext3_xattr 36 88 88 44journal_handle 18 144 24 144journal_head 56 80 96 40revoke_table 4 202 16 202revoke_record 0 0 32 112uhci_urb_priv 0 0 56 67UNIX 13 33 704 11flow_cache 0 0 128 30msi_cache 33 59 64 59cfq_ioc_pool 14 90 128 30cfq_pool 12 90 216 18crq_pool 16 96 80 48deadline_drq 0 0 80 48as_arq 0 0 96 40mqueue_inode_cache 1 4 896 4isofs_inode_cache 0 0 608 6hugetlbfs_inode_cache 1 7 576 7Cache Num Total Size Pagesext2_inode_cache 0 0 720 5ext2_xattr 0 0 88 44dnotify_cache 0 0 40 92dquot 0 0 256 15eventpoll_pwq 3 53 72 53eventpoll_epi 3 20 192 20inotify_event_cache 0 0 40 92inotify_watch_cache 1 53 72 53kioctx 0 0 320 12kiocb 0 0 256 15fasync_cache 0 0 24 144shmem_inode_cache 254 290 768 5posix_timers_cache 0 0 128 30uid_cache 0 0 128 30ip_mrt_cache 0 0 128 30tcp_bind_bucket 3 112 32 112inet_peer_cache 0 0 128 30secpath_cache 0 0 64 59xfrm_dst_cache 0 0 384 10ip_dst_cache 5 10 384 10arp_cache 1 15 256 15RAW 3 5 768 5UDP 5 10 768 5tw_sock_TCP 0 0 192 20request_sock_TCP 0 0 128 30TCP 4 5 1600 5blkdev_ioc 14 118 64 59blkdev_queue 20 30 1576 5blkdev_requests 13 42 272 14biovec-256 7 7 4096 1biovec-128 7 8 2048 2biovec-64 7 8 1024 4biovec-16 7 15 256 15biovec-4 7 59 64 59biovec-1 23 202 16 202bio 270 270 128 30utrace_engine_cache 0 0 64 59Cache Num Total Size Pagesutrace_cache 0 0 64 59sock_inode_cache 33 48 640 6skbuff_fclone_cache 7 7 512 7skbuff_head_cache 319 390 256 15file_lock_cache 1 22 176 22Acpi-Operand 4136 4248 64 59Acpi-ParseExt 0 0 64 59Acpi-Parse 0 0 40 92Acpi-State 0 0 80 48Acpi-Namespace 2871 2912 32 112delayacct_cache 81 295 64 59taskstats_cache 4 53 72 53proc_inode_cache 1427 1440 592 6sigqueue 0 0 160 24radix_tree_node 13166 13188 536 7bdev_cache 23 24 832 4sysfs_dir_cache 5370 5412 88 44mnt_cache 26 30 256 15inode_cache 2009 2009 560 7dentry_cache 60952 61020 216 18filp 479 1305 256 15names_cache 3 3 4096 1avc_node 14 53 72 53selinux_inode_security 994 1200 80 48key_jar 2 20 192 20idr_layer_cache 74 77 528 7buffer_head 164045 164800 96 40mm_struct 51 56 896 4vm_area_struct 1142 1958 176 22fs_cache 35 177 64 59files_cache 36 55 768 5signal_cache 72 162 832 9sighand_cache 68 84 2112 3task_struct 76 80 1888 2anon_vma 458 864 24 144pid 83 295 64 59shared_policy_node 0 0 48 77Cache Num Total Size Pagesnuma_policy 37 144 24 144size-131072(DMA) 0 0 131072 1size-131072 0 0 131072 1size-65536(DMA) 0 0 65536 1size-65536 1 1 65536 1size-32768(DMA) 0 0 32768 1size-32768 2 2 32768 1size-16384(DMA) 0 0 16384 1size-16384 5 5 16384 1size-8192(DMA) 0 0 8192 1size-8192 7 7 8192 1size-4096(DMA) 0 0 4096 1size-4096 110 111 4096 1size-2048(DMA) 0 0 2048 2size-2048 602 602 2048 2size-1024(DMA) 0 0 1024 4size-1024 344 352 1024 4size-512(DMA) 0 0 512 8size-512 433 480 512 8size-256(DMA) 0 0 256 15size-256 1139 1155 256 15size-128(DMA) 0 0 128 30size-64(DMA) 0 0 64 59size-64 5639 5782 64 59size-32(DMA) 0 0 32 112size-128 801 930 128 30size-32 3005 3024 32 112kmem_cache 137 137 2688 1那组信息来自于/proc/slabinfo。

slab:因为内核会有许多小对象,那些对象构造销毁非常频繁,好比i-node,dentry,那些对象假设每次构建的时候就向内存要一个页(4kb),而其实只要几个字节,如许就会十分浪费,为领会决那个问题,就引进了一种新的机造来处置在统一个页框中若何分配小存储区,而slab能够对小对象停止分配,如许就不消为每一个对象分配页框,从而节约了空间,内查对一些小对象创建析构很频繁,slab对那些小对象停止缓冲,能够反复操纵,削减内存分配次数。

0
回帖

超级干货:3个性能监控和优化命令详解 期待您的回复!

取消