<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>花开的地方 &#187; iostat</title>
	<atom:link href="http://www.bsdmap.com/tag/iostat/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bsdmap.com</link>
	<description>花开，没有声音……</description>
	<lastBuildDate>Wed, 08 Feb 2012 13:39:21 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19814</generator>
		<item>
		<title>几个性能工具备忘</title>
		<link>http://www.bsdmap.com/2008/09/17/man-top/</link>
		<comments>http://www.bsdmap.com/2008/09/17/man-top/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 13:45:12 +0000</pubDate>
		<dc:creator>洪川</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SHELL]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[iostat]]></category>
		<category><![CDATA[man top]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[vmstat]]></category>

		<guid isPermaLink="false">http://www.bsdmap.com/?p=629</guid>
		<description><![CDATA[top: * A: PID        = Process Id * E: USER       = User Name * H: PR         = Priority * I: NI         = Nice value * O: VIRT       = Virtual Image (kb) * Q: RES        = Resident size (kb) * T: SHR        = Shared Mem size (kb) * W: S          = Process Status * K: %CPU       [...]]]></description>
			<content:encoded><![CDATA[<p><strong>top:</strong></p>
<p>* A: PID        = Process Id<br />
* E: USER       = User Name<br />
* H: PR         = Priority<br />
* I: NI         = Nice value<br />
* O: VIRT       = Virtual Image (kb)<br />
* Q: RES        = Resident size (kb)<br />
* T: SHR        = Shared Mem size (kb)<br />
* W: S          = Process Status<br />
* K: %CPU       = CPU usage<br />
* N: %MEM       = Memory usage (RES)<br />
* M: TIME+      = CPU Time, hundredths<br />
b: PPID       = Parent Process Pid<br />
c: RUSER      = Real user name<br />
d: UID        = User Id<br />
f: GROUP      = Group Name<br />
g: TTY        = Controlling Tty<br />
j: P          = Last used cpu (SMP)<br />
p: SWAP       = Swapped size (kb)<br />
l: TIME       = CPU Time<br />
r: CODE       = Code size (kb)<br />
s: DATA       = Data+Stack size (kb)<br />
u: nFLT       = Page Fault count<br />
v: nDRT       = Dirty Pages count<br />
y: WCHAN      = Sleeping in Function<br />
z: Flags      = Task Flags &lt;sched.h&gt;<br />
* X: COMMAND    = Command name/line</p>
<p>Flags field:<br />
0&#215;00000001  PF_ALIGNWARN<br />
0&#215;00000002  PF_STARTING<br />
0&#215;00000004  PF_EXITING<br />
0&#215;00000040  PF_FORKNOEXEC<br />
0&#215;00000100  PF_SUPERPRIV<br />
0&#215;00000200  PF_DUMPCORE<br />
0&#215;00000400  PF_SIGNALED<br />
0&#215;00000800  PF_MEMALLOC<br />
0&#215;00002000  PF_FREE_PAGES (2.5)<br />
0&#215;00008000  debug flag (2.5)<br />
0&#215;00024000  special threads (2.5)<br />
0x001D0000  special states (2.5)<br />
0&#215;00100000  PF_USEDFPU (thru 2.4)</p>
<p>进程的优先级和nice级别<br />
进程优先级是一个决定进程被CPU执行优先顺序的参数，内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。（nice值越低优先级越高）<br />
进程优先级是无法去手动改变的，只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了，你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然，这意味着其他的一些进程将被分配更少的CPU资源，运行更慢一些。Linux支持nice值的范围是19（低优先级）到-20（高优先级），默认的值是0。如果需要改变一个进程的nice值为负数（高优先级），必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例，<br />
以nice值-5开始程序xyz<br />
#nice –n -5 xyz</p>
<p>改变已经运行的程序的nice值<br />
#renice level pid</p>
<p>将pid为2500的进程的nice值改为10<br />
#renice 10 2500</p>
<p><strong>vmstat:</strong></p>
<p>·process（procs）<br />
r：等待运行时间的进程数量<br />
b：处在不可中断睡眠状态的进程<br />
w：被交换出去但是仍然可以运行的进程，这个值是计算出来的<br />
·memoryswpd：虚拟内存的数量<br />
free：空闲内存的数量<br />
buff：用做缓冲区的内存数量<br />
·swap<br />
si：从硬盘交换来的数量<br />
so：交换到硬盘去的数量<br />
·IO<br />
bi：向一个块设备输出的块数量<br />
bo：从一个块设备接受的块数量<br />
·system<br />
in：每秒发生的中断数量， 包括时钟<br />
cs：每秒发生的context switches的数量<br />
·cpu(整个cpu运行时间的百分比)<br />
us：非内核代码运行的时间（用户时间，包括nice时间）<br />
sy：内核代码运行的时间（系统时间）<br />
id：空闲时间，在Linux 2.5.41之前的内核版本中，这个值包括I/O等待时间；<br />
wa：等待I/O操作的时间，在Linux 2.5.41之前的内核版本中这个值为0</p>
<p><strong>iostat:</strong></p>
<p>%user：user level（应用）的CPU占用率情况<br />
%nice：加入nice优先级的user level的CPU占用率情况<br />
%sys：system level（内核）的CPU占用情况<br />
%idle：空闲的CPU资源情况</p>
<p>Device：块设备名<br />
Tps：设备每秒进行传输的数量（每秒的I/O请求）。多个单独的I/O请求可以被组成一个传输操作，因为一个传输操作可以是不同的容量。<br />
Blk_read/s, Blk_wrtn/s：该设备每秒读写的块的数量。块可能为不同的容量。<br />
Blk_read, Blk_wrtn：自系统启动以来读写的块设备的总量。</p>
<p>块可能为不同的容量。块的大小一般为1024、2048、4048byte。可通过tune2fs或dumpe2fs获得：<br />
# tune2fs -l /dev/hda1|grep &#8216;Block size&#8217;<br />
Block size:               4096<br />
# dumpe2fs -h /dev/hda1|grep &#8216;Block size&#8217;<br />
dumpe2fs 1.35 (28-Feb-2004)<br />
Block size:               4096</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bsdmap.com/2008/09/17/man-top/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux性能分析工具</title>
		<link>http://www.bsdmap.com/2007/12/22/linux%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90%e5%b7%a5%e5%85%b7/</link>
		<comments>http://www.bsdmap.com/2007/12/22/linux%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90%e5%b7%a5%e5%85%b7/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 18:43:06 +0000</pubDate>
		<dc:creator>洪川</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iostat]]></category>
		<category><![CDATA[sar]]></category>
		<category><![CDATA[sysstat]]></category>
		<category><![CDATA[vmstat]]></category>
		<category><![CDATA[性能分析工具]]></category>

		<guid isPermaLink="false">http://www.bsdmap.com/~nix/2007/12/22/linux%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90%e5%b7%a5%e5%85%b7/</guid>
		<description><![CDATA[vmstst, ps, top, free,sysstat(sar,mpstat,iostat) 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查看。 用iostat监视I/O子系统情况 iostat是I/O statistics（输入/输出统计）的缩写，iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况，同时也会汇报出CPU使用情况。同vmstat一样，iostat也有一个弱点，就是它不能对某个进程进行深入分析，仅对系统的整体情况进行分析。 iostat的语法如下： 程序代码 iostat [ -c &#124; -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ] 其中，-c为汇报CPU的使用情况；-d为汇报磁盘的使用情况；-k表示每秒按kilobytes字节显示数据；-t为打印汇报的时间；-v表示打印出版本信息和用法；-x device指定要统计的设备名称，默认为所有的设备；interval指每次统计间隔的时间；count指按照这个时间间隔统计的次数。 iostat一般的输出格式如下： 程序代码 [...]]]></description>
			<content:encoded><![CDATA[<p>vmstst, ps, top, free,sysstat(sar,mpstat,iostat)</p>
<p>Linux在具有高稳定性、可靠性的同时，具有很好的可伸缩性和扩展性，能够针对不同的应用和硬件环境调整，优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时，了解系统性能分析工具是至关重要的。<br />
在Linux下有很多系统性能分析工具，比较常见的有top、free、ps、time、timex、uptime等。下文将介绍几个较为重要的性能分析工具vmstat、iostat和sar及其使用。</p>
<p>用vmstat监视内存使用情况</p>
<p>vmstat是Virtual Meomory Statistics（虚拟内存统计）的缩写，可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计，不足之处是无法对某个进程进行深入分析。</p>
<p>vmstat的语法如下：</p>
<p>程序代码<br />
vmstat [-V] [-n] [delay [count]]</p>
<p>其中，－V表示打印出版本信息；－n表示在周期性循环输出时，输出的头部信息仅显示一次；delay是两次输出之间的延迟时间；count是指按照这个时间间隔统计的次数。对于vmstat输出各字段的含义，可运行man vmstat查看。</p>
<p>用iostat监视I/O子系统情况</p>
<p>iostat是I/O statistics（输入/输出统计）的缩写，iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况，同时也会汇报出CPU使用情况。同vmstat一样，iostat也有一个弱点，就是它不能对某个进程进行深入分析，仅对系统的整体情况进行分析。</p>
<p>iostat的语法如下：</p>
<p>程序代码<br />
iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]</p>
<p>其中，-c为汇报CPU的使用情况；-d为汇报磁盘的使用情况；-k表示每秒按kilobytes字节显示数据；-t为打印汇报的时间；-v表示打印出版本信息和用法；-x device指定要统计的设备名称，默认为所有的设备；interval指每次统计间隔的时间；count指按照这个时间间隔统计的次数。</p>
<p>iostat一般的输出格式如下：<br />
程序代码</p>
<p>Linux 2.4.18-18smp (builder.linux.com) 2003年03月07日</p>
<p>avg-cpu: %user %nice %sys %idle<br />
4.81 0.01 1.03 94.15</p>
<p>Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn<br />
dev3-0 30.31 1117.68 846.52 16104536 12197374<br />
dev3-1 7.06 229.61 40.40 3308486 582080</p>
<p>对于输出中各字段的含义，iostat的帮助中有详细的说明。<br />
使用sar进行综合分析</p>
<p>表1 sar参数说明</p>
<p>选项 功能</p>
<p>-A 汇总所有的报告</p>
<p>-a 报告文件读写使用情况</p>
<p>-B 报告附加的缓存的使用情况</p>
<p>-b 报告缓存的使用情况</p>
<p>-c 报告系统调用的使用情况</p>
<p>-d 报告磁盘的使用情况</p>
<p>-g 报告串口的使用情况</p>
<p>-h 报告关于buffer使用的统计数据</p>
<p>-m 报告IPC消息队列和信号量的使用情况</p>
<p>-n 报告命名cache的使用情况</p>
<p>-p 报告调页活动的使用情况</p>
<p>-q 报告运行队列和交换队列的平均长度</p>
<p>-R 报告进程的活动情况</p>
<p>-r 报告没有使用的内存页面和硬盘块</p>
<p>-u 报告CPU的利用率</p>
<p>-v 报告进程、i节点、文件和锁表状态</p>
<p>-w 报告系统交换活动状况</p>
<p>-y 报告TTY设备活动状况</p>
<p>sar是System Activity Reporter（系统活动情况报告）的缩写。顾名思义，sar工具将对系统当前的状态进行取样，然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样，获得大量的取样数据；取样数据和分析的结果都可以存入文件，所需的负载很小。sar是目前Linux上最为全面的系统性能分析工具之一，可以从14个大方面对系统的活动进行报告，包括文件的读写情况、系统调用的使用情况、串口、CPU效率、内存使用状况、进程活动及IPC有关的活动等，使用也是较为复杂。</p>
<p>sar的语法如下：<br />
程序代码</p>
<p>sar [-option] [-o file] t [n]</p>
<p>它的含义是每隔t秒取样一次，共取样n次。其中-o file表示取样结果将以二进制形式存入文件file中。</p>
<p>另一种语法如下： 程序代码<br />
sar [-option] [-s time] [-e time] [-i sec] [-f file]</p>
<p>含义是表示从file文件中取出数据，如果没有指定-f file，则从标准数据文件/var/adm/sa/sadd取数据，其中dd表示当前天。另外，-s time表示起始时间；-e time表示停止时间；-i sec表示取样的时间间隔，如果不指定则表示取文件中所有的数据。对于具体的选项参见表1。</p>
<p>一般它与-q和-u联合使用，以便对每个CPU的使用情况进行分析，比如运行如下命令：</p>
<p>程序代码<br />
sar -q -u 5 1</p>
<p>将输出如下：<br />
程序代码<br />
Linux 2.4.18-18smp (builder.linux.com)  2003年03月07日</p>
<p>09时46分16? CPU %user %nice %system %idle<br />
09时46分21? all 0.20 0.00 0.00 99.80</p>
<p>09时46分16? runq-sz plist-sz ldavg-1 ldavg-5<br />
09时46分21? 0 91 0.00 0.00</p>
<p>Average: CPU %user %nice %system %idle<br />
Average: all 0.20 0.00 0.00 99.80</p>
<p>Average: runq-sz plist-sz ldavg-1 ldavg-5<br />
Average: 0 91 0.00 0.00</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bsdmap.com/2007/12/22/linux%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90%e5%b7%a5%e5%85%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

