- 论坛徽章:
- 0
|
本帖最后由 yuhuohu 于 2010-11-30 11:08 编辑
前人种树,后人乘凉,开源世界,自由分享
做系统管理的不可能单纯的仅接触solaris,unix大同小异,完全可以从solaris出发达到触类旁通的目的。近日有空,看些Linux的管理文档,主要是看Linux和Solaris的区别点,顺手发些心得,这是第八篇:性能监控
从Linux到Solaris (updating)
目录:
哥们,看帖要推荐啊,点这里
第八章:性能监控
性能监控对服务器管理员来讲至关重要,通常我们需要监控机器的CPU,内存,磁盘,以及网络流量等。主要包括:
- 处理器
- 内存
- 网络
- 磁盘,卷和文件系统
- 系统和用户进程
- 输入输出(I/O,input/output)
如果需要更深入的了解瓶颈所在,可使用dtrace工具。OpenSolaris DTrace Community提供了一些专注于此方面的dtrace脚本,可在执行性能调优时使用。
第一节:处理器监控
1、solaris
查看处理器状态,psrinfo显示处理器每个核(core)的状态信息
-bash-3.00$ /usr/sbin/psrinfo
0 on-line since 10/13/2007 02:30:32
1 on-line since 10/13/2007 02:30:33
2 on-line since 10/13/2007 02:30:33
....
查看处理器的详细信息
-bash-3.00$ /usr/sbin/psrinfo -v
Status of virtual processor 0 as of: 12/27/2007 09:39:37
on-line since 10/13/2007 02:30:32.
The sparcv9 processor operates at 1000 MHz,
and has a sparcv9 floating point processor.
Status of virtual processor 1 as of: 12/27/2007 09:39:37
on-line since 10/13/2007 02:30:33.
The sparcv9 processor operates at 1000 MHz,
and has a sparcv9 floating point processor.
....
来个中文的:
bash-3.00$ /usr/sbin/psrinfo -v
虚拟处理器 0 在下列时间的状态:12/27/2007 13:14:53
自 12/27/2007 12:59:29 开始已在运行。
i386 处理器以 1333 MHz 运行,
而且有 i387 compatible 浮点数处理器
查看每个处理器(同样以核为单位)的统计信息,用mpstat命令
bash-3.00$ mpstat 2 5
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 1058 21 0 309 224 1029 65 0 5 0 2825 16 35 0 49
0 8 0 0 345 245 217 2 0 1 0 62 0 2 0 98
0 10 0 0 343 244 209 1 0 1 0 64 0 2 0 98
0 0 0 0 478 378 498 68 0 67 0 54 0 11 0 89
0 0 0 0 346 245 208 1 0 1 0 60 0 1 0 99
输出中,一般看最后四个字段:usr,sys,wt,idl。idl不低于30基本没事,sys如果常高于15需引起注意,wt是历史遗留字段对于solaris10而言总是0。其他几个常见字段:
- xcal 多个处理器间交叉调用的次数
- csw 处理器执行上下文交换的次数
- syscl 本处理器执行系统调用的次数
注意:mpstat之类的按时间与次数的采样工具的输出第一行是自系统启动以来的汇总平均值统计
此外,kstat命令也可以用来收集处理器的信息:
bash-3.00$ kstat -m cpu
module: cpu instance: 0
name: intrstat class: misc
crtime 29.699815013
level-1-count 65517
level-1-time 991179530
level-10-count 163269
level-10-time 97182752330
level-11-count 0
level-11-time 0
level-12-count 2
level-12-time 238486
......
2、redhat
查看处理器状态,用dmesg从启动信息中查看处理器每个核(core)的状态信息
[root@es4u5 ~]# dmesg | grep -i cpu
Initializing CPU#0
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU: AMD Athlon(tm) 64 Processor 3200+ stepping 02
ACPI: Processor [CPU0] (supports C1, 8 throttling states)
Losing some ticks... checking if CPU frequency changed.[/fiont]
查看处理器的详细信息
[root@es4u5 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 47
model name : AMD Athlon(tm) 64 Processor 3200+
stepping : 2
cpu MHz : 1329.309
cache size : 512 KB
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow pni
bogomips : 2671.67
TLB size : 1088 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management: ts fid vid ttp [4] [5]
第二节:内存
1、solaris
solaris通常使用vmstat命令来查看系统的虚拟内存子系统的状态信息。vmstat可显示swap,物理内存,分页错误,磁盘信息统计和错误等信息.
bash-3.00$ vmstat 2 3
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr f0 s0 s1 s2 in sy cs us sy id
0 0 0 730888 228436 43 196 62 1 1 0 38 0 6 0 0 313 557 343 3 10 87
0 0 0 731096 221556 3 25 0 0 0 0 0 0 0 0 0 341 111 208 0 3 97
0 0 0 731092 221548 0 0 0 0 0 0 0 0 0 0 0 334 90 205 8 3 89
【注意】
swap为空余的swap空间(此处的swap为总的swap空间而不仅仅指swap分片的空间),free为空余的可用物理内存
列出用于交换空间的硬盘分片或文件的使用情况:
bash-3.00# swap -l
交换文件 dev swaplo blocks free
/dev/dsk/c1t0d0s3 54,3 8 1048568 1048568
列出交换空间的总体使用情况:
bash-3.00# swap -s
总数:分配了 113024k 字节 + 保留 15340k = 已使用 128364k,730172k 可用
查看内存分页的汇总情况
bash-3.00# echo ::memstat | mdb -k
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 27734 108 22%
Anon 29908 116 23%
Exec and libs 5862 22 5%
Page cache 12306 48 10%
Free (cachelist) 18780 73 15%
Free (freelist) 34320 134 27%
Total 128910 503
此外还可以使用kstat查看内存的详细信息(以每个内存模块为单位)
$ kstat -m vmem | more
module: vmem instance: 1
name: heap class: vmem
alloc 6254
contains 0
contains_search 0
crtime 0
fail 0
free 1200
lookup 113
mem_import 0
mem_inuse 86376448
mem_total 1646524366848
populate_fail 0
populate_wait 0
search 4381
snaptime 2441.858424006
vmem_source 0
wait 0
......
2、redhat
[root@es4u5 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 16068 44764 99016 0 0 19 4 1015 31 0 3 96 0
0 0 0 16068 44764 99016 0 0 0 0 1011 16 0 1 100 0
0 0 0 16068 44764 99016 0 0 0 0 1012 19 0 1 99 0
# free --------------列出内存的使用汇总情况
total used free shared buffers cached
Mem: 251016 235008 16008 0 44792 99032
-/+ buffers/cache: 91184 159832
Swap: 786424 0 786424
# cat /proc/meminfo --------------列出内存的详细状态信息
MemTotal: 251016 kB
MemFree: 134464 kB
Buffers: 10988 kB
Cached: 54648 kB
SwapCached: 0 kB
Active: 51288 kB
Inactive: 35008 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 251016 kB
LowFree: 134464 kB
SwapTotal: 786424 kB
SwapFree: 786424 kB
Dirty: 44 kB
Writeback: 0 kB
Mapped: 32428 kB
Slab: 19236 kB
CommitLimit: 911932 kB
Committed_AS: 90048 kB
PageTables: 3704 kB
VmallocTotal: 536870911 kB
VmallocUsed: 1804 kB
VmallocChunk: 536868343 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
第三节:网络负荷监控
1、solaris
最常见的都是用netstat命令,且redhat和solaris的常见使用方法基本一致。netstat命令可用来查看路由表、当前活跃的网络连接、各种网络数据结构、流内存统计,接口状态、DHCP等信息。常见的使用方式有:
- netstat -rn 看路由
- netstat -in 看流量统计
- netstat -an 看连接信息
- netstat -pn 看ARP解析表(MAC-IP映射表)
此外,solaris可以使用kstat命令查看网络信息
bash-3.00$ kstat -m e1000g | more 模块(-m)可填网卡驱动类型,比如e1000g,e1000g0,bge,hme...
module: e1000g instance: 0
name: e1000g0 class: net
brdcstrcv 0
brdcstxmt 0
collisions 0
crtime 43.023212228
ierrors 0
ifspeed 1000000000
ipackets 3421
ipackets64 3421
......
2、redhat
使用netstat命令,基本同solaris。区别在于-p选项
redhat的netstat -pn:显示每个socket所属的程序名和进程ID
第四节:磁盘,卷和文件系统监控
1、solaris
查看文件系统空间
#df -h
文件系统 大小 用了 可用 容量 挂接在
/dev/dsk/c1t0d0s0 480M 278M 154M 65% /
/devices 0K 0K 0K 0% /devices
ctfs 0K 0K 0K 0% /system/contract
proc 0K 0K 0K 0% /proc
......
查看文件系统类型
# fstyp /dev/rdsk/c1t0d0s1
ufs
2、redhat
redhat的df命令有个-T选项,可方便的查看文件系统类型
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 1008M 179M 779M 19% /
/dev/sda1 ext3 99M 11M 84M 11% /boot
none tmpfs 123M 0 123M 0% /dev/shm
/dev/mapper/VolGroup00-LogVol04
ext3 1.1G 34M 1013M 4% /home
/dev/mapper/VolGroup00-LogVol02
ext3 4.0G 2.1G 1.8G 55% /usr
/dev/mapper/VolGroup00-LogVol03
ext3 1008M 90M 868M 10% /var
# fdisk -l --------------会列出系统认到的所有硬盘和U盘的分区信息
Disk /dev/cciss/c0d0: 146.7 GB, 146778685440 bytes
255 heads, 63 sectors/track, 17844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/cciss/c0d0p1 * 1 261 2096451 83 Linux
/dev/cciss/c0d0p2 262 8094 62918572+ 83 Linux
/dev/cciss/c0d0p3 8095 12271 33551752+ 82 Linux swap
/dev/cciss/c0d0p4 12272 17844 44765122+ 5 Extended
/dev/cciss/c0d0p5 12272 14360 16779861 83 Linux
/dev/cciss/c0d0p6 14361 16449 16779861 83 Linux
/dev/cciss/c0d0p7 16450 16971 4192933+ 83 Linux
/dev/cciss/c0d0p8 16972 17493 4192933+ 83 Linux
solaris中类似的命令为prtvtoc,可列出指定磁盘的分区信息:
# prtvtoc /dev/rdsk/c1t0d0s2
* /dev/rdsk/c1t0d0s2 partition map
*
* Dimensions:
* 512 bytes/sector
* 32 sectors/track
* 128 tracks/cylinder
* 4096 sectors/cylinder
* 4094 cylinders
* 4092 accessible cylinders
*
* Flags:
* 1: unmountable
* 10: read-only
*
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 2 00 1052672 1048576 2101247 /
1 7 00 2101248 1273856 3375103 /var
2 5 00 0 16760832 16760831
3 3 01 4096 1048576 1052671
5 0 00 3375104 1048576 4423679 /opt
6 4 00 4423680 11288576 15712255 /usr
7 8 00 15712256 1048576 16760831 /export/home
8 1 01 0 4096 4095
第五节:系统和用户进程监控
第六节:输入输出(I/O)监控
1、solaris
# iostat 30 5 隔30秒采集一次,共采集5次
输出的一行,照例还是汇总平均值
2、redhat
# vmstat 30 5
[ 本帖最后由 yuhuohu 于 2009-7-4 20:26 编辑 ] |
|