使用linux vmstatt监控时,上下文切换cs的时间高,wa等待的时间就小了吗?

[转]meminfo&vmstat&procrank&top等详解
工作需要,学习了!
命令:cat /proc/meminfo
MemTotal:&&&&&&&&
MemFree:&&&&&&&&&&&
Buffers:&&&&&&&&&&&&&
Cached:&&&&&&&&&&&
SwapCached:&&&&&&&
Active:&&&&&&&&&&&
Inactive:&&&&&&&&&
Active(anon):&&&&&
Inactive(anon):&&&
Active(file):&&&&&&
Inactive(file):&&&&
Unevictable:&&&&&&&
Mlocked:&&&&&&&&&&
HighTotal:&&&&&&&&&&&&
HighFree:&&&&&&&&&&&&&
LowTotal:&&&&&&&&
LowFree:&&&&&&&&&&&
SwapTotal:&&&&&&&
SwapFree:&&&&&&&&
Dirty:&&&&&&&&&&&&&&&&
Writeback:&&&&&&&&&&&&
AnonPages:&&&&&&&&
Mapped:&&&&&&&&&&&
Shmem:&&&&&&&&&&&&&&&
Slab:&&&&&&&&&&&&&
SReclaimable:&&&&&&
SUnreclaim:&&&&&&&
KernelStack:&&&&&&&
PageTables:&&&&&&&&
NFS_Unstable:&&&&&&&&&
Bounce:&&&&&&&&&&&&&&&
WritebackTmp:&&&&&&&&&
CommitLimit:&&&&&
Committed_AS:&&&
2792956 kB
VmallocTotal:&&&&
VmallocUsed:&&&&&
VmallocChunk:&&&&
MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)
& & MemFree:
LowFree与HighFree的总和
& & Buffers:
用来给块设备做的缓冲大小(只记录文件系统的metadata以及 tracking in-flight pages,就是说
buffers是用来存储,目录里面有什么内容,权限等等。)
& & Cached:
用来给文件做缓冲大小(直接用来记忆我们打开的文件). 它不包括SwapCached
& & SwapCached:
已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。
& & Active:
最近经常被使用的内存,除非非常必要否则不会被移作他用.
& & Inactive:
最近不经常被使用的内存,非常用可能被用于其他途径.
& & HighTotal:
& & HighFree:
高位内存是指所有在860MB以上的内存空间,该区域主要用于用户空间的程序或者是缓存页面。内核必须使用不同的手法使用该段内存,因此它比低位内存要慢一些。
& & LowTotal:
& & LowFree:
低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。
&& & Among many
other things, it is where everything from the Slab is
allocated.&&Bad things happen
when you're out of lowmem.
& & SwapTotal: 交换空间的总和
& & SwapFree:
从RAM中被替换出暂时存在磁盘上的空间大小
& & Dirty: 等待被写回到磁盘的内存大小。
& & Writeback:
正在被写回到磁盘的内存大小。
& & Mapped: 影射文件的大小。
& & Slab: 内核数据结构缓存
& & VmallocTotal:
vmalloc内存大小
& & VmallocUsed:
已经被使用的虚拟内存大小。
& & VmallocChunk: largest
contigious block of vmalloc area which is free
&&& CommitLimit:
Based on the overcommit ratio('vm.overcommit_ratio'),
&&&&&&&&&&&&&
this is the total amount of& memory currently
available to
&&&&&&&&&&&&&
be allocated on the system. This limit is only adhered to
&&&&&&&&&&&&&
if strict overcommit accounting is enabled (mode 2 in
&&&&&&&&&&&&&
'vm.overcommit_memory').
&&&&&&&&&&&&&
The CommitLimit is calculated with the following formula:
&&&&&&&&&&&&&
CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
&&&&&&&&&&&&&
For example, on a system with 1G of physical RAM and 7G
&&&&&&&&&&&&&
of swap with a `vm.overcommit_ratio` of 30 it would
&&&&&&&&&&&&&
yield a CommitLimit of 7.3G.
&&&&&&&&&&&&&
For more details, see the memory overcommit documentation
&&&&&&&&&&&&&
in vm/overcommit-accounting.
&&&&&&&&&&&&
Committed_AS: The amount of memory presently allocated on
the system.
The committed memory is a sum of all of the memory which
&&&&&&&&&&&&&
has been allocated by processes, even if it has not been
&&&&&&&&&&&&&
"used" by them as of yet. A process which malloc()'s 1G
&&&&&&&&&&&&&
of memory, but only touches 300M of it will only show up
&&&&&&&&&&&&&
as using 300M of memory even if it has the address space
&&&&&&&&&&&&&
allocated for the entire 1G. This 1G is memory which has
&&&&&&&&&&&&&
been "committed" to by the VM and can be used at any time
&&&&&&&&&&&&&
by the allocating application. With strict overcommit
&&&&&&&&&&&&&
enabled on the system (mode 2 in 'vm.overcommit_memory'),
&&&&&&&&&&&&&
allocations which would exceed the CommitLimit (detailed
&&&&&&&&&&&&&
above) will not be permitted. This is useful if one needs
&&&&&&&&&&&&&
to guarantee that processes will not fail due to lack of
&&&&&&&&&&&&&
memory once that memory has been successfully allocated.
VmallocTotal: 可以vmalloc虚拟内存大小
&&& VmallocUsed:
已经被使用的虚拟内存大小。
VmallocChunk: largest contigious block of vmalloc area which is
使用adb shell cat /proc/meminfo 命令,查看剩余的空间还有多少,通常的系统剩余空间是: MemFree +
如下看到的系统剩余空间是:5616K + 158632K
&&&&&&&&cat
proc/meminfo&&&&&&&&&
MemTotal:&&&&&&&&
&&&&&&&&&&MemFree:&&&&&&&&&&&
kB&&&&&&&&&
Buffers:&&&&&&&&&&&
&&&&&&&&&&Cached:&&&&&&&&&&
SwapCached:&&&&&&&&&&&
Active:&&&&&&&&&&
Inactive:&&&&&&&&&
Active(anon):&&&&
&&&&&&&需要注意的是,在setting-&apps-&running
app里面看到的剩余空间是上述MemFree + cached + background running app memory -
SECOND_SERVER_MEM,具体的计算方法参考:RunningProcessView.java(/alps/package/apps/settings/src/com/android/setting/applications)里面的void
refreshUi(boolean dataChanged)函数
[root@localhost ~]# vmstat -n 3&
(每个3秒刷新一次)&
procs -----------memory---------- ---swap-- -----io---- --system--
----cpu----
r b& &swpd&
&free& &buff
cache& &si&
&in& & cs us sy
1 0& & 144 252
2386848& & 0&
&&&2 48 21 31
2 0& & 144 252
2386848& & 0&
0 0& & 144 252
2386848& & 0&
& 10 1071& &670
32 5 63 0&
0 0& & 144 252
2386848& & 0&
&189 1035& &558
20 3 77 0&
2 0& & 144 252
2386848& & 0&
vmstat所带参数请用man vmstat查看
r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数
w: 被交换出去的可运行的进程数。此数由 linux 计算得出,但 linux
并不耗尽交换空间&
虚拟内存使用情况,单位:KB
free: 空闲的内存,单位KB
被用来做为缓存的内存数,单位:KB
从磁盘交换到内存的交换页数量,单位:KB/秒
从内存交换到磁盘的交换页数量,单位:KB/秒
发送到块设备的块数,单位:块/秒
从块设备接收到的块数,单位:块/秒
in: 每秒的中断数,包括时钟中断
每秒的环境(上下文)切换次数
的总使用百分比来显示&
us: CPU 使用时间
sy: CPU 系统使用时间
id: 闲置时间
如果fre,将会出现连续不断的页面调度,将导致系统性能问题。
对于page列,re,pi,po,cy维持于比较稳定的状态,PI率不超过5,如果有pagin发生,那么关联页面必须先进行pageout
在内存相对紧张的环境下pagein会强制对不同的页面进行steal操作。如果系统正在读一个大批的永久页面,你也许可以看到po和pi列
会出现不一致的增长,这种情景并不一定表明系统负载过重,但是有必要对应用程序的数据访问模式进行见检查。在稳定的情况下,扫描率和重置率几乎相等,在
多个进程处理使用不同的页面的情况下,页面会更加不稳定和杂乱,这时扫描率可能会比重置率高出。
faults列,in,sy,cs会不断跳跃,这里没有明确的限制,唯一的就是这些值最少大于100
cpu列,us,sys,id和wa也是不确定的,最理想的状态是使cpu处于100%工作状态,单这只适合单用户的情况下。
如果在多用户环境中us+sys》80,进程就会在运行队列中花费等待时间,响应时间和吞吐量就会下降。wa&40表明磁盘io没有也许存在不合理的平衡,或者对磁盘操作比较频繁,
vmstat各项:
r--&在运行队列中等待的进程数&
b--&在等待io的进程数&
w--&可以进入运行队列但被替换的进程&
swap--&现时可用的交换内存(k表示)&
free--&空闲的内存(k表示)&
re--》回收的页面&
mf--》非严重错误的页面&
pi--》进入页面数(k表示)&
po--》出页面数(k表示)&
fr--》空余的页面数(k表示)&
de--》提前读入的页面中的未命中数&
sr--》通过时钟算法扫描的页面&
disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号&
fault 显示每秒的中断数&
in--》设备中断&
sy--》系统中断&
cy--》cpu交换&
cpu 表示cpu的使用状态&
cs--》用户进程使用的时间&
sy--》系统进程使用的时间&
id--》cpu空闲的时间&
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。&
如果pi,po 长期不等于0,表示内存不足。&
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。
Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。
  在Linux下有很多系统性能分析工具,比较常见的有top、free、ps、time、timex、uptime等。下文将介绍几个较为重要的性能分析工具vmstat、iostat和sar及其使用。&
  用vmstat监视内存使用情况&
  vmstat是Virtual Meomory
Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。&
  vmstat的语法如下:&
  vmstat [-V] [-n] [delay [count]]
  其中,-V表示打印出版本信息;-n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。对于vmstat输出各字段的含义,可运行man
vmstat查看
使用adb shell procrank
命令(仅ENG版本可用),查看有哪些app占用内存过多,请以PSS栏位为参考,重点关注自己安装的一些APK以及PSS值比较大的process
adb shell procrank
Rss&&&&&&Pss&&&&&
Uss& cmdline
65284K&&&38499K&&
35560K& com.android.launcher
54880K&&&30001K&&&27000K&
system_server
28988K&&&18924K&&&12432K&
/system/bin/surfaceflinger
42320K&&&15445K&&&10704K&
com.android.systemui
对于尚明中占用比较异常的process,可以透过 adb shell showmap
[pid](仅ENG版本可用)查看具体使用情况。以system_server 为例,先adb shell ps
system_server得到pid:
shell ps system_server
PID&& PPID&
PC&&&&&&&&
system&&&&268&&&111&&
76 ffffffff 400e9c70 S system_server
再& adb shell showmap 268查看各个.so以及
heap,stack的使用情况,做初步的判断(同样以PSS栏位参考)
shell&showmap 268
virtual&&&&&&&&&&&&&&&&&&&&
shared&& shared&
private& private
&size&&&&&
RSS&&&&&&PSS&&&&clean&&&
dirty&&& #
&&& --------
-------- -------- -------- -------- -------- -------- ----
------------------------------
20&&&&&&&20&&&&&&&&0&&&&&&&
1&/data/dalvik-cache/system@app@SettingsProvider.apk@classes.dex
148&&&&&&103&&&&&&&32&&&&&&
18&/data/dalvik-cache/system@framework@android.policy.jar@classes.dex
1348&&&&&&
28&&&&&&&&8&&&&&&&20&&&&&&&
1&/data/dalvik-cache/system@framework@apache-xml.jar@classes.dex
60&&&&&&&13&&&&&&&52&&&&&&&
1&/data/dalvik-cache/system@framework@bouncycastle.jar@classes.dex
8&&&&&&&&0&&&&&&&&8&&&&&&&
1&/data/dalvik-cache/system@framework@core-junit.jar@classes.dex
1056&&&&&&126&&&&&1012&&&&&&&
1&/data/dalvik-cache/system@framework@core.jar@classes.dex
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。
top - 01:06:48
up&&1:22,&&1
user,&&load average: 0.06,
0.60,&&0.48
&Tasks:&&29
total,& &1
running,&&28
sleeping,& &0
&0&&zombie
&Cpu(s):&&0.3%
sy,&&0.0% ni, 98.7%
wa,&&0.0%&&hi,&&0.0%
&Mem:& & 191272k
total,& &173656k
used,& & 17616k
22052k&&buffers
&Swap:& &192772k
total,& &&
used,& &192772k
&123988k&&cached
&PR&&NI&&VIRT&&RES&&SHR
S %CPU %MEM&
&&&TIME+&&COMMAND
S&&0.7&&1.3&
&0:11.03&&sshd
&0&&2128&&980&&796
R&&0.7&&0.5&
&0:02.72 top
&0&&1992&&632&&544
S&&0.0&&0.3&
&0:00.90 init
S&&0.0&&0.0&
&0:00.00 ksoftirqd/0
S&&0.0&&0.0&
&0:00.00&&watchdog/0
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同
uptime&&命令的执行结果。其内容如下:
系统运行时间,格式为时:分
当前登录用户数
load average: 0.06, 0.60, 0.48
系统负载,即任务队列的平均长度。
&三个数值分别为&&1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total
正在运行的进程数
28 sleeping
睡眠的进程数
停止的进程数
僵尸进程数
Cpu(s): 0.3% us
用户空间占用CPU百分比
内核空间占用CPU百分比
用户进程空间内改变过优先级的进程占用CPU百分比
空闲CPU百分比
等待输入输出的CPU时间百分比
最后两行为内存信息。内容如下:
Mem: 191272k total
物理内存总量
173656k used
使用的物理内存总量
17616k free
空闲内存总量
22052k buffers
用作内核缓存的内存量
Swap: 192772k total
交换区总量
使用的交换区总量
192772k free
空闲交换区总量
123988k cached
缓冲的交换区总量。
&内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
&该数值即为这些内容已存在于内存中的交换区的大小。
&相应的内存再次被换出时可不必再对交换区写入。
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
Real user name
进程所有者的用户id
进程所有者的用户名
进程所有者的组名
启动进程的终端名。不是从终端启动的进程则显示为 ?
nice值。负值表示高优先级,正值表示低优先级
最后使用的CPU,仅在多CPU环境下有意义
上次更新到现在的CPU时间占用百分比
进程使用的CPU时间总计,单位秒
进程使用的CPU时间总计,单位1/100秒
进程使用的物理内存百分比
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
进程使用的虚拟内存中,被换出的大小,单位kb。
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
可执行代码占用的物理内存大小,单位kb
可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
共享内存大小,单位kb
页面错误次数
最后一次写入到现在,被修改过的页面数。
进程状态。
&D=不可中断的睡眠状态
&T=跟踪/停止
&Z=僵尸进程
命令名/命令行
若该进程在睡眠,则显示睡眠中的系统函数名
任务标志,参考 sched.h
默认情况下仅显示比较重要的&&PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND&&列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过&f&键可以选择显示的内容。按
f 键之后会显示列的列表,按
a-z&&即可显示或隐藏对应的列,最后按回车键确定。
按&o&键可以改变列的显示顺序。按小写的
a-z 可以将相应的列向右移动,而大写的
A-Z&&可以将相应的列向左移动。最后按回车键确定。
按大写的&F&或&O&键,然后按
可以将进程按照相应的列进行排序。而大写的&&R&键可以将当前的排序倒转。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。linux vmstat输出方法解析
procs &&&&memory&&&- &swap& &&io&- &system& &-cpu&-
r b swpd free buff cache si so bi bo in cs us sy id wa
Vmstat procs &&&&memory&&&- &swap& &&io&- &system& &-cpu&- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 6
0 1 34 45 99 33 0 0 99 0 procs r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。 b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 cpu 表示cpu的使用状态 us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 id 列显示了cpu处在空闲状态的时间百分比 system 显示采集间隔内发生的中断数 in 列表示在某一时间间隔中观测到的每秒设备中断数。 cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 memory swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 free 当前的空闲页面列表中内存数量(k表示) buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap si 由内存进入内存交换区数量。 so由内存交换区进入内存数量。 IO bi 从块设备读入数据的总量(读磁盘)(每秒kb)。 bo 块设备写入数据的总量(写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。  vmstat命令输出分成六个部分:   (1)进程procs:   r:在运行队列中等待的进程数 。   b:在等待io的进程数 。   (2)内存memoy:   swpd:现时可用的交换内存(单位KB)。   free:空闲的内存(单位KB)。   buff: 缓冲去中的内存数(单位:KB)。   cache:被用来做为高速缓存的内存数(单位:KB)。   (3) swap交换页面   si: 从磁盘交换到内存的交换页数量,单位:KB/秒。   so: 从内存交换到磁盘的交换页数量,单位:KB/秒。   (4) io块设备:   bi: 发送到块设备的块数,单位:块/秒。   bo: 从块设备接收到的块数,单位:块/秒。   (5)system系统:   in: 每秒的中断数,包括时钟中断。   cs: 每秒的环境(上下文)切换次数。   (6)cpu中央处理器:   cs:用户进程使用的时间 。以百分比表示。   sy:系统进程使用的时间。 以百分比表示。   id:中央处理器的空闲时间 。以百分比表示。   如果 r经常大于 4 ,且id经常小于40,表示中央处理器的负荷很重。 如果bi,bo 长期不等于0,表示物理内存容量太小。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
静以修身,俭以养德。
LOFTER精选
swpd&已使用虚拟内存大小,如果大于0就表示你的机器物理内存不足了(真的不足还是内存泄露?)free &:空闲的物理内存的大小。buff& &存储目录内容,权限等的缓存cache
cache直接用来存储打开文的缓冲 sync后,使用echo 1(2,3) & /proc/sys/vm/drop_caches分别进行释放吧!有关页面交换空间的信息有:si
&每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了.
so &每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
&块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备
bo&块设备每秒发送的块数量.例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就意味着IO操作过于频繁,需要进行调整。
in&每秒CPU的中断次数,包括时间中断(中断太多了肯定有问题)
每秒上下文切换次数。这个越小越好。太大了,要考虑调低线程或者进程的数目,例如在apache服务器中,做性能测试时会进行几千并发甚至几万并发的测试,这时就要设置合适的进程数。系统层面的调用也是同样的道理。CS值过大表示上下文切换过于频繁,会消耗很多资源(CPU浪费在上下文切换没有充分利用)。
用户CPU时间(百分比)。
sy 系统CPU时间(百分比),如果太高,表示系统调用时间长,例如是IO操作频繁。
id &空闲 CPU时间(百分比),一般来说,id + us + sy =
wt 等待IO的 CPU时间(百分比),过大就意味着CPU和IO操作需要调整。vmstat 可以用来确定一个系统的工作是受限于CPU还是受限于内存:如果CPU的sy和us值相加的百分比接近100%,或者运行队列(r) 中等待的进程数总是不等于 0,则该系统受限于CPU;如果pi、po的值总是不等于0,则该系统受限于内存。vmstat运用举例:vmstat –f&& : 显示系统中的子进程数。vmstat –s&& : 显示系统中不同的事件。vmstat –i&& : 显示系统的中断数。vmstat hdisk0 hdisk1: 显示hdisk0 、hdisk1的使用情况。vmstat 1 10& :每隔一秒显示一次系统的运行状况,共显示10次。
阅读(241)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'vmstat 结果分析',
blogAbstract:'vmstat命令用来获得有关进程、虚存、页面交换空间及CPU活动的信息。这些信息反映了系统的负载情况。vmstat首次运行时显示自系统启动开始的各项统计信息,之后运行vmstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r
cs us sy id wa有关进程的信息有:r :在就绪状态等待的进程数。(如果这个数字超过CPU数量就要注意了!)',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:7,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'静以修身,俭以养德。',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Linux vmstat命令用法与参数说明
本文介绍下,linux系统中的vmstat命令的用法,该命令可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率、内存使用等,有需要的朋友参考下。
本节内容:
linux下vmstat命令的用法。
在linux操作系统中,vmstat 命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
相比top命令,该命令可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。
复制代码 代码示例:
root@jbxue:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
&r& b&& swpd&& free&& buff& cache&& si&& so&&& bi&&& bo&& in&& cs us sy id wa
&1& 0&&&&& 0 836 3819540&&& 0&&& 0&&&& 0&&&& 1&&& 2&&& 0& 0& 0 100& 0
2表示每个两秒采集一次服务器状态,1表示只采集一次。
在应用过程中,会在一段时间内一直监控,不想监控直接结束vmstat即可:
复制代码 代码示例:
root@jbxue:~# vmstat 2&
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
&r& b&& swpd&& free&& buff& cache&& si&& so&&& bi&&& bo&& in&& cs us sy id wa
&1& 0&&&&& 0 836 3819660&&& 0&&& 0&&&& 0&&&& 1&&& 2&&& 0& 0& 0 100& 0
&0& 0&&&&& 0 836 3819660&&& 0&&& 0&&&& 0&&&& 0&& 88& 158& 0& 0 100& 0
&0& 0&&&&& 0 836 3819660&&& 0&&& 0&&&& 0&&&& 2&& 86& 162& 0& 0 100& 0
&0& 0&&&&& 0 836 3819660&&& 0&&& 0&&&& 0&&& 10&& 81& 151& 0& 0 100& 0
&1& 0&&&&& 0 836 3819660&&& 0&&& 0&&&& 0&&&& 2&& 83& 154& 0& 0 100& 0
这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。
vmstat命令的参数解释:
r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free&& 空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
buff&& Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M
cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
si& 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
so& 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi& 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id& 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt 等待IO CPU时间。
《相关文章》
本文标题:Linux vmstat命令用法与参数说明
版权所有:本站作品,允许转载,转载时请以超链接形式标明文章,原始出处,作者信息。否则将追究法律责任
------分隔线----------------------------
当在vmware 中系统以 Nat 方式连接网络时,出现 :
ping unknown host...
eth0 网卡设备号 Link encap 基本描述,链接概况 HWaddr 硬件MAC地址 inet addr 网络i...
lspci:查看PCI信息 -v 以冗余模式显示所有设备的详细信息 -vv 比 -v 还要更详细的信...
1、基本读取 read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说...
sed的基本用法 send:行编辑器(全屏编辑器:vi) sed模式空间 默认不编辑源文件,仅对模...
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录: find . -name *.tar -ex...

我要回帖

更多关于 vmstat 的文章

 

随机推荐