技术支持:0755-88856228
技术解决方案 所在位置:首页 >> 技术解决方案 >> Solaris 性能基础

Solaris 性能基础

出处:www.sun1860.com  分类:技术解决方案  发布:2017/10/31 13:44:54  阅读:(948)
摘要:

        打算写下这些为本周部门交流做准备,好好理顺下自己对简单系统管理的认识,知识来源主要是是机械工业出版社的 《Solaris 性能与工具》。欢迎指点。   这里的测试都在sparc平台下的solaris9之后的操作系统上,linux上对号入座是行不通的。

        对于服务器而言,我们一般会关注cpu的个数,主频,负载情况。相关命令prtdiag  psrinfo cpustat mpstat vmstat .

       查看硬件信息,可以用prtdiag,可以看到以下是信息

     

复制代码
bash-3.00# prtdiag
System Configuration:  Sun Microsystems  sun4u Sun Fire V100 (UltraSPARC-IIe 500MHz)
System clock frequency: 100 MHz
Memory size: 768 Megabytes

========================= CPUs =========================

                    Run   Ecache   CPU    CPU
Brd  CPU   Module   MHz     MB    Impl.   Mask
---  ---  -------  -----  ------  ------  ----
 0     0     0      500     0.2   13       1.4


========================= IO Cards =========================

     Bus#  Freq
Brd  Type  MHz   Slot  Name                              Model
---  ----  ----  ----  --------------------------------  ----------------------
 0   PCI-0  33     0   dma-isadma
 0   PCI-0  33     0   rtc-m5819                         m5819
 0   PCI-0  33     0   power-acpi-power
 0   PCI-0  33     0   SUNW,lomh
 0   PCI-0  33     0   serial-su16550
 0   PCI-0  33     0   serial-su16550
 0   PCI-0  33     0   flashprom                         SUNW,258-7883
 0   PCI-0  33     0   i2c-i2c-smbus
 0   PCI-0  33     0   ppm-SUNW,smbus-ppm
 0   PCI-0  33     0   beep-SUNW,smbus-beep
 0   PCI-0  33     0   fan-control-SUNW,smbus-fan-contr+
复制代码

 

可以看到内存,cpu,以及接口等信息,这是一台cpu主频为500m Hz,内存为768m的sparc机器,而那个100mHz是系统总线的频率,更直白些,就是外频。

如果要看cpu硬件信息,可以使用prsinfo 这一个命令,-p参数显示cpu个数,-v显示内核状态,-vp 显示的是线程数

复制代码
bash-3.00# psrinfo -v
Status of virtual processor 0 as of: 07/31/2012 17:21:24
  on-line since 07/13/2011 16:22:45.
  The sparcv9 processor operates at 500 MHz,
        and has a sparcv9 floating point processor.
bash-3.00# psrinfo -p
1
bash-3.00# psrinfo -vp
The physical processor has 1 virtual processor (0)
  UltraSPARC-IIe (portid 0 impl 0x13 ver 0x14 clock 500 MHz)
复制代码

 因为cpu是多核,每个核又有几个线程,如果要查看核数,请用下面命令:

复制代码
-bash-3.00$ kstat cpu_info|grep core_id|uniq
        core_id                         66
        core_id                         68
        core_id                         70
        core_id                         72
        core_id                         74
        core_id                         76
        core_id                         78
        core_id                         80
复制代码
 

 当然,这些不是重点,我们关注的是系统运行时cpu的状态。

1.vmstat(从命令行粘过来会列对齐错乱,就截了个图)

复制代码

 
复制代码

 kthr(应该是kerneral thread)中的三列 r b w ,分别代表运行,阻塞,等待的线程数,可以据此查看cpu饱和度(负载程度)。

 还有一个快速查看饱和度的命令

uptime:

bash-3.00# uptime
  2:26pm  up 384 day(s), 22:04,  2 users,  load average: 1.46, 1.47, 1.48
You have new mail in /var/mail/root

 

 load average后面的数值代表了cpu在1分钟,5分钟,15分钟的每个运算周期的平均负载(即线程数,),这个平均值对性能评估意义不大。无法检测出峰值的负载。

sar (system activation report)命令,是一个非常好用的系统信息统计工具。其默认是统计cpu信息的(-u) 

以下是示例

复制代码
bash-3.00# sar 1 5

SunOS xxxx 5.10 Generic_118833-33 sun4u    08/01/2012

14:47:08    %usr    %sys    %wio   %idle
14:47:09      88      12       0       0
14:47:10      94       6       0       0
14:47:11      76       7       0      17
14:47:12      92       6       0       2
14:47:13      93       7       0       0

Average       89       8       0       4
复制代码

一秒统计一次,计五次。关于sar 命令,是可以单独写一篇文章的,看操作系统上的man手册就可见一斑。查看单个cpu利用率的统计命令是mpstat,这里就不贴命令结果了。

        以上所写的,是不能直接解决问题的,我们只是看到了cpu的使用状况,而不是谁在用cpu。谁在用cpu,用了多少,这是进程和线程的事情了,这里需要介绍一个叫做prstat的命令。以下是默认显示的片段,包含pid,使用内存大小和cpu使用百分比,默认按照cpu使用百分比排序:

复制代码
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 27235 root     3344K 3016K cpu0    59    0   0:00:00 0.3% prstat/1
   920 noaccess  163M   58M sleep   59    0  22:49:31 0.3% java/23
   956 dbadm     115M   42M sleep   59    0  14:13:33 0.2% java/37
   140 root     3928K 2024K sleep   59    0   0:44:02 0.0% nscd/31
 26621 sybase   8216K 2664K sleep   59    0   0:00:01 0.0% sshd/1
 27789 root     2320K 1344K sleep  100    -   1:07:05 0.0% xntpd/1
复制代码

PID USERNAME 是进程号,用户名

SIZE 和RSS是映射虚拟内存大小和占用物理内存

STATE 进程状态

PRI 优先级 数字越大优先级越高

TIME 累计使用cpu时间

PROCESS/NLWP 进程名(执行文件名)/线程数

 

prstat 可以对进程(线程)进行各种统计排序,

                对线程进行统计,可以使用 -L参数,

                用按指定列排序 使用 -s + 列名  例如 prstat -s rss 就是按照使用物理内存量排序

               按某uid使用资源总量 -t 针对一个用户,列出资源 -U + uid 

               每一个zone使用的资源统计 -Z

               列出用户和进程的相关信息,相当于 prstat 后跟进了一个prstat -t

以上是對cpu和進程資源的使用情况进行分析的命令,下面写下磁盘性能相关的的命令iostat,sar。对于磁盘我们一般关注的性能问题是读写速度,使用率(繁忙百分比)。使用iostat可以获得磁盘性能信息,常见参数解释:

-D 新风格

-e 显示设备错误统计数据

-M 以MB/s为单位显示吞吐

-n 使用磁盘逻辑名显示,默认实例名

-p 显示每个分区和设备的和分区的统计数据

-P 只显示分区统计信息

-x 扩展磁盘统计数据 ,条目更多。

-z 不显示全部为0的行

-m 显示挂载点(配合-p或者-P)

一个例子

复制代码
bash-3.00# iostat -zxnpm
                    extended device statistics
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.0    0.7    0.5    5.6  0.0  0.0    0.7    0.7   0   0 c0t0d0
    0.0    0.0    0.0    0.0  0.0  0.0    0.9    0.7   0   0 c0t0d0s0 (/)
    0.0    0.0    0.0    0.0  0.0  0.0   14.8   15.4   0   0 c0t0d0s1 (/usr/openwin)
    0.0    0.2    0.0    0.4  0.0  0.0    0.1    0.3   0   0 c0t0d0s3 (/var)
    0.0    0.0    0.0    0.0  0.0  0.0    5.0   10.7   0   0 c0t0d0s4
    0.0    0.5    0.5    5.1  0.0  0.0    0.7    0.8   0   0 c0t0d0s5 (/opt)
    0.0    0.0    0.0    0.0  0.0  0.0    3.0    2.0   0   0 c0t0d0s6 (/usr)
    0.0    0.0    0.0    0.0  0.0  0.0    2.2    2.9   0   0 c0t0d0s7 (/export/home)
复制代码


 kr/s 读速率 kw/s 写速率  %w 等待百分比 %b 忙百分比 wait 等待的平均数量 actv被响应事物数量 wsvc_t平均等待时间 asvc_t平均运行时间

。更多的內容,可以man。

   对于那些进程占用比较多的cpu,内存,都有命令可以找出。对io呢,如何找出正在大量占用磁盘的进程呢?这里有三个个很实用的脚本iotop

iosnooppsiohttp://www.brendangregg.com/psio.html。 其中iotop和iosnoop只能在s10及以后版本使用,因为使用dtrace了。

 

不是每个用户都有权限使用dtrace的,如果不是root,又想使用dtrace,请参照

以下是增加權限过程:

 

 

复制代码
As user1,
$ id
uid=1001(user1) gid=1(other)
$ ppriv $$
214885: -sh
flags = 
        E: basic
        I: basic
        P: basic
        L: all
$ exit

As root,
# grep user1 /etc/user_attr 
# usermod -K defaultpriv=basic,dtrace_user,dtrace_proc user1
# grep user1 /etc/user_attr
user1::::type=normal;defaultpriv=basic,dtrace_user,dtrace_proc
# su - user1
$ ppriv $$
285007: -sh
flags = 
        E: basic,dtrace_proc,dtrace_user
        I: basic,dtrace_proc,dtrace_user
        P: basic,dtrace_proc,dtrace_user
        L: all
复制代码

 

文章来自: 夜思笔迹

 

 

 

 

联系方式
联系方式 深圳市众联达科技有限公司

电话:0755-88856228

手机:15889329885

传真:0755-29578940

Q Q:点击这里给我发消息

地址:深圳市龙华新区和平西路龙军工业区17栋401

深圳市众联达科技有限公司   版权所有:深圳市众联达科技有限公司  深圳市众联达科技有限公司
电话:086-0755-88856228    网址:www.sun1860.com 
地址:深圳市龙华新区和平西路龙军工业区17栋401    ICP备案号:粤ICP备16103267号-1
主营业务: SUN服务器 sun工作站 sun硬盘 sun内存 sun租赁 sun报价 sun维保