Chinaunix首页 | 论坛 | 博客
  • 博客访问: 128309
  • 博文数量: 161
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -30
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-21 21:45
文章分类
文章存档

2009年(1)

2008年(74)

2007年(48)

2006年(38)

我的朋友

分类: Oracle

2007-06-11 12:33:37

How to use OS commands to diagnose Database Performance issues?
  : Note:224176.1 Type: TROUBLESHOOTING
  Last Revision Date: 25-OCT-2005 Status: PUBLISHED

PURPOSE
-------

 The purpose of this document is to provide a few OS commands for UNIX
 operating systems to gather information about Physical Memory (RAM), 
 swap memory,CPU usage and idle percentage, whether lots of processes
 are in the process run queue and whether too much paging and swapping 
 going on in the server or not so that we can use the information along
 with Statspack report to help diagnose the Database Performance issues.

 Sometimes, the information gathered using these commands will be helpful
 in finding the most OS resource consuming database or non-database 
 processes and will help in identifying the processes to further 
 investigations about why the processes are consuming so much resources and
 whether the corresponding query or application needs to be tuned. 
 
SCOPE & APPLICATION
-------------------

 This document can be used by anyone with moderate expertise to run UNIX
 OS commands in various operating systems like Solaris, HP-UX, AIX, TRU64,
 Linux, etc. The commands will help us collect OS related information
 to verify whether overuse of any of the OS resources can be affecting 
 the database performance or not. This document does not deal with OS 
 Kernel tuning.

How to use OS commands to diagnose Database Performance issues?
----------------------------------------------------------------

 You want to gather data for Physical memory, Swap space, CPU % usage
 and idle, IO usage in the server in general and also to find a few most
 OS resouce consuming processes to get better understanding about 
 how the UNIX server is performing and whether any of these resources
 are causing a bottleck in the database performance or not.

 Since the popular UNIX systems do not support the same commands or even
 same options for a command, we are proving different commands for different
 OS in the following section. Please refer to the corresponding OS man pages
 for detailed information about each UNIX command mentioned in this document.

 Solaris:
 =========

 $ /usr/sbin/prtconf |grep -i "Memory size"
 $ swap -s
 $ df -k
 $ /usr/local/bin/top
 $ vmstat 5 100
 $ sar -u 2 100
 $ iostat -D 2 100
 $ mpstat 5 100

 Out of these commands, top command  may not be installed in your server by default.
 In that case,you can get it for free from  and install it preferably
 under /usr/local/bin directory and then use it. Please take a few snpshots of the 
 top command output and store it in a file.It refreshes the output screen every 5 sec.
 
 Prtconf command will show how much Physical Memory (RAM) the Solaris server has.
 
 Swap command will provide us with the usage of swap space including the RAM.
 
 Df command will indicate how much space is free in each mount point and also
 provides information about swap space(s).

 Top command wil provide the above information plus information about top CPU
 consuming processes, CPU usage in the system, etc.
 
 Vmstat will provide information about process run queue, memory usage,
 paging and swapping and CPU % usage in the server. Different options in vmstat
 can provide more specific information, if required.

 Iostat provides IO usage by Disk, CPU % usage, etc. depending on the options
 used. Sar command with "-u" option also provides CPU usage and idle time
 information.

 Mpstat will provide CPU usage stats for a Solaris server with  1 or more CPUs.
 This command is very useful for multi-processor system to provide details about
 the CPU usage by every CPU in the server.

 For example: 

 $ man vmstat

 Here is some sample output from these commands:

 $ prtconf |grep -i "Memory size"

   Memory size: 4096 Megabytes

 $ swap -s
 total: 7443040k bytes allocated + 997240k reserved = 8440280k used, 2777096k available
 
 $  df -k
 Filesystem            kbytes    used   avail capacity  Mounted on
 /dev/dsk/c0t0d0s0    4034392 2171569 1822480    55%    /
 /proc                      0       0       0     0%    /proc
 fd                         0       0       0     0%    /dev/fd
 mnttab                     0       0       0     0%    /etc/mnttab
 /dev/dsk/c0t0d0s3     493688  231339  212981    53%    /var
 swap                 2798624      24 2798600     1%    /var/run
 swap                 6164848 3366248 2798600    55%    /tmp
 /dev/vx/dsk/dcdg01/vol01
                     25165824 23188748 1970032    93%    /u01
 /dev/vx/dsk/dcdg01/vol02
                     33554432 30988976 2565456    93%    /u02
 ...

 $ top

 last pid: 29570;  load averages:  1.00,  0.99,  0.95 10:19:19
 514 processes: 503 sleeping, 4 zombie, 6 stopped, 1 on cpu
 CPU states: 16.5% idle, 17.9% user,  9.8% kernel, 55.8% iowait,  0.0% swap
 Memory: 4096M real, 46M free, 4632M swap in use, 3563M swap free

   PID USERNAME THR PRI NICE  SIZE   RES STATE   TIME    CPU COMMAND
 29543 usupport   1  35    0 2240K 1480K cpu2    0:00  0.64% top-3.5b8-sun4u
 13638 usupport  11  48    0  346M  291M sleep  14:00  0.28% oracle
 13432 usupport   1  58    0  387M 9352K sleep   3:56  0.17% oracle
 29285 usupport  10  59    0  144M 5088K sleep   0:04  0.15% java
 13422 usupport  11  58    0  391M 3968K sleep   1:10  0.07% oracle
 6532 usupport   1  58    0  105M 4600K sleep   0:33  0.06% oracle
 ...

 $ vmstat 5 100
 procs     memory            page            disk          faults     cpu
 r b w   swap  free  re  mf pi po fr de sr f0 s1 s1 s1   in   sy   cs us sy id
 0 1 72 5746176 222400 0  0  0  0  0  0  0  0 11  9  9 4294967196 0 0 -19 -6 -103
 0 0 58 2750504 55120 346 1391 491 1171 3137 0 36770 0 37 39 5 1485 4150 2061 18 8 74
 0 0 58 2765520 61208 170 272 827 523 1283 0 3904 0 36 40 2 1445 2132 1880 1 3 96
 0 0 58 2751440 58232 450 1576 424 1027 3073 0 12989 0 22 26 3 1458 4372 2035 17 7 76
 0 3 58 2752312 51272 770 1842 1248 1566 4556 0 19121 0 67 66 12 2390 4408 2533 13 11 75
 ...

 $ iostat -c 2 100
     cpu
 us sy wt id
 15  5 13 67
 19 11 52 18
 19  8 44 29
 12 10 48 30
 19  7 40 34
 ...

 $ iostat -D 2 100
     sd15          sd16          sd17          sd18
 rps wps util  rps wps util  rps wps util  rps wps util
   7   4  9.0    6   3  8.6    5   3  8.1    0   0  0.0
   4  22 16.5    8  41 37.9    0   0  0.7    0   0  0.0
  19  34 37.0   20  24 37.0   12   2 10.8    0   0  0.0
  20  20 29.4   24  37 51.3    3   2  5.3    0   0  0.0
  28  20 40.8   24  20 42.3    1   0  1.7    0   0  0.0
 ...

 $  mpstat 2 100
 CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
   0  115   3  255   310  182  403   38   72   82    0   632   16   6  12  66
   1  135   4  687   132  100  569   40  102   68    0   677   14   5  13  68
   2  130   4   34   320  283  552   43   94   63    0    34   15   5  13  67
   3  129   4   64   137  101  582   44  103   66    0    51   15   5  13  67
 ...

 HP-UX 11.0:
 ============

 $ grep Physical /var/adm/syslog/syslog.log
 $ df -k
 $ sar -w 2 100  
 $ sar -u 2 100
 $ /bin/top
 $ vmstat -n 5 100
 $ iostat 2 100
 $ top


 For example:

 $ grep Physical /var/adm/syslog/syslog.log
 Nov 13 17:43:28 rmtdchp5 vmunix:     Physical: 16777216 Kbytes, lockable: 13405388 Kbytes, available: 15381944 Kbytes

 $ sar -w 1 100

 HP-UX rmtdchp5 B.11.00 A 9000/800    12/20/02

 14:47:20 swpin/s bswin/s swpot/s bswot/s pswch/s
 14:47:21    0.00     0.0    0.00     0.0    1724
 14:47:22    0.00     0.0    0.00     0.0    1458
 14:47:23    0.00     0.0    0.00     0.0    1999
 14:47:24    0.00     0.0    0.00     0.0    1846
 ...

 $ sar -u 2 100  # This command generates CPU % usage information.

 HP-UX rmtdchp5 B.11.00 A 9000/800    12/20/02

 14:48:02    %usr    %sys    %wio   %idle
 14:48:04      20       2       1      77
 14:48:06       1       1       0      98
 ...


 $ iostat 2 100

  device    bps     sps    msps  

  c1t2d0     36     7.4     1.0  
  c2t2d0     32     5.6     1.0  
  c1t0d0      0     0.0     1.0  
  c2t0d0      0     0.0     1.0   
  ...

 AIX:
 =======

 $ /usr/sbin/lsattr -E -l sys0 -a realmem
 $ /usr/sbin/lsps -s
 $ vmstat 5 100
 $ iostat 2 100
 $ /usr/local/bin/top  # May not be installed by default in the server

 For example: 

 $ /usr/sbin/lsattr -E -l sys0 -a realmem

 realmem 33554432 Amount of usable physical memory in Kbytes False

 NOTE: This is the total Physical + Swap memory in the system.
       Use top or monitor command to get better breakup of the memory.

 $ /usr/sbin/lsps -s

 Total Paging Space   Percent Used
       30528MB               1%


 Linux [RedHat 7.1 and RedHat AS 2.1]:
 =======================================

 $ dmesg | grep Memory
 $ vmstat 5 100
 $ /usr/bin/top

 For example:

 $ dmesg | grep Memory
 Memory: 1027812k/1048568k available (1500k kernel code, 20372k reserved, 103k d)$ /sbin/swapon -s


 Tru64: 
 ========
 $ vmstat -P| grep -i "Total Physical Memory ="
 $ /sbin/swapon -s
 $ vmstat 5 100


 For example:

 $ vmstat -P| grep -i "Total Physical Memory ="
  
 Total Physical Memory =  8192.00 M

 $ /sbin/swapon -s

 Swap partition /dev/disk/dsk1g (default swap):
    Allocated space:      2072049 pages (15.81GB)
    In-use space:               1 pages (  0%)
    Free space:           2072048 pages ( 99%)
 Total swap allocation:
    Allocated space:      2072049 pages (15.81GB)
    Reserved space:        864624 pages ( 41%)
    In-use space:               1 pages (  0%)
    Available space:      1207425 pages ( 58%)

 Please take at least 10 snapshots of the "top" command to get an idea 
 aboud most OS resource comsuming processes in the server and the different
 snapshot might contain a few different other processes and that will indicate
 that the use of resouces are varying pretty quickly amound many processes.

RELATED DOCUMENTS
-----------------
: Performance Improvement Tips for Oracle on UNIX

 : How to Display the Amount of Physical Memory and Swap Space on UNIX Systems

Man pages on vmstat, iostat, mpstat, sar, df, dmesg, perfstat, lsps, lsattr, swapon, etc.
    from relevant OS manuals.

 @NOTE to reviewer: This note has been created as part of PAA Perf. action ID:   21175.
 @This note will complete this PAA action.

阅读(942) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~