韦德之道3普及版实战:linux ? 蝈蝈俊的博客

来源:百度文库 编辑:九乡新闻网 时间:2024/04/23 15:22:39

Ubuntu下挂载U盘

by 蝈蝈俊.netCategories: linux, ubuntu Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 26 日

第一步:查看U盘信息
首先使用  sudo fdisk -l 命令查看一下U盘在那里,
这个信息查看后,可能会类似看到下面信息:

Disk /dev/sdb: 4007 MB, 4007657472 bytes
255 heads, 63 sectors/track, 487 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x726f7272

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1         487     3903795    b  W95 FAT32
Partition 1 has different physical/logical endings:
     phys=(633, 254, 63) logical=(486, 0, 63)

第二步:挂载U盘到指定节点
我们把 U 盘挂载在 /media/u 目录下 (上面我们可以看到是一个FAT32的格式的U盘)   
# mount  -t vfat /dev/sdb1 /media/u
如果是 ntfs 格式的U盘,则类似如下:
# sudo mount -t ntfs-3g /dev/sdb1 /media/u
/media/u 为你要挂载到的节点,这个你可以随便指定

之后你就可以通过 cd /media/u  访问U盘了。

第三步:卸载u盘
输入命令:# sudo umount  /media/u U盘卸载了(注意:此时不能够在/media/u目录下输入前面的卸载命令,否则系统会认为你的“设备忙”而拒绝U盘的卸载)。

参考资料
ubuntu mount u盘
http://www.gagahappy.com/ubuntu-mount-u-driv/
ubuntu挂载\卸载U盘的方法
http://hi.baidu.com/fhdone/blog/item/d80aef198dddc54d43a9ade6.html

eAccelerator

by 蝈蝈俊.netCategories: linux, php Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 25 日

什么是eAccelerator?
———————-
eAccelerator是一个的免费、开源的PHP模块,它能够为提供PHP加速、优化、加码、和动态内容缓存功能。它通过存储PH脚本编译后的状态而加快执行PHP脚本的速度,而不需要频繁的编译这个PHP脚本。而且它能优化PHP脚本,以提高执行PHP的速度。eAccelerator特色是减少了服务器负载、使PHP脚本加速1-10倍。

配置选项
——–

eaccelerator.shm_size
eAccelerator使用共享内存的总数。单位是MB.
设置为“0”,则为操作系统默认值。默认为“0”

eaccelerator.cache_dir
硬盘缓存的目录。eAccelerator存储预编译代码,session数据,内容数据(content)和使用的入口(entres??)。这些数据也能够存储在共享内存里(为了得到更快的通道)。默认为“/tmp/eaccelerator”。

yayu:建立这个空目录后,在有人访问php页面后会自动建立二级二维目录(0,1…..e,f)(16进制,晕)

eaccelerator.enable
决定eAccelerator是否有效。“1”为有效,“0”为无效。默认为“1”

eaccelerator.optimizer
是否使用内置的优化工具加速代码的执行。“1”为是,“0”为否。默认为“1”

eaccelerator.debug
是否记录eAccelerator debug log。“1”为是,“0”为否。默认为“0”

eaccelerator.check_mtime
是否检查php程序更新时间。“1”为是,“0”为否。如果你想改变php程序后重编译程序到共享内存,那就应该设置为“1”。默认为“1”

eaccelerator.filter
决定哪些php文件被缓存。你可能需要指定哪些文件(如:"*.php *.phtml")需要被缓存。如果在文件前加上“!”,那么符合条件的文件将被忽略。默认为"",这以为着所有php文件都会被缓存。

eaccelerator.shm_max
设置诸如“eaccelerator_put()”之类的函数能往共享内存里面加载数据的大小。单位为MB。“0”为不限制,默认为“0”。

eaccelerator.shm_ttl
当共享内存空间已满,将删除在“shm_ttl”秒前没有使用的程序。默认为0,为不删除任何文件。

eaccelerator.shm_prune_period
共享内存已满。前一次操作是在shm_prune_period秒之前,那么这一次将删除所有的旧程序。默认为“0”,意为不删除任何程序。

eaccelerator.shm_only
是否把编译后程序缓存到硬盘上。这个选项对session数据和内容(content)缓存无效。默认为“0”,意为同时使用共享内存和硬盘做缓存。

eaccelerator.compress
是否对缓存内容做压缩。默认为“1”,为不压缩。

eaccelerator.compress_level
压缩的级别,默认和最高都为“9”。

eaccelerator.name_space
一个对所有键值假拟的字符串。通过在.htaccess文件中设置的这个值,允许两个应用使用相同的键值运行在同一个主机上。

yayu:命名空间?

eaccelerator.keys
eaccelerator.sessions
eaccelerator.content
决定那些键,session数据和内容将被缓存,这些可能的值是:

"shm_and_disk" – 缓存数据在共享内存和硬盘上(默认值)
"shm"          – 缓存数据在共享内存,如果共享内存已满或者提交的数据大小超过eaccelerator.shm_max,则存储在硬盘上。
"shm_only"     – 只缓存数据在共享内存
"disk_only"    – 只缓存数据在硬盘
"none"         – 不缓存数据

eaccelerator.allowed_admin_path
允许得到管理信息和管理操作的脚本路径。

参考资料

老李安装CentOS编译环境和eAccelerator
http://blog.sina.com.cn/s/blog_4560b80b0100mepy.html

PHP加速器eAccelerator文档翻译
http://www.yayu.org/look.php?id=100

eAccelerator 0.9.5.2 安装
http://www.yayu.org/look.php?id=115

eAccelerator 的加速效果
http://hi.baidu.com/oscommerce_cn/blog/item/ccbef9184485d40434fa4128.html

给PHP加速,eAccelerator配置和使用指南
http://www.toplee.com/blog/100.html

重装编译一下eaccelerator遇到wrong ELF class: ELFCLASS32
http://liujj.alltosun.net/201008/ea_wrongelfclass

eAccelerator配置详解
http://www.opsers.org/2010_05_1057.html

CentOS 5.3 64位安装 php-eAccelerator
http://bbs.phpchina.com/archiver/tid-166725.html

empty list with eaccelerator_list_keys
http://eaccelerator.net/ticket/203

http://eaccelerator.net/query?version=0.9.5&milestone=0.9.6&desc=1&order=priority&row=description

unix 计数器disk traffic含义补充

by 蝈蝈俊.netCategories: linux Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 23 日

LoadRunner Controller 菜单 tools –> options 中我们可以看到是3秒钟采集一次服务器的资源信息,如下图所示:

这就等价于以下命令:

iostat –d 3n  输出的tps
或者 iostat –x 3 中的 r/s+w/s

 

iostat –d 3n 的输出类似如下:

# iostat -d 3n
Linux 2.6.18-194.el5 (www2.×××.cn)        01/23/2011      _x86_64_       (8 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.94       171.62        80.80     362832     170820
sdb               0.22         1.53         3.27       3240       6912

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1.66         5.32        61.13         16        184
sdb               0.66         0.00         7.97          0         24

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0

 

iostat –x 3 的输出类似如下:

# iostat -x 3
Linux 2.6.18-194.el5 (www2.×××.cn)        01/23/2011      _x86_64_       (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.42    0.00    0.34    0.16    0.00   95.08

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               3.23     7.94    1.90    1.97   167.59    79.25    63.88     0.06   15.07   3.55   1.37
sdb               0.02     0.32    0.12    0.10     1.49     3.31    21.52     0.00    2.32   1.29   0.03

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.00    0.08    0.12    0.00   99.75

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     5.00    0.00    1.00     0.00    48.00    48.00     0.01    7.67   7.67   0.77
sdb               0.00     0.33    0.00    0.67     0.00     8.00    12.00     0.00    0.50   0.50   0.03

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.04    0.08    0.00   99.88

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     2.67    0.00    1.33     0.00    32.00    24.00     0.01    8.00   6.25   0.83
sdb               0.00     0.33    0.00    0.67     0.00     8.00    12.00     0.00    0.50   0.50   0.03

 

参考资料

服务器监控性能指标
http://hi.baidu.com/gotech/blog/item/ce0ded13df132f045baf5354.html

unix 计数器disk traffic含义
http://www.51testing.com/?uid-13997-action-viewspace-itemid-5081

linux kill 关闭进程命令【转】

by 蝈蝈俊.netCategories: linux Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 23 日

杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。

首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:
# kill –pid

注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。

确定要杀死进程的PID或PPID
# ps -ef | grep httpd

以优雅的方式结束进程
# kill -l PID

-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功–或许仍然需要先手工杀死子进程,然后再杀死父进程。

TERM信号
给父进程发送一个TERM信号,试图杀死它和它的子进程。
# kill -TERM PPID

killall命令
killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。

# killall httpd

停止和重启进程
有时候只想简单的停止和重启进程。如下:
# kill -HUP PID
该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。

参看:

http://www.ej38.com/showinfo/linux-185153.html
http://www.jb51.net/os/RedHat/9467.html

Linux(centos)下安装卸载命令rpm,make install使用方法【转】

by 蝈蝈俊.netCategories: linux Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 23 日

A:RPM包,

这种软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便,在图形界面里你只需要双击就能自动安装。
==如何卸载:
1、打开一个SHELL终端
2、因为LINUX下的软件名都包括版本号,所以卸载前最好先确定这个软件的完整名称。
查找RPM包软件:rpm -qa ×××*
注意:×××指软件名称开头的几个字母,不要求写全,但别错,*就是通配符号“*”,即星号,如你想查找机子里安装的REALPLAYER软件,可以输入:rpm -qa realplay*
3、找到软件后,显示出来的是软件完整名称,如firefox-1.0.1-1.3.2
执行卸载命令:rpm -e firefox-1.0.1-1.3.2
===安装目录,执行命令查找:rpm -ql firefox-1.0.1-1.3.2

B:tar.gz(bz或bz2等)结尾的源代码包,

这种软件包里面都是源程序,没有编译过,需要编译后才能安装,安装方法为:
1、打开一个SHELL,即终端
2、用CD 命令进入源代码压缩包所在的目录
3、根据压缩包类型解压缩文件(*代表压缩包名称)
tar -zxvf ****.tar.gz
tar -jxvf ****.tar.bz(或bz2)
4、用CD命令进入解压缩后的目录
5、输入编译文件命令:./configure(有的压缩包已经编译过,这一步可以省去)
6、然后是命令:make
7、再是安装文件命令:make install
8、安装完毕

===如何卸载:
1、打开一个SHELL,即终端
2、用CD 命令进入编译后的软件目录,即安装时的目录
3、执行反安装命令:make uninstall

====安装目录:注意make install命令过程中的安装目录,或者阅读安装目录里面的readme文件,当然最好的办法是在安装的过程中指定安装目录,即在./configure命令后面加参数–prefix=/**,
如:./configure –prefix=/usr/local/aaaa,即把软件装在/usr/local/路径的aaaa这个目录里。一般的软件的默认安装目录在/usr/local或者/opt里,可以到那里去找找

 

C:以bin结尾的安装包,

这种包类似于RPM包,安装也比较简单
1、打开一个SHELL,即终端
2、用CD 命令进入源代码压缩包所在的目录
3、给文件加上可执行属性:chmod +x ******.bin(中间是字母x,小写)
3、执行命令:./******.bin(realplayer for linux就是这样的安装包)
===如何卸载:把安装时中选择的安装目录删除就OK

===执行安装过程中可以指定,类似于windows下安装。
2、安装完软件后如何执行。 安装完软件后可以有好多种方法执行软件:
A、有些软件安装后会自动在应用程序列表里加上快捷键,和windows一样,到那里找就行了。
B、如果在应用程序列表里找不到的话,可以直接在/开始/运行命令里输入命令:启动命令一般就是软件名,如firefox,realplay,xmms等
C、也可以打开一个shell终端,输入软件名,和在“运行命令”里一样。如果不知道命令全程的话,可以输入开头的字母,然后按tab键查找,系统会自动显示以输入字母开头的所有命令/
D、你也可以直接到安装目录下运行启动文件,linux下的可执行图标和shell终端图标很像
E、到/usr/bin目录里找安装的软件启动文件执行命令。linux系统把所有可执行的文件命令在/usr/bin目录里都作了启动连接,你可以去那个目录寻找你安装的文件的启动命令,双击启动.

 

copy 自:http://www.johncn.com/24.html

Centos 下查看服务器CPU的信息

by 蝈蝈俊.netCategories: linux Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 22 日

实时查看CPU每核的线程利用率

top 后按 1,如下图所示,我们可以看到有8个CPU,每行显示的就是该CPU的使用率:

查看当前操作系统内核信息

# uname -a
Linux db1.xxx.com 2.6.18-194.el5xen #1 SMP Fri Apr 2 15:34:40 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

依次是

  • 操作系统名称: Linux   uname -s 可以单独看到这个信息
  • 计算机名: db1.xxx.com  uname -n 可以单独看到这个信息
  • 操作系统发行编号: 2.6.18-194.el5xen  uname -r 可以单独看到这个信息
  • 操作系统发行时间: #1 SMP Fri Apr 2 15:34:40 EDT 2010  uname -v 可以单独看到这个信息
  • 计算机类型,进程类型,硬件平台:x86_64    uname –m,uname –p,uname -i 可以单独看到这个信息
  • 操作系统信息:GNU/Linux  uname -o 可以单独看到这个信息

参数说明:
-a或—all          显示全部的信息。
-m或—machine 显示电脑类型。
-n或-nodename 显示在网络上的主机名称。
-r或—release    显示操作系统的发行编号。
-s或—sysname 显示操作系统名称。
-v 显示操作系统的版本。
–help 显示帮助。
–version 显示版本信息。

参看:http://www.lx138.com/page.php?ID=100

 

查看当前操作系统发行版信息

# lsb_release -a
LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description:    CentOS release 5.5 (Final)
Release:        5.5
Codename:       Final

 

查看有几个逻辑CPU,以及CPU型号

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
      8  Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

上面可以看到有8个逻辑CPU。 型号是 Intel(R) Xeon(R) CPU的 E5620  ,主频是 2.40GHz

 

实际是有几个CPU

# cat /proc/cpuinfo | grep physical | uniq -c
      1 physical id     : 0
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 1
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 2
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 3
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 4
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 5
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 6
      1 address sizes   : 40 bits physical, 48 bits virtual
      1 physical id     : 7
      1 address sizes   : 40 bits physical, 48 bits virtual

说明实际上是8颗1核的CPU,因为是多核CPU,所以这里有这个显示。其实这台机子是 1个Xeon 四核 E5620处理器

 

参看:

超线程技术的介绍
http://wenwen.soso.com/z/q168813991.htm

 

# more /proc/cpuinfo | grep "model name"
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

# grep "model name" /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

# grep "model name" /proc/cpuinfo | cut -f2 -d:
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

 

 

当前是32位还是64位工作模式

# getconf LONG_BIT
64

 

是否支持64bit计算

结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit

# cat /proc/cpuinfo | grep flags | grep ‘ lm ‘ | wc -l
8

 

参考资料

Linux下如何查看CPU信息, 包括位数和多核信息
http://hi.baidu.com/go_status/blog/item/4a095937ce3aa745251f1431.html

CentOS系统如何查看cpu
http://os.51cto.com/art/201004/192592.htm

centos下如何查看cpu是多少核,及每核的线程
http://zhidao.baidu.com/question/165109144

使用 iftop 来监控流量

by 蝈蝈俊.netCategories: linux, 测试 Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 20 日

我们可以用iftop来查看实时的网络流量,监控TCP/IP连接等信息。它的官方网站:http://www.ex-parrot.com/~pdw/iftop/

一些常用的参数命令:

查看ppp0网络接口的实时流量:
# iftop -i ppp0

以字节(bytes)为单位显示流量(预设是位bits):
# iftop -B

直接显示IP, 不进行DNS反解:
# iftop -n

直接显示连接端口编号, 不显示服务名称:
# iftop -N

显示192.168.1.0网段进出封包流量
# iftop -F 192.168.1.0/24 (或192.168.1.0/255.255.255.0)

其它参数可下 iftop -h 看说明。
像top一样,进入iftop画面时,

  • 可按 p 切换是否显示连接端口,
  • n 切换显示IP或主机的domain name,
  • N切换显示连接端口代号或名称,
  • p暂停显示,
  • b切换是否显示长条,
  • B切换计算几秒内的平均流量,
  • 其它按键可以按h观看说明。还可根据~/.iftoprc设定不同的变量方便今后直接引用。

iftop界面相关说明

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的“<=” “=>”这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

一些常见问题

1、make: yacc: Command not found
make: *** [grammar.c] Error 127
解决方法:apt-get install byacc   /   yum install byacc

2、configure: error: Curses! Foiled again!
(Can’t find a curses library supporting mvchgat.)
Consider installing ncurses.
解决方法:apt-get install libncurses5-dev  /    yum  install ncurses-devel

参考资料:

linux下用iftop 查看你的网卡流量
http://xok.la/2008/08/linux_interface_iftop.html

使用iftop查看实时的网络流量
http://www.linuxfly.org/post/247/

Linux流量监控工具 – iftop
http://www.iwanna.cn/archives/2010/07/30/4802/

LoadRunner测试结果中的吞吐量相关知识

by 蝈蝈俊.netCategories: linux, loadrunner Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 18 日

如下图是一个吞吐量的测试结果图(Throughput):

吞吐量的单位是 Bytes/sec 中文的意思就是比特每秒,它表示网络传输速度的大小。

比如: 31000000 bytes/sec  = 31000000 / 1024 = 30273.44 k/s = 30273.44/1024 = 29.56M/s

 

另外:

网卡发送和接受数据流量的计数器

  • 假如是windows server,则添加network interface那个计数器,选择对应的网卡,就可以得到网络数据流量
  • 假如是unix,则使用incoming 、outgoing packet rate 下面这几个计数器进行监视。
    • Incoming packets error rate     接收以太网数据包时每秒钟接收到的错误数
    • Incoming packets rate           每秒钟传入的以太网数据包数
    • Outgoing packets errors rate    发送以太网数据包时每秒钟发送的错误数
    • Outgoing packets rate           每秒钟传出的以太网数据包数

参看:

http://www.3atesting.com/bbs/thread-290-1-70.html
http://www.3atesting.com/bbs/thread-3794-1-9.html

LoadRunner 监控到的Linux服务器CPU的一些主要指标说明

by 蝈蝈俊.netCategories: linux Tags: No Tags Comments: No Comments Published on: 2011 年 01 月 11 日

CPU的主要指标:

CPU Utilization

CPU 使用率,CPU的使用时间百分比,75%以上就比较高了。

在任意时间内,CPU有7个状态:
1.idle,表示CPU闲置并等待工作分配.
2.user,表示CPU在运行用户的进程
3.system,表示CPU在执行kernel工作
4.nice,表示CPU花费在被nice改变过优先级的process上的时间(注意:被nice命令改变优先级的process仅指那些nice值为负的process.花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此整个时间加起来可能会超过百分之百)
5.iowait,表示CPU等待IO操作完成的时间
6.irq,表示CPU开销在响应硬中断上的时间
7.softirq,表示CPU开销在响应软中断上的时间.
我们一般用vmstat看到的都是四个状态:sy,us,id,wa,通过他和load avg结合,基本可以知道cpu的状态

大部分的性能工具用百分比表示CPU时间.当system时间占用很高的时候,你可以用"oprofile"工具发现时间都花费在哪里.当iowait很高的时候,你需要分析你的IO设备,比如磁盘,网卡.

 

Average load

平均负载,上一分钟同时处于“就绪”状态的平均进程数。

Load这个东西怎么理解呢,就像一条马路,有N个车道,如果N个进程进入车道,那么正好一人一个,再多一辆车就占不到车道,要等有一个车空出车道。
在CPU中可以理解为CPU可以并行处理的任务数,那么就是“CPU个数 * 核数”,如果CPU Load = CPU个数 * 核数 那么就是说CPU正好满负载,再多一点,可能就要出问题了,有任务不能被及时分配处理器,那么保证性能的话,最好是小于CPU个数 * 核数 *0.7。

Load Average是 CPU的 Load,它所包含的信息是在一段时间内 CPU正在处理以及等待 CPU处理的进程数之和的统计信息,也就是 CPU使用队列的长度的统计信息。

Load Average 的值应该小于“CPU个数 * 核数 *0.7 ” ,否则就高了。

比如:
1个1核CPU,Load Average < 1 * 1 * 0.7 = 0.7;
1个4核的CPU,Load Average必须 < 1 * 4 * 0.7 = 2.8。
查看cpu的信息:grep ‘model name’ /proc/cpuinfo

使用 vmstat 看到的数据中也有这个数据,vmstat 查看r(Load Average)。

另外,top命令应该是把每个核的CPU占用率加起来,算一个和,于是多核情况下会top命令会计算出超过100%。

在linux中,process有两种状态:
1.runnable
2.blocked waiting for an event to complete
一个blocked状态的process可能在等待一个I/O操作获取的数据,或者是一个系统调用的结果。
如果一个process在runnable状态,这就意味着它将同其他runnable状态的process等待CPU时间,而不是立即获得CPU时间,一个runnable状态的process不需要消耗CPU时间,只有当Linux调度进程从runnable队列中选择哪个process下次执行。
当 process在runnable状态,当时等待CPU时间时,他们形成的等待队列称作Run Queue.Run Queue越大,表示等待的队列越长。
性能工具通常显示runnable processes的数目和blocked processes的数目。
还有一个很常见的系统状态是load average,系统的load是指running和runnable process的总和。
例如:如果有两个processes在running和有三个在等待运行(runnable),那么系统的load为五。
load average是指在指定时间内load的平均值。一般load average显示的三个数字的时间分别为1分钟,五分钟和十五分钟。

 

Interrupt rate

每秒内的设备中断数。CPU接收硬件驱动发出的中断请求数。

这种中断通常是下面请看被触发:

当一个驱动器有一个时间需要被kernel操作时。例如:如果一个磁盘控制器从磁盘上取得了一个数据块,kernel需要读取使用这个块,那么磁盘控制器会触发一个中断;
kernel接收每个中断,一个中断处理器运行如果这个中断被注册,否则,这个中断被忽略。
在系统中,中断处理器的优先级非常高,而且执行速度非常快。
很多时候,有些中断处理并不需要很高的处理优先级,所以也有soft- interrupt handler。

如果有很多的中断,kernel需要花费大量的时间去处理中断。

可以检查/proc/interrupts能够知道中断发生在哪个CPU 上.

 

Interrupt Rate中包括内核由于进程的时间片中断。
在 Linux 2.6 中,系统时钟每 1 毫秒中断一次时钟频率,用 HZ 单位表示(即每秒中断 1000 次)。
系统不一样,内核不一样的配置100、250的都有。

内核的时钟频率可以通过如下命令知道: 

cat /boot/config-`uname -r` | grep ‘^CONFIG_HZ=’

CONFIG_HZ=100

每秒总的时钟中断数就是 = cpu个数 * 核数 * CONFIG_HZ

cat /proc/interrupts   可以查看中断的类型以及次数

          CPU0       CPU1       CPU2       CPU3      
LOC:   97574747   52361843  105207680   69447653   Local timer interrupts
RES:     107368     257510      98635     186294   Rescheduling interrupts
CAL:      14174      14206      14164        194   function call interrupts
TLB:    1007949     853117     992546     591410   TLB shootdowns

用vmstat查看的 in(Interrupt)就是这个参数

Context Switch Rate

大部分现在的CPU在同一时间只能运行一个process。
虽然也有一些CPU,例如超线程技术的CPU,能实现同时运行超过一个process。linux把这种CPU看作多个单线程CPU。
linux内核不断的在不同process间切换,造成一个错觉,让人感觉一个单CPU同时处理多个任务。
不同process之间的切换称作 Context Switch。
当系统做Context Switch时,CPU保存所有old process的context信息并获得new process的所有context信息。
Context信息包括大量的linux追踪每个process信息,尤其是一些资源:
那些process正在执行,被分配了哪些内存,它打开了那些文件,等等。
切换Context会触发大量的信息移动,这是比较高的开销。
如果可能的话尽量保持很小的 context switches。

为了尽可能的减小context switches,你首先需要知道它们是怎么产生的。
首先,kernel调度触发context switches。为了保证每个process平等的共享CPU时间,kernel周期性中断running的process,如果合适,
kernel调度器会开始一个其他的process而不是让当前的process继续执行,每次的周期性中断或者定时中断都可能触发context switch。
每秒定时中断的次数因不同架构和不同的kernel版本而不同。
获取每秒中断次数的一个简单办法是通过监控 /proc/interrupts文件,看下面的例子:
root@localhost asm-i386]# cat /proc/interrupts | grep timer; sleep 10 ; cat /proc/interrupts | grep timer
0: 24060043 XT-PIC timer
0: 24070093 XT-PIC timer
上面可以看到在指定的时间内timer次数的变化,每秒产生的中断次数为1000次。
如果你的context switch比timer中断大很多。那么context switch更多的可能是I/O请求或者其他长时间的系统调用(比如sleep)产生。
当一个应用请求一个操作不能立即实现时,kernel开始 context switch操作:
存入请求的process并且试着切换到其他runnable process。这将使得CPU保持工作状态.

 

Context Switch大体上由两个部分组成:
中断和进程(包括线程)切换,一次中断(Interrupt)会引起一次切换,进程(线程)的创建、激活之类的也会引起一次切换。
Context Switch 的值也和TPS(Transaction Per Second)相关的,假设每次调用会引起N次CS,那么就可以得出

     Context Switch Rate = Interrupt Rate + TPS* N

CSR减掉IR,就是进程/线程的切换,假如主进程收到请求交给线程处理,线程处理完毕归还给主进程,这里就是2次切换。也可以用CSR、IR、TPS的值代入公式中,得出每次事物导致的切换数。因此,要降低CSR,就必须在每个TPS引起的切换上下功夫,只有N这个值降下去,CSR就能降低,理想情况下N=0,但是无论如何如果N >= 4,则要好好检查检查。

用vmstat查看 cs(Context Switch)就是这个参数

参考资料:

Loadrunner 监控Unix系统性能指标的解释
http://blog.csdn.net/marising/archive/2010/01/08/5160210.aspx

压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
http://blog.csdn.net/marising/archive/2010/01/12/5182771.aspx

LoadRunner压力测试时监控服务器Linux的资源情况
http://blog.csdn.net/marising/archive/2010/01/08/5160210.aspx

理解Load Average做好压力测试
http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html

CPU负载的分析
http://www.penglixun.com/tech/system/cpu_load_analyse.html

linux cpu相关性能指标
http://www.51testing.com/?uid-3787-action-viewspace-itemid-5527

page 1 of 1