免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11234 | 回复: 9

他山之石可以攻玉,从Linux到Solaris(08):性能监控 [复制链接]

论坛徽章:
0
发表于 2007-12-27 09:21 |显示全部楼层
本帖最后由 yuhuohu 于 2010-11-30 11:08 编辑

前人种树,后人乘凉,开源世界,自由分享



做系统管理的不可能单纯的仅接触solaris,unix大同小异,完全可以从solaris出发达到触类旁通的目的。近日有空,看些Linux的管理文档,主要是看Linux和Solaris的区别点,顺手发些心得,这是第八篇:性能监控

从Linux到Solaris
(updating)

目录:


作者保留版权,转载请注明出处,来自cu-yuhuohu.


哥们,看帖要推荐啊,点这里\"\"


第八章:性能监控

性能监控对服务器管理员来讲至关重要,通常我们需要监控机器的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]



作者保留版权,转载请注明出处,来自cu-yuhuohu.


第二节:内存
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



作者保留版权,转载请注明出处,来自cu-yuhuohu.

第三节:网络负荷监控
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


作者保留版权,转载请注明出处,来自cu-yuhuohu.


第四节:磁盘,卷和文件系统监控
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



作者保留版权,转载请注明出处,来自cu-yuhuohu.


第五节:系统和用户进程监控
1、solaris

# prstat

2、redhat

# top

Solaris没有自带top工具,如果要用top命令,需要到http://www.sunfreeware.com/ 下载对应版本的top工具包安装。


作者保留版权,转载请注明出处,来自cu-yuhuohu.


第六节:输入输出(I/O)监控
1、solaris

# iostat 30 5             隔30秒采集一次,共采集5次

输出的一行,照例还是汇总平均值

2、redhat

# vmstat 30 5

作者保留版权,转载请注明出处,来自cu-yuhuohu.

对您有用吗?有用您就点此推荐一把,谢谢:http://blog.chinaunix.net/u2/star.php?blogid=12442


[ 本帖最后由 yuhuohu 于 2009-7-4 20:26 编辑 ]

论坛徽章:
0
发表于 2007-12-27 10:12 |显示全部楼层
我对redhat不熟悉,因此涉及到redhat部分如有不当之处请各位不吝赐教

论坛徽章:
0
发表于 2007-12-27 11:29 |显示全部楼层
搞定

论坛徽章:
2
双鱼座
日期:2014-02-23 12:10:03操作系统版块每日发帖之星
日期:2015-12-17 06:20:00
发表于 2007-12-27 11:43 |显示全部楼层
沙发被你自己占了

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2007-12-27 12:00 |显示全部楼层
支持并感谢2位大仙的工作!

    有空顺便瞄一下我的问题,给点建议,谢谢!

    http://bbs.chinaunix.net/thread-1034597-1-1.html

论坛徽章:
0
发表于 2007-12-28 20:39 |显示全部楼层
内容太散了.

论坛徽章:
0
发表于 2008-01-09 13:42 |显示全部楼层
很好

论坛徽章:
0
发表于 2008-01-09 15:01 |显示全部楼层
挺好的 !

论坛徽章:
0
发表于 2008-01-09 17:01 |显示全部楼层
照单全收啊 呵呵

论坛徽章:
0
发表于 2015-09-17 22:07 |显示全部楼层
其实solaris 中的prstat 类似于linux 的TOP
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP