Linux常用命令名或缩写的由来
[ 2009/02/10 22:13 | by selboo ]
man: Manual
pwd:Print working directory
su:Swith user
cd:Change directory
ls:List files
ps:Process Status
mkdir:Make directory
rmdir:Remove directory
mkfs: Make file system
fsck:File system check
cat: Concatenate
uname: Unix name
df: Disk free
du: Disk usage
lsmod: List modules
mv: Move file
rm: Remove file
cp: Copy file
ln: Link files
fg: Foreground
bg: Background
chown: Change owner
chgrp: Change group
chmod: Change mode
umount: Unmount
dd: 本来应根据其功能描述“Convert an copy”命名为“cc”,但“cc”已经被用以代表“C Complier”,所以命名为“dd”
tar:Tape archive
ldd:List dynamic dependencies
insmod:Install module
rmmod:Remove module
lsmod:List module
... ...
pwd:Print working directory
su:Swith user
cd:Change directory
ls:List files
ps:Process Status
mkdir:Make directory
rmdir:Remove directory
mkfs: Make file system
fsck:File system check
cat: Concatenate
uname: Unix name
df: Disk free
du: Disk usage
lsmod: List modules
mv: Move file
rm: Remove file
cp: Copy file
ln: Link files
fg: Foreground
bg: Background
chown: Change owner
chgrp: Change group
chmod: Change mode
umount: Unmount
dd: 本来应根据其功能描述“Convert an copy”命名为“cc”,但“cc”已经被用以代表“C Complier”,所以命名为“dd”
tar:Tape archive
ldd:List dynamic dependencies
insmod:Install module
rmmod:Remove module
lsmod:List module
... ...
Linux服务器一些简单优化
[ 2009/02/10 20:27 | by selboo ]
1,关闭不需要的服务
这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,
这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性
那么哪些服务是肯定要保留的呢?
在linux机器上通常有四项服务是必须保留的
iptables
linux下强大的防火墙,只要机器需要连到网上,哪里离得开它
network
linux机器的网络,如果不上网可以关闭,只要上网当然要打开它
sshd
这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,
那么访问机器时需要通过这个sshd服务进行
syslog
这是linux系统的日志系统,必须要有,
否则机器出现问题时会找不到原因
除了这四项必需的服务之外,其他的服务需要保留哪些呢?
这时就可以根据系统的用途而定,比如:数据库服务器,就需要启用mysqld(或oracle)web服务器,就需要启用apache
2,关闭不需要的tty
请编辑你的/etc/inittab
找到如下一段:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的你用ps auxf这个命令可以看到,是六个进程
root 3004 0.0 0.0 1892 412 tty1 Ss+ Jun29 0:00 /sbin/mingetty tty1
root 3037 0.0 0.0 2492 412 tty2 Ss+ Jun29 0:00 /sbin/mingetty tty2
root 3038 0.0 0.0 2308 412 tty3 Ss+ Jun29 0:00 /sbin/mingetty tty3
root 3051 0.0 0.0 1812 412 tty4 Ss+ Jun29 0:00 /sbin/mingetty tty4
root 3056 0.0 0.0 2116 412 tty5 Ss+ Jun29 0:00 /sbin/mingetty tty5
root 3117 0.0 0.0 2396 412 tty6 Ss+ Jun29 0:00 /sbin/mingetty tty6
如何关闭这些进程?通常我们保留前2个控制台就可以了,把后面4个用#注释掉就可以了
然后无需重启机器,只需要执行 init q 这个命令即可
init q
q作为参数的含义:重新执行/etc/inittab中的命令
3,如何关闭ipv6?
ipv6目前我们还不需要,但系统安装完成后它会作为模块常驻核心,没有必要,
可以用这个步骤来关闭它:
首先编辑网络配置文件:
vi /etc/sysconfig/network
修改
NETWORKING_IPV6=yes
为
NETWORKING_IPV6=no
然后关闭其模块:vi /etc/modprobe.conf
在文件中添加以下两行
alias net-pf-10 off
alias ipv6 off
修改完成后需重启机器使之生效
4,如何关闭atime?
一个linux文件默认有3个时间:
atime:对此文件的访问时间
ctime:此文件inode发生变化的时间
mtime:此文件的修改时间
如果有多个小文件时通常没有必要记录文件的访问时间, 这样可以减少磁盘的io,比如web服务器的页面上有多个小图片
如何进行设置呢?
修改文件系统的配置文件:vi /etc/fstab
在包含大量小文件的分区中使用noatime,nodiratime两项
例如:
/dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0
这样文件被访问时就不会再产生写磁盘的io
5,一定要让你的服务器运行在level 3上
做法:
vi /etc/inittab
id:3:initdefault:
让服务器运行X是没有必要的
6,优化sshd
X11Forwarding no //不进行x图形的转发
UseDNS no //不对IP地址做反向的解析
7,优化shell
修改命令history记录
# vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=100
然后 source /etc/profile
这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,
这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性
那么哪些服务是肯定要保留的呢?
在linux机器上通常有四项服务是必须保留的
iptables
linux下强大的防火墙,只要机器需要连到网上,哪里离得开它
network
linux机器的网络,如果不上网可以关闭,只要上网当然要打开它
sshd
这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,
那么访问机器时需要通过这个sshd服务进行
syslog
这是linux系统的日志系统,必须要有,
否则机器出现问题时会找不到原因
除了这四项必需的服务之外,其他的服务需要保留哪些呢?
这时就可以根据系统的用途而定,比如:数据库服务器,就需要启用mysqld(或oracle)web服务器,就需要启用apache
2,关闭不需要的tty
请编辑你的/etc/inittab
找到如下一段:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的你用ps auxf这个命令可以看到,是六个进程
root 3004 0.0 0.0 1892 412 tty1 Ss+ Jun29 0:00 /sbin/mingetty tty1
root 3037 0.0 0.0 2492 412 tty2 Ss+ Jun29 0:00 /sbin/mingetty tty2
root 3038 0.0 0.0 2308 412 tty3 Ss+ Jun29 0:00 /sbin/mingetty tty3
root 3051 0.0 0.0 1812 412 tty4 Ss+ Jun29 0:00 /sbin/mingetty tty4
root 3056 0.0 0.0 2116 412 tty5 Ss+ Jun29 0:00 /sbin/mingetty tty5
root 3117 0.0 0.0 2396 412 tty6 Ss+ Jun29 0:00 /sbin/mingetty tty6
如何关闭这些进程?通常我们保留前2个控制台就可以了,把后面4个用#注释掉就可以了
然后无需重启机器,只需要执行 init q 这个命令即可
init q
q作为参数的含义:重新执行/etc/inittab中的命令
3,如何关闭ipv6?
ipv6目前我们还不需要,但系统安装完成后它会作为模块常驻核心,没有必要,
可以用这个步骤来关闭它:
首先编辑网络配置文件:
vi /etc/sysconfig/network
修改
NETWORKING_IPV6=yes
为
NETWORKING_IPV6=no
然后关闭其模块:vi /etc/modprobe.conf
在文件中添加以下两行
alias net-pf-10 off
alias ipv6 off
修改完成后需重启机器使之生效
4,如何关闭atime?
一个linux文件默认有3个时间:
atime:对此文件的访问时间
ctime:此文件inode发生变化的时间
mtime:此文件的修改时间
如果有多个小文件时通常没有必要记录文件的访问时间, 这样可以减少磁盘的io,比如web服务器的页面上有多个小图片
如何进行设置呢?
修改文件系统的配置文件:vi /etc/fstab
在包含大量小文件的分区中使用noatime,nodiratime两项
例如:
/dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0
这样文件被访问时就不会再产生写磁盘的io
5,一定要让你的服务器运行在level 3上
做法:
vi /etc/inittab
id:3:initdefault:
让服务器运行X是没有必要的
6,优化sshd
X11Forwarding no //不进行x图形的转发
UseDNS no //不对IP地址做反向的解析
7,优化shell
修改命令history记录
# vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=100
然后 source /etc/profile
MYM宣布解散魔兽争霸和星际争霸
[ 2009/02/08 22:30 | by selboo ]
刚刚,就在刚刚,欧洲电竞豪门 MYM在其官方主页宣布解散其魔兽争霸3分部和星际争霸分部,这也意味着 Grubby、 Moon等大牌选手也将处于无战队状态。
原地址:http://www.mymym.com/en/news/15720.html
MYM解散其魔兽3和星际分部的主要原因是其母公司ESNation A/S对2009年的规划进行了调整,保留了CS分部和成本原本就不高的DOTA分部,下面是MYM各分部管理层的感言:
Matthias “Losemann” Beyer (魔兽战队经理)
“对MYM和电子竞技来说,今天是个很悲伤的日子。MYM不再决定维持魔兽分部,将会重组战队。这是很伤心的时刻。我的告诉选手们我们的未来,我真的很难过,我知道每一个人都是这样的。
我知道这很难说出来,但是今天是一个伟大的时代的最后一刻!我们拥有过伟大的时刻,我要感谢每一位为此努力的朋友。MYM是我呆过的最棒的地方,我相信大家也都同意这点。我和管理组的朋友们有过快乐的假期,和我们的选手有过快乐的日子。但是如果没有支持我们的观众和幕后强大的团队,这都是不可能的。
Grubby每次谈到游戏,每次聊到队长Susiria,还有cool哥Lucifer,以及彬彬有礼的Moon,以及很有才华的Soccer和忠诚的Eve,所有人都值得我去为之努力。
认识这些人很高兴,和很高兴和他们在一起拼搏。我祝所有的队员都有一个美好的未来,能在新的战队里,在新的联赛里表现他们自己。我要说,我爱这支战队,这是一支兄弟连,为着最伟大的目标而奋进!再次感谢你们!还有在困难的时候鼓励我们,在快乐的时候和我们一起庆祝的Fan们,没有你们,我们是做不到这么好的。你们的评论,你们的欢呼我都值得我们去品味!”
Jesper ”Nordahl” Nordahl Henriksen (魔兽战队经理)
“今天是一个时代的终结.今天起MYM.WC3不复存在。从2004开始我成为这里的一部分,而今天看着战队离去,心里很不好受。我们有过困难,有过失望,甚至悲伤。这里我们也有团队和个人的胜利。
5年来,我和战队站在一起。为了参加比赛,我们修改过计划,取消了假期。
没有什么词语可以形容我现在的心情,我很悲伤,我希望这是个梦,但是我需要面对现实,事实告诉我们魔兽正接受压力,MYM.WC3也不例外。
我也要回首这5年的成功。第一年我们在第六届WC3L排名第二。我们的努力得到了回报。紧接着我们又拿过一次银牌和两次冠军。另外我们赢得了三次NGL冠军,以及已给NGL亚军,和无数的个人赛冠军和选手奖金。MYM.WC3历史上度过了一个辉煌的时刻,我会铭记在心。
我也会很开心地回顾和选手的聚会,我希望所有的选手都能继续战斗,也能保持他们的荣誉,作为一个人我还是会为他们完成自己的目标而欢呼。”
Gregor "Archi" Werner (星际经理)
“3年的起起落落,中间有很多故事,今天离开MYM对我来说是个很悲伤的日子。这些年我目睹了MYM从一个雄心勃勃的团队,成长为世界上领军的游戏战队之一,我们很骄傲,我们是他的一部分,我们已经建立起韩国之外最好的星际战队,而离开MYM,这些也将不复存在。
我们想感谢MYM为这个老游戏支持这么久,也希望MYM的未来更好。
离开MYM我们很难过,但这也许是我们命运的一个十字路口(可能诞生一个新的星际冠军?)”
Markus ”Max” Kemper (星际经理)
“离开MYM,我们是很伤心很失望。但是感谢你这些年的支持。现在是该离开了。一切顺利,再见!”
MYM魔兽部原成员:
Grubby
Moon
Susiria
Lucifer
Soccer
EVE
随便说点
都来WE战队吧!!!
原地址:http://www.mymym.com/en/news/15720.html
MYM解散其魔兽3和星际分部的主要原因是其母公司ESNation A/S对2009年的规划进行了调整,保留了CS分部和成本原本就不高的DOTA分部,下面是MYM各分部管理层的感言:
Matthias “Losemann” Beyer (魔兽战队经理)
“对MYM和电子竞技来说,今天是个很悲伤的日子。MYM不再决定维持魔兽分部,将会重组战队。这是很伤心的时刻。我的告诉选手们我们的未来,我真的很难过,我知道每一个人都是这样的。
我知道这很难说出来,但是今天是一个伟大的时代的最后一刻!我们拥有过伟大的时刻,我要感谢每一位为此努力的朋友。MYM是我呆过的最棒的地方,我相信大家也都同意这点。我和管理组的朋友们有过快乐的假期,和我们的选手有过快乐的日子。但是如果没有支持我们的观众和幕后强大的团队,这都是不可能的。
Grubby每次谈到游戏,每次聊到队长Susiria,还有cool哥Lucifer,以及彬彬有礼的Moon,以及很有才华的Soccer和忠诚的Eve,所有人都值得我去为之努力。
认识这些人很高兴,和很高兴和他们在一起拼搏。我祝所有的队员都有一个美好的未来,能在新的战队里,在新的联赛里表现他们自己。我要说,我爱这支战队,这是一支兄弟连,为着最伟大的目标而奋进!再次感谢你们!还有在困难的时候鼓励我们,在快乐的时候和我们一起庆祝的Fan们,没有你们,我们是做不到这么好的。你们的评论,你们的欢呼我都值得我们去品味!”
Jesper ”Nordahl” Nordahl Henriksen (魔兽战队经理)
“今天是一个时代的终结.今天起MYM.WC3不复存在。从2004开始我成为这里的一部分,而今天看着战队离去,心里很不好受。我们有过困难,有过失望,甚至悲伤。这里我们也有团队和个人的胜利。
5年来,我和战队站在一起。为了参加比赛,我们修改过计划,取消了假期。
没有什么词语可以形容我现在的心情,我很悲伤,我希望这是个梦,但是我需要面对现实,事实告诉我们魔兽正接受压力,MYM.WC3也不例外。
我也要回首这5年的成功。第一年我们在第六届WC3L排名第二。我们的努力得到了回报。紧接着我们又拿过一次银牌和两次冠军。另外我们赢得了三次NGL冠军,以及已给NGL亚军,和无数的个人赛冠军和选手奖金。MYM.WC3历史上度过了一个辉煌的时刻,我会铭记在心。
我也会很开心地回顾和选手的聚会,我希望所有的选手都能继续战斗,也能保持他们的荣誉,作为一个人我还是会为他们完成自己的目标而欢呼。”
Gregor "Archi" Werner (星际经理)
“3年的起起落落,中间有很多故事,今天离开MYM对我来说是个很悲伤的日子。这些年我目睹了MYM从一个雄心勃勃的团队,成长为世界上领军的游戏战队之一,我们很骄傲,我们是他的一部分,我们已经建立起韩国之外最好的星际战队,而离开MYM,这些也将不复存在。
我们想感谢MYM为这个老游戏支持这么久,也希望MYM的未来更好。
离开MYM我们很难过,但这也许是我们命运的一个十字路口(可能诞生一个新的星际冠军?)”
Markus ”Max” Kemper (星际经理)
“离开MYM,我们是很伤心很失望。但是感谢你这些年的支持。现在是该离开了。一切顺利,再见!”
MYM魔兽部原成员:
Grubby
Moon
Susiria
Lucifer
Soccer
EVE
随便说点
都来WE战队吧!!!
网易开通开源软件镜象站点
[ 2009/02/05 19:55 | by selboo ]
网易悄悄上线了一个开源镜象网站,域名是 http://mirrors.163.com/。目前提供了 Debian、Ubuntu、Fedora、Gentoo、Centos、FreeBSD等流行开源操作系统以及Eclipse等开源软件的镜象。国内终于又个高速的镜像点了。
Index of /
--------------------------------------------------------------------------------
../
FreeBSD/ 04-Jan-2009 09:58 -
OpenBSD/ 15-May-2008 11:09 -
RedHat/ 03-Jul-2008 17:50 -
centos/ 07-Nov-2008 21:15 -
debian/ 05-Feb-2009 03:28 -
debian-backport/ 05-Feb-2009 02:30 -
debian-cd/ 04-Dec-2008 02:07 -
debian-security/ 05-Feb-2009 19:20 -
eclipse/ 07-Nov-2008 23:12 -
fedora/ 08-Dec-2008 15:53 -
firewall/ 12-Sep-2008 23:14 -
gentoo/ 05-Feb-2009 02:50 -
openfiler/ 30-Apr-2008 21:07 -
trixbox/ 07-Dec-2008 20:24 -
ubuntu/ 05-Feb-2009 02:33 -
ubuntu-cd/ 04-Dec-2008 02:00 -
ubuntu-cn/ 05-Feb-2009 02:10 -
HEADER.txt 04-Feb-2009 18:34 209
robots.txt 03-Sep-2008 12:25 26
sources.list.etch 05-Feb-2009 14:01 451
sources.list.hardy 05-Feb-2009 14:02 864
--------------------------------------------------------------------------------
Index of /
--------------------------------------------------------------------------------
../
FreeBSD/ 04-Jan-2009 09:58 -
OpenBSD/ 15-May-2008 11:09 -
RedHat/ 03-Jul-2008 17:50 -
centos/ 07-Nov-2008 21:15 -
debian/ 05-Feb-2009 03:28 -
debian-backport/ 05-Feb-2009 02:30 -
debian-cd/ 04-Dec-2008 02:07 -
debian-security/ 05-Feb-2009 19:20 -
eclipse/ 07-Nov-2008 23:12 -
fedora/ 08-Dec-2008 15:53 -
firewall/ 12-Sep-2008 23:14 -
gentoo/ 05-Feb-2009 02:50 -
openfiler/ 30-Apr-2008 21:07 -
trixbox/ 07-Dec-2008 20:24 -
ubuntu/ 05-Feb-2009 02:33 -
ubuntu-cd/ 04-Dec-2008 02:00 -
ubuntu-cn/ 05-Feb-2009 02:10 -
HEADER.txt 04-Feb-2009 18:34 209
robots.txt 03-Sep-2008 12:25 26
sources.list.etch 05-Feb-2009 14:01 451
sources.list.hardy 05-Feb-2009 14:02 864
--------------------------------------------------------------------------------
iostat对linux硬盘IO性能测试
[ 2009/02/04 21:49 | by selboo ]
fom:http://www.php-oa.com/2009/02/03/iostat.html
以前一直不太会用这个参数。现在认真研究了一下iostat,因为刚好有台重要的服务器压力高,所以放上来分析一下.下面这台就是IO有压力过大的服务器
# iostat -x 1 10
Linux 2.6.18-92.el5xen 02/03/2009
avg-cpu: %user %nice %system %iowait %steal %idle
1.10 0.00 4.82 39.54 0.07 54.46
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 3.50 0.40 2.50 5.60 48.00 18.48 0.00 0.97 0.97 0.28
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sde 0.00 0.10 0.30 0.20 2.40 2.40 9.60 0.00 1.60 1.60 0.08
sdf 17.40 0.50 102.00 0.20 12095.20 5.60 118.40 0.70 6.81 2.09 21.36
sdg 232.40 1.90 379.70 0.50 76451.20 19.20 201.13 4.94 13.78 2.45 93.16
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
另外还可以参考
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。
别人一个不错的例子.(I/O 系统 vs. 超市排队)
举一个例子,我们在超市排队 checkout 时,怎么决定该去哪个交款台呢? 首当是看排的队人数,5个人总比20人要快吧? 除了数人头,我们也常常看看前面人购买的东西多少,如果前面有个采购了一星期食品的大妈,那么可以考虑换个队排了。还有就是收银员的速度了,如果碰上了连 钱都点不清楚的新手,那就有的等了。另外,时机也很重要,可能 5 分钟前还人满为患的收款台,现在已是人去楼空,这时候交款可是很爽啊,当然,前提是那过去的 5 分钟里所做的事情比排队要有意义 (不过我还没发现什么事情比排队还无聊的)。
I/O 系统也和超市排队有很多类似之处:
r/s+w/s 类似于交款人的总数
平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数
平均服务时间(svctm)类似于收银员的收款速度
平均等待时间(await)类似于平均每人的等待时间
平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少
I/O 操作率 (%util)类似于收款台前有人排队的时间比例。
我们可以根据这些数据分析出 I/O 请求的模式,以及 I/O 的速度和响应时间。
下面是别人写的这个参数输出的分析
# iostat -x 1
avg-cpu: %user %nice %sys %idle
16.24 0.00 4.31 79.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/cciss/c0d0
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p1
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p2
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
上面的 iostat 输出表明秒有 28.57 次设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 1.02+27.55 = 28.57 (次/秒) 其中写操作占了主体 (w:r = 27:1)。
平均每次设备 I/O 操作只需要 5ms 就可以完成,但每个 I/O 请求却需要等上 78ms,为什么? 因为发出的 I/O 请求太多 (每秒钟约 29 个),假设这些请求是同时发出的,那么平均等待时间可以这样计算:
平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数
应用到上面的例子: 平均等待时间 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 给出的78ms 的平均等待时间很接近。这反过来表明 I/O 是同时发起的。
每秒发出的 I/O 请求很多 (约 29 个),平均队列却不长 (只有 2 个 左右),这表明这 29 个请求的到来并不均匀,大部分时间 I/O 是空闲的。
一秒中有 14.29% 的时间 I/O 队列中是有请求的,也就是说,85.71% 的时间里 I/O 系统无事可做,所有 29 个 I/O 请求都在142毫秒之内处理掉了。
delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s =78.21 * delta(io)/s = 78.21*28.57 = 2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/1000ms = 2.23,而 iostat 给出的平均队列长度 (avgqu-sz) 却为 22.35,为什么?! 因为 iostat 中有 bug,avgqu-sz 值应为 2.23,而不是 22.35。
以前一直不太会用这个参数。现在认真研究了一下iostat,因为刚好有台重要的服务器压力高,所以放上来分析一下.下面这台就是IO有压力过大的服务器
# iostat -x 1 10
Linux 2.6.18-92.el5xen 02/03/2009
avg-cpu: %user %nice %system %iowait %steal %idle
1.10 0.00 4.82 39.54 0.07 54.46
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 3.50 0.40 2.50 5.60 48.00 18.48 0.00 0.97 0.97 0.28
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sde 0.00 0.10 0.30 0.20 2.40 2.40 9.60 0.00 1.60 1.60 0.08
sdf 17.40 0.50 102.00 0.20 12095.20 5.60 118.40 0.70 6.81 2.09 21.36
sdg 232.40 1.90 379.70 0.50 76451.20 19.20 201.13 4.94 13.78 2.45 93.16
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
另外还可以参考
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。
别人一个不错的例子.(I/O 系统 vs. 超市排队)
举一个例子,我们在超市排队 checkout 时,怎么决定该去哪个交款台呢? 首当是看排的队人数,5个人总比20人要快吧? 除了数人头,我们也常常看看前面人购买的东西多少,如果前面有个采购了一星期食品的大妈,那么可以考虑换个队排了。还有就是收银员的速度了,如果碰上了连 钱都点不清楚的新手,那就有的等了。另外,时机也很重要,可能 5 分钟前还人满为患的收款台,现在已是人去楼空,这时候交款可是很爽啊,当然,前提是那过去的 5 分钟里所做的事情比排队要有意义 (不过我还没发现什么事情比排队还无聊的)。
I/O 系统也和超市排队有很多类似之处:
r/s+w/s 类似于交款人的总数
平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数
平均服务时间(svctm)类似于收银员的收款速度
平均等待时间(await)类似于平均每人的等待时间
平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少
I/O 操作率 (%util)类似于收款台前有人排队的时间比例。
我们可以根据这些数据分析出 I/O 请求的模式,以及 I/O 的速度和响应时间。
下面是别人写的这个参数输出的分析
# iostat -x 1
avg-cpu: %user %nice %sys %idle
16.24 0.00 4.31 79.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/cciss/c0d0
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p1
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p2
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
上面的 iostat 输出表明秒有 28.57 次设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 1.02+27.55 = 28.57 (次/秒) 其中写操作占了主体 (w:r = 27:1)。
平均每次设备 I/O 操作只需要 5ms 就可以完成,但每个 I/O 请求却需要等上 78ms,为什么? 因为发出的 I/O 请求太多 (每秒钟约 29 个),假设这些请求是同时发出的,那么平均等待时间可以这样计算:
平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数
应用到上面的例子: 平均等待时间 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 给出的78ms 的平均等待时间很接近。这反过来表明 I/O 是同时发起的。
每秒发出的 I/O 请求很多 (约 29 个),平均队列却不长 (只有 2 个 左右),这表明这 29 个请求的到来并不均匀,大部分时间 I/O 是空闲的。
一秒中有 14.29% 的时间 I/O 队列中是有请求的,也就是说,85.71% 的时间里 I/O 系统无事可做,所有 29 个 I/O 请求都在142毫秒之内处理掉了。
delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s =78.21 * delta(io)/s = 78.21*28.57 = 2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/1000ms = 2.23,而 iostat 给出的平均队列长度 (avgqu-sz) 却为 22.35,为什么?! 因为 iostat 中有 bug,avgqu-sz 值应为 2.23,而不是 22.35。