- 浏览: 1791330 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
奔跑的小牛:
例子都打不开
如何使用JVisualVM进行性能分析 -
蜗牛coder:
好东西[color=blue][/color]
Lucene学习:全文检索的基本原理 -
lovesunweina:
不在haoop中是在linux系统中,映射IP的时候,不能使用 ...
java.io.IOException: Incomplete HDFS URI, no host -
evening_xxxy:
挺好的, 谢谢分享
如何利用 JConsole观察分析Java程序的运行,进行排错调优 -
di1984HIT:
学习了~~~
ant使用ssh和linux交互 如:上传文件
什么时候需要分析
对于JAVA程序员来说,磁盘IO存在性能问题的时候可能不是那么多,频繁操作磁盘的也就是大量的日志、索引文件,甚或是JAVA写的数据库(如:hbase)等。
JAVA程序员在Linux下分析程序性能,top命令是比较常用的,比如这么一行:
Cpu(s): 14.8%us, 0.8%sy, 0.0%ni, 60.3%id, 83.8%wa, 0.1%hi, 0.2%si, 0.0%st
如果磁盘IO是瓶颈之一的话,那么%wa的值就会很高,那么这个时候就要分析磁盘IO了。其他字段这里就不再解释了(小提示:按1会显示你所有CPU的情况,这里这是个总体值的情况)
用什么分析
那么如何分析磁盘IO呢?要用到两个命令:iostat 和 sar 。目前我使用的是Gentoo系统,默认是没有这些分析工具的,需要emerge ,他们都在sysstat(app-admin/sysstat)下面,所以你只要
emerge app-admin/sysstat
就可以拥有iostat和sar分析工具。
分析信息解释
那么如何使用呢?
iostat -d -x 10 3
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
主要字段含义如下:
r/s 每秒读操作数。
w/s 每秒写操作数。
rsec/s 每秒从设备读取的扇区数量。
wsec/s 每秒向设备写入的扇区数量。
avgrq-sz I/O 请求的平均扇区数。
avgqu-sz I/O 请求的平均队列长度。
await I/O 请求的平均等待时间,单位为毫秒。
svctm I/O 请求的平均服务时间,单位为毫秒。
%util 处理 I/O 请求所占用的时间的百分比,即设备利用率。
#sar -pd 10 3
输出的主要字段含义如下:
DEV 正在监视的块设备
tps 每秒钟物理设备的 I/O 传输总量
rd_sec/s 每秒从设备读取的扇区数量
wr_sec/s 每秒向设备写入的扇区数量
avgrq-sz I/O 请求的平均扇区数
avgqu-sz I/O 请求的平均队列长度
await I/O 请求的平均等待时间,单位为毫秒
svctm I/O 请求的平均服务时间,单位为毫秒
%util I/O 请求所占用的时间的百分比,即设备利用率
Unix/Linux 系统磁盘 I/O 性能监控自动化脚本示例
=============================================================
附上参考
博客地址:http://dodo.ideation-cn.cn/?p=466
内容:
Unix/Linux 磁盘 I/O 性能监控命令
磁盘 I/O 性能监控指标和调优方法
在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘 I/O 性能监控的指标主要包括:
指标 1:每秒 I/O 数(IOPS 或 tps)
对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。
指标 2:吞吐量(Throughput)
指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为 Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。
指标 3:平均 I/O 数据尺寸
平均 I/O 数据尺寸为吞吐量除以 I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均 I/O 数据尺寸小于 32K,可认为磁盘使用模式以随机存取为主;如果平均每次 I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。
指标 4:磁盘活动时间百分比(Utilization)
磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就 是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过 70%,应用进程将花费较长的时间等待 I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。
指标 5:服务时间(Service Time)
指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过 20ms,一般可考虑会对上层应用产生影响。
指标 6:I/O 等待队列长度(Queue Length)
指待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的 I/O 等待队列长度。
指标 7:等待时间(Wait Time)
指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果 I/O 请求持续超出磁盘处理能力,意味着来不及处理的 I/O 请求不得不在队列中等待较长时间。
通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合 CPU、内存、交换分区的使用状况,不难发现磁盘 I/O 潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘 I/O 性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考:
1. 调整数据布局,尽量将 I/O 请求较合理的分配到所有物理磁盘中。
2. 对于 RAID 磁盘阵列,尽量使应用程序 I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适的 RAID 方式,如 RAID10,RAID5。
3. 增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分 I/O 请求会因为丢失而重新发出,这将降低性能。
4. 应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。
5. 由于多数数据库中已包括经优化后的缓存技术,数据库 I/O 宜直接存取原始磁盘分区(raw partition)或者利用绕过文件系统缓存的 DIO 技术(direct IO)
6. 利用内存读写带宽远比直接磁盘 I/O 操作性能优越的特点,将频繁访问的文件或数据置于内存中。
磁盘 I/O 性能监控命令简介
Unix/Linux 提供了两个非常有用的用于磁盘 I/O 性能监控的命令:iostat 和 sar。
iostat 命令主要通过观察物理磁盘的活动时间以及他们的平均传输速度,监控系统输入 / 输出设备负载。根据 iostat 命令产生的报告,用户可确定一个系统配置是否平衡,并据此在物理磁盘与适配器之间更好地平衡输入 / 输出负载。iostat 工具的主要目的是通过监控磁盘的利用率,而探测到系统中的 I/O 瓶颈。不同操作系统命令格式输出格式略有不同,管理员可以通过查看用户手册来确定它的用法。
sar 命令报告 CPU 的使用情况,I/O 以及其它系统行为。sar 命令可以收集,报告以及保存系统行为信息。以这种方式收集到的数据对于确定系统的时间周期特征和决定峰值使用时间是很有用的。但要注意的是,sar 命令自己运行时会产生相当数量的读写,因此最好在没有工作量的情况下运行 sar 统计,看看 sar 对总的统计数字有多大的影响。
AIX 环境下,iostat 和 sar 位于文件集 bos.acct 中,是基本系统 (Base Operating System) 的一部分,在缺省安装情况下无需进行任何配置或任何额外包安装。
Linux 环境下,iostat 和 sar 包含在 sysstat 包中。sysstat 是 Linux 系统中的常用工具包。不同的 Linux 系统或不同的硬件平台,安装包名字和具体命令可能会有微小差异。清单1为一个在 RHEL5.3 上安装 sysstat 包的例子。
iostat -d -x 10 3
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
主要字段含义如下:
r/s 每秒读操作数。
w/s 每秒写操作数。
rsec/s 每秒从设备读取的扇区数量。
wsec/s 每秒向设备写入的扇区数量。
avgrq-sz I/O 请求的平均扇区数。
avgqu-sz I/O 请求的平均队列长度。
await I/O 请求的平均等待时间,单位为毫秒。
svctm I/O 请求的平均服务时间,单位为毫秒。
%util 处理 I/O 请求所占用的时间的百分比,即设备利用率。
#sar -pd 10 3
输出的主要字段含义如下:
DEV 正在监视的块设备
tps 每秒钟物理设备的 I/O 传输总量
rd_sec/s 每秒从设备读取的扇区数量
wr_sec/s 每秒向设备写入的扇区数量
avgrq-sz I/O 请求的平均扇区数
avgqu-sz I/O 请求的平均队列长度
await I/O 请求的平均等待时间,单位为毫秒
svctm I/O 请求的平均服务时间,单位为毫秒
%util I/O 请求所占用的时间的百分比,即设备利用率
Unix/Linux 系统磁盘 I/O 性能监控自动化脚本示例
前文介绍了 AIX 与 Linux 磁盘 I/O 监控的手段,本节将结合实例介绍磁盘 I/O 监控的自动化脚本的设计和实现。
设计思路
1 . 监控指标
前文介绍了多个监控指标,比如吞吐量,每秒 I/O 数,平均单次 I/O 响应时间,磁盘利用率等,用户可以根据自身系统和应用的特点选取监控指标。下文将以磁盘利用率为例进行监控脚本的设计。
2 .监控手段
对于 AIX, 命令“iostat -d”的输出字段“% tm_act”反映磁盘利用率;对于 Linux, 命令“iostat -d -x”的输出字段“%util”反映磁盘利用率。监控的频次可以通过“iostat”命令本身的参数指定。
3. 告警机制
一般来说,如果磁盘使用率长时间达到 75% 或 80%, 通常会视为磁盘较忙,一般需进行调整磁盘布局,调整应用使用分配等管理活动,如果磁盘使用率偶尔较高,只需要继续监视即可。因此告警既不能对于偶发现象频 繁告警,也不能放过持续时间较长的现象,本例的告警机制设定为“在一定时间间隔内的一定比例的监控记录超出设定的磁盘利用率门限值即告警”
4 .日志
要保留磁盘 I/O,分析活动,告警信息等原始信息,便于以后进行问题分析,定位。
磁盘 I/O 分析和告警自动脚本
结合上文设计思路,笔者开发了磁盘 I/O 分析和告警脚本 I/OAnalyzer.sh, 我们的脚本在 RHEL 5.3、SLES 11、AIX 5.3 和 AIX 6.1 上测试通过。
脚本 IOAnalyzer.sh 的第一部分先进行了初始化,检验并处理输入参数,对未输入的参数指定默认值。
清单 6. IOAnalyzer.sh 脚本初始化部分
01
|
#!/bin/sh
|
02
|
# ================================================================
|
03
|
# Script Name: IOAnalyzer.sh
|
04
|
# Desciption: To analyze output of 'iostat -d', send an alert to admin
|
05
|
# if disk utilization counter reach defined threshold
|
06
|
# Date: May 19, 2009
|
07
|
#================================================================
|
08
|
09
|
# -----------------------------------------------------------------
|
10
|
# Function definitions... 定义函数
|
11
|
#----------------------------------------------------------------
|
12
|
13
|
function
usage {
|
14
|
echo
""
|
15
|
echo
"usage: IOAnalyzer.sh -i inIostatFile [ -l outLogFile ] \
|
16
|
[ -a outAlertFile ] [ -u dishUtil ] [ -r rateGEUtil ]"
|
17
|
echo
""
|
18
|
echo
"For example: IOAnalyzer.sh -i /tmp/iostat.out -l /tmp/logFile \
|
19
|
-a /tmp/aletFile -u 80 -r 70"
|
20
|
echo
"For AIX, please run 'iostat -d [ <interval> [ <count> ] \
|
21
|
to create inIostatFile"
|
22
|
echo
"For Linux, please run 'iostat -d -x [ <interval> [ <count> ] \
|
23
|
to create inIostatFile"
|
24
|
exit
1
|
25
|
}
|
26
|
27
|
# ----------------------------------------------------------------
|
28
|
# Process command-line arguments 命令行参数处理
|
29
|
# ----------------------------------------------------------------
|
30
|
while
getopts
:i:l:a:u:r: opt
|
31
|
do
|
32
|
case
"$opt"
in
|
33
|
i) inIostatFile=
"$OPTARG"
;;
|
34
|
l) outLogFile=
"$OPTARG"
;;
|
35
|
a) outAlertFile=
"$OPTARG"
;;
|
36
|
u) diskUtil=
"$OPTARG"
;;
|
37
|
r) rateGEUtil=
"$OPTARG"
;;
|
38
|
\?) usage;;
|
39
|
esac
|
40
|
done
|
41
|
42
|
#----------------------------------------------------------------
|
43
|
# Input validation 输入验证
|
44
|
#----------------------------------------------------------------
|
45
|
46
|
if
[ ! -f
"$inIostatFile"
]
|
47
|
then
|
48
|
echo
"error: invalid Augument inIostatFile in OPTION -i "
|
49
|
usage
|
50
|
exit
1
|
51
|
fi
|
52
|
#---------------------------------------------------------------
|
53
|
54
|
# Set values, if unset 设置变量
|
55
|
# ----------------------------------------------------------------
|
56
|
57
|
outLogFile=${outLogFile:-${inIostatFile}.log}
|
58
|
outAlertFile=${outAlertFile:-${inIostatFile}.alert}
|
59
|
diskUtil=${diskUtil:-
'80'
}
|
60
|
rateGEUtil=${rateGEUtil:-
'60'
}
|
接下来, IOAnalyzer.sh 脚本查询日志,通过计算起止行的办法定位 IO 输出文件的待分析文本。
清单 7. IOAnalyzer.sh 脚本定位 I/O 输出文件待分析部分
01
|
# ----------------------------------------------------------------
|
02
|
# Identify the lines to be analyzed between StartLine and Endline
|
03
|
# 定位日志中待分析文本
|
04
|
05
|
# ----------------------------------------------------------------
|
06
|
07
|
if
[ ! -f
"$outLogFile"
] || [ !
tail
-1
"$outLogFile"
|
grep
'ENDLINE'
]
|
08
|
then
|
09
|
StartLineNum=1;
|
10
|
else
|
11
|
CompletedLine=`
tail
-1
"$outLogFile"
|
grep
'ENDLINE'
| \
|
12
|
awk
'{print $4}'
|
cut
-d: -f2`
|
13
|
StartLineNum=`
expr
1 + $CompletedLine`
|
14
|
fi
|
15
|
16
|
eval
"sed -n '${StartLineNum},\$p' $inIostatFile"
> ${inIostatFile}.
tail
|
17
|
18
|
LineCount=`
cat
${inIostatFile}.
tail
|
wc
-l|
awk
'{print $1}'
`
|
19
|
EndLineNum=`
expr
$LineCount + $StartLineNum`
|
清单 7 中的脚本实现了按行分析上文定位的 iostat 输出,如果某行磁盘利用率小于先前定义的门限值,则在行尾标记“OK”,如果某行磁盘利用率大于等于先前定义的门限值,则在行尾标记“Alarm”。并且 脚本中对于 AIX 和 Linux 输出格式和磁盘命名的不同作了相应处理。
清单 8. IOAnalyzer.sh 按行分析 iostat 输出
01
|
# ----------------------------------------------------------------
|
02
|
# Analyze 'iostat' output, append "Alarm" or "OK" at the end of each# line
|
03
|
04
|
# ----------------------------------------------------------------
|
05
|
OS=`
uname
`
|
06
|
case
"$OS"
in
|
07
|
AIX)
|
08
|
diskUtilLabel=
"% tm_act"
|
09
|
diskUtilCol=2
|
10
|
diskPrefix=
"hdisk"
|
11
|
;;
|
12
|
Linux)
|
13
|
diskUtilLabel=
"%util"
|
14
|
diskUtilCol=14
|
15
|
diskPrefix=
"hd|sd"
|
16
|
;;
|
17
|
*)
echo
"not support $OS operating system!"
|
18
|
exit
1;
|
19
|
;;
|
20
|
esac
|
21
|
22
|
eval
"
cat
${inIostatFile}.
tail
|
egrep
'${diskPrefix}'
\
|
23
|
|
awk
'{
if
( \$${diskUtilCol} * 100 < ${diskUtil} ) \
|
24
|
{\$20 = \"OK\"; print \$1\"\t\"\$${diskUtilCol}\"\t\"\$20 } \
|
25
|
else
{\$20 = \
"Alarm\"; print \$1\"\t\"\$${diskUtilCol}\"\t\"\$20 } }'"
\
|
26
|
> ${outLogFile}.tmp
|
下文脚本给出一个告警触发的例子,如果过高的磁盘利用率计数占总分析行数的比率达到或超出预定的比率,脚本会给 root 用户发一封告警邮件。
清单 9. IOAnalyzer.sh 触发告警
01
|
# ----------------------------------------------------------------
|
02
|
# Send admin an alert if disk utilization counter reach defined
|
03
|
# threshold
|
04
|
05
|
# ----------------------------------------------------------------
|
06
|
Alert=
"NO"
|
07
|
for
DISK
in
`
cut
-f1 ${outLogFile}.tmp |
sort
-u`
|
08
|
do
|
09
|
numAlarm=`
cat
${outLogFile}.tmp |
grep
"^$DISK.*Alarm$"
|
wc
-l`
|
10
|
numRecord=`
cat
${outLogFile}.tmp |
grep
"^$DISK"
|
wc
-l`
|
11
|
rateAlarm=`
expr
$numAlarm \* 100 / $numRecord`
|
12
|
if
[ $rateAlarm -
ge
$rateGEUtil ];
then
|
13
|
echo
"DISK:${DISK} TIME:`
date
+%Y%m%d%H%M` \
|
14
|
RATE:${rateAlarm} THRESHOLD:${rateGEUtil}" >> ${outAlertFile}.tmp
|
15
|
Alert=
"YES"
|
16
|
fi
|
17
|
done
|
18
|
if
[ $Alert=
"YES"
];
then
|
19
|
cat
${outAlertFile}.tmp >> ${outAlertFile}
|
20
|
mail -s
"DISK IO Alert"
root@localhost< ${outAlertFile}.tmp
|
21
|
fi
|
最后,脚本将分析活动归档,便于下次分析时定位起始行;另外,分析过程中产生的文件将被删除。
清单 10. IOAnalyzer.sh 记录分析活动日志和清除临时文件
01
|
#----------------------------------------------------------------
|
02
|
# Clearup temporary files and logging
|
03
|
# ----------------------------------------------------------------
|
04
|
05
|
echo
"IOSTATFILE:${inIostatFile} TIME:`
date
+%Y%m%d%H%M` \
|
06
|
STARTLINE:${StartLineNum} ENDLINE:${EndLineNum} ALERT:${Alert}" \
|
07
|
08
|
>> ${outLogFile}
|
09
|
10
|
rm
-f ${outLogFile}.tmp
|
11
|
rm
-f ${outAlertFile}.tmp
|
12
|
rm
-f ${inIostatFile}.
tail
|
13
|
14
|
exit
0
|
脚本使用示例
以下为 IOAnalyzer.sh 脚本在 AIX 上使用示例
1 .后台执行 iostat, 并将输出重定向到文件中
清单 11. 后台执行 iostat
# nohup iostat -d 5 > /root/iostat.out &
(对于 Linux,运行 iostat -d – x 5 > /root/iostat.out &)
2 .编辑 crontab 文件,每 10 分钟运行一次 IOAnalyzer.sh 脚本,-u 70 –r 80,表示在距上次运行 IOAnalyzer.sh 至今产生的某磁盘的监控记录中的 80% 使用率达到或超过 70%,即发出告警。告警日志和分析日志可通过 IOAnalyzer.sh 的 –l –a 参数指定,本例保持默认值,即在 iostat 的输出文件所在目录产生 iostat.out.log 和 iostat.out.alert 文件。
清单 12. 编辑 crontab
# crontab – e
0,10,20,30,40,50 * * * * /root/IOAnalyzer.sh -i /root /iostat.out -u 70 \
-r 80>/tmp/iostat.out 2>&1
3 .用户收到告警邮件,需要进一步查询历史记录时,可查看日志文件
清单 13. 查看日志文件
# cat /root/iostat.out.log | more
IOSTATFILE: /root/iostat.out TIME:200905200255 STARTLINE:7220 ENDLINE:7580 ALARM:YES
IOSTATFILE: /root/iostat.out TIME:200905200300 STARTLINE:7581 ENDLINE:7940 ALARM:YES
IOSTATFILE:/root/iostat.out TIME:200905200305 STARTLINE:7941 ENDLINE:8300 ALARM:YES
[AIXn01]> cat /root/iostat.out.alert | more
DISK:hdisk4 TIME:200905200250 RATE:84 THRESHOLD:70
DISK:hdisk5 TIME:200905200250 RATE:84 THRESHOLD:70
DISK:hdisk6 TIME:200905200250 RATE:84 THRESHOLD:70
发表评论
-
gentoo share net folder (网络共享文件夹)
2011-10-02 17:49 3006服务端: 安装samba emerge -av n ... -
Gentoo, Mounting a remote Shared Folder
2011-02-23 15:04 2217http://en.gentoo-wiki.com/wiki/ ... -
gentoo下解决RAID卡识别问题 找到RAID卡Adeptec 5805对应的驱动
2010-10-12 18:31 2050RAID卡Adeptec 5805的识别有问题 在这里 ... -
gentoo下解决Intel Corporation 80003ES2LAN网卡驱动问题
2010-10-12 18:11 4088网卡没识别,难道驱动有问题? lspci查看 ... -
Linux 域名服务器DNS gentoo dnsmasq
2010-09-20 15:47 2131DNS缓存 # emerge dn ... -
gentoo 忘记root密码 如何修改root密码
2010-05-31 13:17 5294进入grub的时候,按上下箭头 选择平时启动的那个内核 按 ... -
mrtg snmp监控网络流量的简单安装配置文档
2010-05-24 10:39 3357mrtg snmp安装配置文档 1、net-snmp安装在被 ... -
LINUX挂载一个 NTFS 文件系统
2010-05-11 00:15 1801wget http://packages.sw.be/rpmf ... -
Linux下显示硬件信息--lshw
2010-04-30 09:20 11179lshw lshw(Hardware Lister)是另外 ... -
Linux下硬件信息查看--dmidecode
2010-04-30 09:19 4793dmidecode以一种可读的 ... -
nginx spawn-fcgi php
2010-04-22 16:11 2422安装spawn-fcgi # emerge spawn- ... -
emerge PHP 添加模块 比如非默认模块mysql
2010-04-22 11:09 1943// 查看默认USE变量 emerge --preten ... -
Ghost操作系统gentoo不成功而想出来的折中方案
2010-04-20 22:29 1487装好一台机器后,Ghost操作系统,可惜没成功,之后采用折中方 ... -
gentoo 下emerge安装修改默认版本以及取消掩掉的软件
2010-04-20 14:42 5847#emerge安装使用分支官方文档:http://www. ... -
CentOS 修改IP地址, DNS, 网关
2010-04-20 10:54 3348由于修改网关总是忘记在哪个地方,Google出来一堆垃圾文章, ... -
gentoo系统安装记录
2010-04-20 09:57 3944这里是最直接的安装方法,官方文档: http://www.g ... -
SSH 无密码认证(RSA/DSA认证)
2010-03-22 14:13 8039今天配置hadoop过程中发现,ssh localhost 配 ... -
4 Effective Methods to Disable SELinux Temporarily or Permanently
2010-02-23 15:48 2047http://www.thegeekstuff.com/200 ... -
快速编辑 Shell 命令行
2010-02-20 10:13 2123这片文章不错,做个备份,转载如下: 作者: robin ... -
编译Linux内核,把你的LInux系统换成最新内核就这么简单
2009-12-02 10:35 4263CentOS5.4系统,当前位置:/usr/src ...
相关推荐
Unix的基本I/O调用直接与磁盘交互,但频繁的系统调用会导致效率低下,因此引入了缓冲I/O,如stdio。缓冲I/O中,缓冲区位于用户空间,可以减少磁盘和内存之间的数据传输次数,提高性能。 stdio库提供了缓冲化的读写...
"Linux页面缓存机制分析及其对磁盘I_O性能影响" Linux页面缓存机制是操作系统中磁盘缓存的主要形式,它与文件读写执行流程有紧密的联系,直接影响着磁盘I/O性能。页面缓存管理是操作系统虚拟内存管理子系统的重要...
本报告聚焦于一个特定的场景,即在一台DELL R720服务器上运行Windows Server 2012时遇到的性能问题,通过监控和分析发现了磁盘I/O性能瓶颈,最终通过调整RAID配置解决了问题。 首先,我们要理解磁盘I/O性能监控的...
fio可以生成跟踪文件,用于分析I/O请求的详细情况。跟踪文件格式包括: - v1:早期版本的跟踪文件格式。 - v2:改进后的跟踪文件格式。 #### CPU空闲率分析 fio还提供了CPU空闲率分析功能,帮助识别性能瓶颈。 #...
在实际应用中,I/O缓冲池不仅可以用于磁盘I/O,还可以应用于网络I/O、串口通信等场景。例如,在网络编程中,接收和发送的数据可以通过缓冲池进行缓存,减少对套接字操作的依赖,提高网络通信的效率。 总的来说,I/O...
#### 四、磁盘I/O分析方法 **1. 磁盘I/O分析概述** 磁盘I/O性能直接影响数据读写速度,进而影响整个系统的性能。 **2. 磁盘I/O分析主要步骤** - **计算每磁盘I/O数**:通过公式计算每块磁盘的I/O数量,与磁盘...
Java I/O层次结构详解 Java I/O系统是Java平台中不可或缺的一部分,它为开发者提供了处理输入和输出的强大工具。在Java中,I/O操作主要基于流(Stream)的概念,流可以被视为数据的有序序列,既可以代表从源读取...
- **nmon**(Nigel’s Performance Monitor for Linux):虽起源于Linux,但在AIX中同样强大,它能够实时监控系统资源的使用情况,包括CPU、内存、磁盘I/O等,特别适合于长时间的数据趋势分析。 - **topas**(Top ...
本文主要探讨了三个主要的性能瓶颈领域:内存分析、处理器分析以及磁盘I/O分析,并提供了相应的监控和诊断方法。 内存分析是评估系统性能的第一步,主要是检查是否存在内存不足的情况。在Windows系统中,可以关注...
本文讨论了这种基于虚拟I/O的攻击的可能性,并特别关注了虚拟机监控程序中磁盘I/O调度对虚拟机性能干扰的影响。基于虚拟I/O攻击的前提是部署恶意虚拟机与目标虚拟机同地(colocated),目的是减慢目标虚拟机的执行...
如果这些值持续保持在较高水平,说明磁盘I/O活动频繁,可能需要进一步分析和优化。 除了上述方法,还可以利用其他工具,如`iotop`(类似`top`但针对I/O操作)、`dstat`或`atop`,它们提供了更全面的系统资源监控,...
然而,传统的基于文件的数据库系统在处理海量数据时,经常遇到性能瓶颈,如长时间的响应延迟、操作卡顿、超时或意外错误,这些问题通常与磁盘I/O操作有关。 I/O速度和I/O效率是评估数据库性能的两个核心指标。I/O...
文件级日志关注于不同文件系统的读写性能差异,而块级日志直接向磁盘发起I/O请求,测试块设备的性能。 4. 分布式I/O日志收集系统的功能特性: 分布式I/O日志收集系统能够并行地收集多个分布式节点的日志,通过总控...
本文将深入探讨磁盘I/O的基本概念,分析其对Web应用程序的影响,以及如何检测和解决I/O瓶颈问题。 **磁盘I/O的本质** 磁盘I/O涉及从磁盘读取或向磁盘写入数据的过程。在这个过程中,处理器需要等待数据被读取或...
本文将深入探讨视频服务器的磁盘I/O调度算法,分析其对于视频服务性能提升的重要性,并着重介绍几种优化策略。 首先,需要明确的是,视频服务器在处理点播请求时,不仅需要面对大规模的并发访问,还要确保服务的...
本文主要探讨了Oracle数据库性能优化中的一个重要因素——磁盘I/O竞争问题,并从分离顺序I/O和分散随机I/O两个方面进行了深入研究。 首先,数据库性能的关键在于磁盘I/O操作,这是由于磁盘I/O是计算机系统中最耗时...
Nagios插件check_iostat就是这样一个实用工具,它基于Linux系统中的`iostat`命令,可以定期收集并分析磁盘I/O数据,然后向Nagios服务器报告相关指标,如读写速率、磁盘等待时间等。通过这些数据,管理员可以迅速识别...
本篇文章将深入探讨IBM AIX操作系统下的磁盘I/O性能调优方法,通过分析AIX I/O堆栈的工作原理、数据布局策略以及各种调优工具和技术,帮助读者理解如何优化磁盘I/O性能,从而提升系统的整体运行效率。 #### 二、...
在Linux系统中,监控磁盘I/O开销是优化系统性能的关键步骤,因为高I/O开销可能导致系统响应变慢,影响用户体验。本文将介绍三种常用的方法来查看Linux系统的磁盘I/O开销:top命令、vmstat命令以及iostat命令。 1. *...