博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Solaris 性能基础
阅读量:5278 次
发布时间:2019-06-14

本文共 5377 字,大约阅读时间需要 17 分钟。

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

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

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

     

bash-3.00# prtdiagSystem Configuration:  Sun Microsystems  sun4u Sun Fire V100 (UltraSPARC-IIe 500MHz)System clock frequency: 100 MHzMemory size: 768 Megabytes========================= CPUs =========================                    Run   Ecache   CPU    CPUBrd  CPU   Module   MHz     MB    Impl.   Mask---  ---  -------  -----  ------  ------  ---- 0     0     0      500     0.2   13       1.4========================= IO Cards =========================     Bus#  FreqBrd  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 -vStatus 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 -p1bash-3.00# psrinfo -vpThe 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.48You have new mail in /var/mail/root

 

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

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

以下是示例

bash-3.00# sar 1 5SunOS xxxx 5.10 Generic_118833-33 sun4u    08/01/201214:47:08    %usr    %sys    %wio   %idle14:47:09      88      12       0       014:47:10      94       6       0       014:47:11      76       7       0      1714:47:12      92       6       0       214:47:13      93       7       0       0Average       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呢,如何找出正在大量占用磁盘的进程呢?这里有三个个很实用的脚本(

和,psio() 。 其中iotop和iosnoop只能在s10及以后版本使用,因为使用dtrace了。

 

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

以下是增加權限过程:

 

 

As user1,
$ id
uid=
1001(user1) gid=
1(other)
$ ppriv $$
214885: -sh
flags = <none>
        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 = <none>
        E: basic,dtrace_proc,dtrace_user
        I: basic,dtrace_proc,dtrace_user
        P: basic,dtrace_proc,dtrace_user
        L: all

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      

转载于:https://www.cnblogs.com/doita/archive/2012/08/03/2617234.html

你可能感兴趣的文章
Linux中防火墙centos
查看>>
centos下同时启动多个tomcat
查看>>
Leetcode Balanced Binary Tree
查看>>
[JS]递归对象或数组
查看>>
linux sed命令
查看>>
程序存储问题
查看>>
优雅地书写回调——Promise
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
css & input type & search icon
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
0320-学习进度条
查看>>
MetaWeblog API Test
查看>>
移动、尺寸改变
查看>>
c# 文件笔记
查看>>
类和结构
查看>>