IBM Support

Roll Your Own AIX Performance Monitor via Code Samples

How To


Summary

AIX offers lots of performance stats from the libperfstat library. Here is a collection of C tools that show programmers how to extract the statistics to develop further and some are actually useful in their own right.

Objective

Nigels Banner

Steps

Roll You Own AIX Performance Monitoring code samples

  • WARNING: This web page is really for C programmers but if you are not a programmer you can just run the programs and watch the output.
  • From Nigel Griffiths, Advanced Technical Support, EMEA, IBM.
  • Updated the binary file download for AIX 7.2 Feb 2017.  
  • Note the libperfstat.h and its library has more stats available in recent AIX releases, so there may be more interesting data in them than shown in these examples.
     

Writing your own AIX Performance Monitoring commands or tools is really easy to do on AIX but it can be hard work to get started. The below sample source code and precompiled tools should make this much easier. Most of the important performance data can be extracted from the AIX libperfstat API library. This is documented in the /usr/include/libperfstat.h header file and in the AIX documentation. But these two places don't explain all the details and a worked example is worth a 10,000 lines of documentation!! There other places for some more information like the lpar_get_info() function is documented in the /usr/include/sys/dr.h header file and there is lots of process stats in the getentry64() system call which is defined in the /usr/include/procinfo.h header file.

General Hints on the programs:

  • They are compiled only for AIX 5.3 ML03
  • Due to their being multiple versions of libperfstat they might not run on older AIX versions or even old Maintenance Levels!
  • They all output data once a second to the screen
  • To stop all the below programs use: Control+C
  • To compile most use: cc -g -l perfstat progname.c -o progname
  • To compile perf use: cc -g -l perfstat perf.c -o perf -lcurses
  • The program cpus can take two parameters. the first is the seconds between output and the second the number of times to output

Downloads

  • Slight update and recompile for AIX 6.1 TL5 sp5

  • All the source files in a single TAR file - Roll-Your-Own-Sourcecode = ryo_source.tar 71KB
    • adapt.c  disks_simple.c  disks_service.c   diskpath.c  disktot.c  memory.c  memory_vminfo.c  net.c  nettot.c   nfs.c  cpu.c cpus.c  lpar.c  perf.c getprocs64.c  worms.c  filesystems.c  donate.c  evp.c and a Makefile
  • All the binary files in a single TAR file - Roll-Your-Own-Binaries AIX 6.1  = ryo_bins.tar 210 KB from Nov 2011 compiled on AIX 6.1
  • All the binary files in a single TAR file - Roll-Your-Own-Binaries AIX 7.2 = ryo_bins_AIX72.tar 250 KB from Feb 2017 compiled on AIX 7.2
  • Also available on GitHub: https://github.com/nigelargriffiths/AIX-Performance-Tools-Roll-Your-Own


Adapters

This program outputs the adapters stats (actually the added up disk stats as tapes are not included). This explains why the busy percentage can go over 100%. It shows the actual counters and the fact you have to take the differences between data snapshots to workout what happened in the last interval. Example output:

# ./adapt
Statistics for adapter    : vscsi0 which is adapter number=2
description               : Virtual SCSI Client Adapter
number of devices         : 3
Size  and Free (MB)       : 98048   13568
Capability KB/sec         : 0\\
transfers                 : 7229957              delta=0
number of blocks read     : 159009829            delta=0
number of blocks written  : 447068966            delta=0
time                      : 2579290              delta=0

Disks Simple

This program outputs the disk stats for all disks. It will work with early version of libperfstat on AIX 5.1 onwards. It outputs the disk names, descriptions, volume group, block size. Then once a second the disk names, disk size and disk free in MB, transfers, read and write blocks, time busy percent and Qdepth. Example output:

$ ./disks 
found 7 disks
    hdisk5 "Virtual SCSI Disk Drive" VG="datavg" Blocksize=512 Rating=222661KB/sec
    hdisk3 "Virtual SCSI Disk Drive" VG="datavg" Blocksize=512 Rating=215105KB/sec
    hdisk2 "Virtual SCSI Disk Drive" VG="datavg" Blocksize=512 Rating=233650KB/sec
    hdisk4 "Virtual SCSI Disk Drive" VG="datavg" Blocksize=512 Rating=218484KB/sec
    hdisk0 "Virtual SCSI Disk Drive" VG="rootvg" Blocksize=512 Rating=448397KB/sec
    hdisk1 "Virtual SCSI Disk Drive" VG="rootvg" Blocksize=512 Rating=146854KB/sec
    usbms0 "USB Mass Storage" VG="None" Blocksize=512 Rating=0KB/sec

Disk Name         Size    Free    Transfers   Reads  Writes    Time  Qdepth
Disk Name         MB      MB                  Blocks Blocks    percent
          hdisk5   32672    6784          0       0       0       0       0
          hdisk3   32672    6784          0       0       0       0       0
          hdisk2   32672    6784          0       0       0       0       0
          hdisk4   32672    6784          0       0       0       0       0
          hdisk0   32704       0          1       0       8       1       0
          hdisk1   32704    5120          1       0       8       1       0
          usbms0       0       0          0       0       0       0       0

Disk Service

This program outputs the disk stats for all disks. It includes the new in AIX 5.3 service times details that should allow queueing theory analyses. The output is modelled on the iostat -D output from higher Maintenance Levels of AIX 5.3 - I compiled it on ML04. Example output: 

 $disk_server
disks_service
Number of CPUs = 8
Found 7 disks
Description
    hdisk5 "Virtual SCSI Disk Drive"
    hdisk3 "Virtual SCSI Disk Drive"
    hdisk2 "Virtual SCSI Disk Drive"
    hdisk4 "Virtual SCSI Disk Drive"
    hdisk0 "Virtual SCSI Disk Drive"
    hdisk1 "Virtual SCSI Disk Drive"
    usbms0 "USB Mass Storage"
Details
    hdisk5 VG="          datavg" Blocksize=512 Rating= 222661KB/sec hdisk3 VG="          datavg" Blocksize=512 Rating=  215105KB/sec
    hdisk2 VG="          datavg" Blocksize=512 Rating=  233650KB/sec
    hdisk4 VG="          datavg" Blocksize=512 Rating=  218484KB/sec
    hdisk0 VG="          rootvg" Blocksize=512 Rating=  448402KB/sec
    hdisk1 VG="          rootvg" Blocksize=512 Rating=  146854KB/sec
    usbms0 VG="            None" Blocksize=512 Rating=       0KB/sec

- - - - - - - - - - - - - - - - - -
hdisk5           SizeMB FreeMB   xfers   ReadMB WriteMB   Time% Qdepth
                 32672   6784      0.0      0.0     0.0     0.0     0
                Read minrserv avgrserv maxrserv rtimeout rfailed
                          0.1      0.0    328.0       0       0
               Write minwserv avgwserv maxwserv wtimeout wfailed
                          0.7      0.0   3906.1       0       0
               Queue mintime* avgtime* maxtime* avgWQsz avgSQsz SQfull wq_depth
              *=msec      0.0      0.0    296.7     0.0     0.0   0     0
hdisk3           SizeMB FreeMB   xfers   ReadMB WriteMB   Time% Qdepth
                 32672   6784      0.0      0.0     0.0     0.0     0
                Read minrserv avgrserv maxrserv rtimeout rfailed
                          0.1      0.0    296.1       0       0
               Write minwserv avgwserv maxwserv wtimeout wfailed
                          0.3      0.0    267.8       0       0
               Queue mintime* avgtime* maxtime* avgWQsz avgSQsz SQfull wq_depth
              *=msec      0.0      0.0    158.5     0.0     0.0   0     0

Disk Paths

This program outputs the disk path stats for each disk in turn. This should allow the study of multipath I/O and vpaths but currently only documents the LAST PATH. Example output:

$ disk_path
Found 6 disk paths

Statistics for disk path : hdisk5_Path0
----------------------
xrate9 : 51976513 KB/sec
xfers9 : 51976513 transfers
blocks read3 : 51976513 512 byte blocks
blocks written: 1805128 512 byte blocks
time (active) : 1805128
adapter name2 : vscsi0

Statistics for disk path : hdisk3_Path0
----------------------
xrate9 : 48550304 KB/sec
xfers9 : 48550304 transfers
blocks read3 : 48550304 512 byte blocks
blocks written: 1735168 512 byte blocks
time (active) : 1735168
adapter name2 : vscsi1

Disk Totals

This program outputs the disk stats for all disks as a total. Example output:

$ disktot
Statistics for disk total
Disks   :        7
Size MB :   196096
Free MB :    32256
xfers   :        2
Read    :        0 KB
Write   :        8 KB
Busy%   :        2 total for all disks (possible 100% for each disk)

Memory

This program outputs the memory stats (real and virtual) from libperfstat and the perfstat_memory_total() function. Example output:

$ memory 
Statistics for Memory
          virt_total=2244608
          real_total=2097152
           real_free=7470
         real_pinned=381244
          real_inuse=2089682
               pgbad=2097152
              pgexct=945045779
               pgins=38753159
              pgouts=55819322
             pgspins=0
            pgspouts=0
               scans=100134529
              cycles=0
            pgsteals=61989073
             numperm=1422906
          pgsp_total=147456
           pgsp_free=142711
           pgsp_rsvd=576
         real_system=383653
           real_user=1635869
        real_process=283123
         virt_active=649157

Memory Virtual Memory Information

This program outputs the memory stats from the vminfo structure and the vmgetinfo() function. Example output:

$ memory_vminfo
             minperm=60376
             maxperm=1811289
             minfree=960
             maxfree=1088
          minpgahead=2
          maxpgahead=8

Network

This program outputs the Network stats for each network. This one just shows the counters . This will demonstrate the counters - although the libperfstat I/F claims 64 but the numbers will over flow at unsigned 32 bit. With a 10 Gbit Network card going full speed this takes on 4 seconds!! Example output:

$ net

Statistics for networks : en0
----------------------
mtu             : 1500
description     : Standard Ethernet Network Interface
ipackets        : 0
opackets        : 831136478
ibytes          : 0
obytes          : 3323815398
ierrors         : 0
oerrors         : 0
collisions      : 0
bitrate   bit/sec: 2147483647
bitrate mbits/sec: 2047

Statistics for networks : lo0
----------------------
mtu             : 16896
description     : Loopback Network Interface
ipackets        : 0
opackets        : 48908542
ibytes          : 0
obytes          : 1838142747
ierrors         : 0
oerrors         : 0
collisions      : 0
bitrate   bit/sec: 0
bitrate mbits/sec: 0

Network Totals

This program outputs the Network stats overall for the machine. Example output:

$ nettot

Total Statistics for 2 networks
Recv KB/s:       75 KB
Sent KB/s:      845 KB

Total Statistics for 2 networks
Recv KB/s:       58 KB
Sent KB/s:      773 KB

NFS - Network File System

This program outputs the NFS stats. This Interface is complex due to all the protocols but this worked example can help you out by showing how to get the basic information out. Example output:

$ nfs
sizeof perfstat_protocol_t =  432
protocol=0 name=ip
        IP: input packets            =       938325980
        IP: input errors             =       938325980
        IP: input queue over flows   =               0
        IP: output packets           =       879568544
        IP: output errors            =           15378
protocol=1 name=ipv6
        IPv6: input packets          =          166449
        IPv6: input errors           =          166449
        IPv6: input queue over flows =               0
        IPv6: output packets         =          166449
        IPv6: output errors          =           16109
protocol=2 name=icmp
        IMCP: packets received       =          258621
        IMCP: packets sent           =           48467
        IMCP: errors                 =           18931
protocol=3 name=icmpv6
        IMCPv6: packets received     =               0
        IMCPv6: packets sent         =               0
        IMCPv6: errors               =           83384
protocol=4 name=udp
        IPv6: input packets          =       891886394
        IPv6: input errors           =       891886394
        IPv6: output packets         =       852128566
        IPv6: output packets dropped =          102315 (no socket)
protocol=5 name=tcp
        TCP: input packets           =        21517694
        TCP: input errors            =        21517694
        TCP: output packets          =        27384387
        TCP: connections initiated   =          253476
        TCP: connections accepted    =         2551947
        TCP: connections established =         2805277
        TCP: connections dropped     =          151367
protocol=6 name=rpc
        RPC: client calls            =               0
        RPC: server calls            =              23
protocol=7 name=nfs
        NFS: client calls            =               0
        NFS: server calls            =               0
protocol=8 name=nfsv2
        NFSv2: client calls          =               0
        NFSv2: server calls          =               0
protocol=9 name=nfsv3
        NFSv3: client calls          =               0
        NFSv3: server calls          =               0

CPU

This program outputs the CPU stats and details for each online CPU including system calls, read, write, fork, exec and character I/O. 
It can help you check that the workload it evenly spread across CPUs and is multi-threaded. Example output:
$ ./cpu
    Logical          Physical         Stats
    usr:sys:idl:wait usr:sys:idl:wait syscall: read:write: fork: exec: charIO
  0  0:  0:  0:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  1  0:  0:  0:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  2 51:  2: 47:  0    0:  0:  0:  0     2517:  141:   71:    0:    0:   1136
  3  0:  0:100:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  4  0:  0:  0:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  5  0:  0:  0:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  6  0:  0:100:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  7  0:  0:100:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
    Logical          Physical         Stats
    usr:sys:idl:wait usr:sys:idl:wait syscall: read:write: fork: exec: charIO
  0  0:  0:  0:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  1  0:  0:  0:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  2 50:  2: 48:  0   49:  1:  0:  0     3044:  210:  137:    0:    0:   4154
  3  0:  0:100:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  4  0:  1:215:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  5  0:  1:215:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  6  0:  0:100:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0
  7  0:  0:100:  0    0:  0:  0:  0        0:    0:    0:    0:    0:      0

CPU Totals

This program outputs details about your hardware and the CPU stats for the machine and is a "faked up" vmstat with physical CPU stats too. You need to run this on a shared processor LPAR to see the fully details of the difference between physical, virtual processors. Example output:

$ ./cpus
Processors active: 6 configured: 6 type: PowerPC_POWER6 running at 4704 MHz
 L o g i c a l                       P h y s i c a l            Physical
User    Sys   Idle   Wait |RunQueue |User    Sys   Idle   Wait  [CPU Time] Ticks
  6.0    1.7   92.3    0.0 |       1| 96.7    2.7    0.6    0.0 [    0.52] 265340264.
 12.8    0.2   87.0    0.0 |       1| 96.4    2.9    0.7    0.0 [    0.52] 265224480.
  6.0    0.5   93.5    0.0 |       1| 96.8    2.6    0.6    0.0 [    0.51] 263220240.
 11.8    1.3   86.9    0.0 |       1| 96.1    3.1    0.7    0.0 [    0.52] 267557240.
  7.5    0.3   92.3    0.0 |       1| 96.5    2.9    0.6    0.0 [    0.51] 263789128.

LPAR - Logical Partition IBM speak for a Virtual Machine

This program outputs the logical partition stats. This is all you can find out about your logical partition (LPAR) in full gory detail from the lpar_get_info() system call. The names are inconsistent, the units are often weird (and not documented), some fields are unexplained and some are truly massive numbers like tot_dispatch_time. Example output:

$ ./lpar

lpar_load returned=0 loadavg=18327040 utilavg=616287
lpar_get_info ret=0 version=2
maxmem   =16384 minmem =1024
memregion=128
dispatch_wheel_time=10000000
lparNo   =   3
lparflags=0x2aff
max_pcpu =  16
minvcpu  =   1 maxvcpu =   4
minlcpu  =   1 maxlcpu =   8
mincap   =  10 maxcap  = 400
capincrements=1
smthreads=2
lparname=blue sanity=1234
lpar_get_info ret=0 version=1
online_mem=8192
tot_dispatch_time=210405715881875
pool_idle_time   =13206503588255380
dispatch_latency =10000000
lpar_flags       =0x  16
pcpu_in_sys      =   4
online_vcpus     =   3
online_lcpus     =   6
pcpus_in_pool    =   4
unalloc_capacity =   0
entitled_capacity= 150
variable_weight  = 128
unalloc_weight   =0
min_req_vcpu_capacity=10
group_id =32771
pool_id  =0 sanity=1234

Perf - a bit like a cut down nmon

This program is a prototype nmon and shows the use of curses and outputs CPU information. Example output:

┌──────────────────────────────────────────────────────────────────────────────┐
│┌────────────────────────────────────────────────────────────────────────────┐│
││nmon prototype                                                              ││
│└────────────────────────────────────────────────────────────────────────────┘│
│┌─Specifcation───────────────────────────────────────────────────────────────┐│
││Processors: PowerPC_POWER6 running at 4704 MHz                              ││
││CPUs current 6  max-since-boot=6 absolute-max=8                             ││
│└────────────────────────────────────────────────────────────────────────────┘│
│┌─CPU-Totals─────────────────────────────────────────────────────────────────┐│
││    User  Sys Idle Wait  0-----------25-----------50----------75---------100││
││    8.4   2.3   0.0  89.3|UUUUs-------------------------------------------- ││
│└────────────────────────────────────────────────────────────────────────────┘│
│┌─CPUs-Individually──────────────────────────────────────────────────────────┐│
││    User  Sys Idle Wait  0-----------25-----------50----------75---------100││
││0   0.0   0.0   0.0   0.0|                                                  ││
││1   0.0   0.0   0.0   0.0|                                                  ││
││2  51.0   3.0   0.0  46.0|UUUUUUUUUUUUUUUUUUUUUUUUUs------------------------││
││3   1.0  10.0   0.0  93.0|sssss----------------------------------------------│
│└4   0.0   1.0   0.0 214.0|---------------------------------------------------│

Processes from getprocs64

This program shows how to start writing the "ps" command. It gets the procentry64 structure for each process and outputs PID, Parent PID, CPU time, Resident Text and Data sizes, threads, maximum open files, WLM class-name and command name. Unfortunately, to get the CPU time per process you need to capture the processes stats twice and take the difference on the CPU counters (pi_ru.ru_utime and ru_stime). This is made difficult as some processes may have started or finished so you have to match the two procentry64 structure arrays by PID and then may be reorder them too so you list this in CPU use order! Also note that on some machines the processes are NOT returned in PID order. Updated Nov 2011. Example output:

# ./getprocs64

PID,CPU-Time,Memory,Threads,Status,Start,UID,Command,CMD-Arguments
0,845,384,1,7,1316786812,0,Swapper,
1,4,724,1,7,1316786822,0,init,/etc/init
131076,8898,448,1,7,1316786812,0,wait,
196614,0,448,1,7,1316786812,0,sched,
262152,245,512,2,7,1316786812,0,lrud,
327690,0,448,1,7,1316786812,0,vmptacrt,
393228,6,512,2,7,1316786812,0,psmd,
458766,0,896,6,7,1316786812,0,vmmd,
524304,0,448,1,7,1316786812,0,memgrdd,
589842,0,448,1,7,1316786812,0,lsareapr,
655388,30,3712,35,7,1316786819,0,j2pg,
720918,0,448,1,7,1316786812,0,devstatd,
786456,5,640,3,7,1316786812,0,pilegc,
851994,172,448,1,7,1316786812,0,xmgc,
917532,2781,448,1,7,1316786812,0,wait,
983070,116,448,1,7,1316786812,0,wait,
1048608,88,448,1,7,1316786812,0,wait,
1114146,22,448,1,7,1316786812,0,wait,
1179684,21,448,1,7,1316786812,0,wait,
1245222,1053,448,1,7,1316786812,0,wait,
1310760,3181,448,1,7,1316786812,0,wait,
1376298,15,448,1,7,1316786812,0,netm,
1441836,564,960,5,7,1316786812,0,gil = TCP/IP,
1507374,0,512,2,7,1316786812,0,wlmsched,
1572912,0,448,1,7,1316786812,0,armtrace_kproc,
1704108,0,428,1,7,1316786827,0,shlap64,/usr/ccs/bin/shlap64
1769612,0,1092,1,7,1316786923,0,errdemon,/usr/lib/errdemon
1835096,1,512,8,7,1316786827,0,ldmp_process,
1966190,1883,596,17,7,1316786923,0,syncd,/usr/sbin/syncd 60
2031684,0,448,1,7,1316786817,0,lvmbb,
2097256,0,448,1,7,1316786821,0,memp_rbd,
2162916,0,956,1,7,1316786935,0,srcmstr,/usr/sbin/srcmstr
2228264,0,224,1,7,1316786946,0,nfsd,/usr/sbin/nfsd 3891
2359374,0,1472,9,7,1316786850,0,dog,
2424984,0,180,1,7,1316786941,0,biod,/usr/sbin/biod 6
2490450,0,448,1,7,1316786829,0,usbCfgDev,
2555994,0,448,1,7,1316786921,0,aioLpool,
2621562,0,448,1,7,1316786921,0,aioPpool,
2687144,28,1088,1,7,1316786940,0,portmap,/usr/sbin/portmap
2752664,0,300,1,7,1316786937,0,CIM_diagd,/opt/freeware/cimom/pegasus/bin/CIM_diagd
2818250,871,110916,89,7,1316786961,0,java,/var/opt/tivoli/ep/_jvm/jre/bin/java -Xmx384m 
2949246,1,6116,1,7,1316786941,0,snmpmibd,/usr/sbin/snmpmibd
3014798,0,448,1,7,1316786927,0,pofCmdProc,
3080328,1,5616,1,7,1316786941,0,hostmibd,/usr/sbin/hostmibd
3211418,2,5232,1,7,1316786936,0,tier1slp,/opt/ibm/director/cimom/bin/tier1slp
3408038,836,1856,21,7,1316786946,0,nfsd,
3473522,5,448,1,7,1316786926,0,rgsr,
3539076,0,448,1,7,1316786926,0,rtcmd,
3604596,9,704,6,7,1316786926,0,nfssync_kproc,
3670128,3,448,1,7,1316786926,0,n4bg,
3735666,0,512,2,7,1316786926,0,kbiod,
3801204,0,512,2,7,1316786926,0,nfsSM,
3866742,2,448,1,7,1316786926,0,rdpgc,
3932190,0,320,1,7,1316786936,0,cimssys,/opt/freeware/cimom/pegasus/bin/cimssys platform_agent

Worms

This program is very different. It is an implementation of the classic UNIX kernel testing program from 20 years ago. It outputs wiggly worms via curses on the screen. This was a good test of interrupt handling, terminal output and the Kernel. So what is the point? Now the program is used to demonstrate Dynamic LPAR changes i.e Entitlement changes of Capped LPAR and/or Uncapping the LPAR. As it is single threaded it can't spread across more then one CPU so VP changes do not effect it. Note: this version had to be slowed down by a factor of 1 million to work on POWER5 - the CPUs are a lot faster these days. It takes a single argument, the number of worms (maximum is 50). Use control-C to end the program. The number at the top left is the number of loops per second is is managing to do. worms_aix is for AIX 5L and worms_lop is for Linux on POWER (compiled under SUSE SLES9). To slow the worms down, set the environment variable to numbers much higher than 1024, like: export SPIN=10000; ./worms 10 Example output:

┌──────────────────────────────────────────────────────────────────────────────┐
│37           A                       H                                        │
│            A A                      H                                        │
│           A A                   HHHHH                 GG           E         │
│          A A                    H                    G G          EE         │
│         A A                      H C   CC              G         EEEEE       │
│          A                     DD HCCCCCCC             G         E           │
│                                 D                      G                     │
│                               DDDDDD                                         │
│   IIIII     F                                                                │
│  I    I    FFF                                                               │
│       I     F FF                                                             │
│       II                                                                     │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                          @      BBBBBBB                      │
│                                         @           B B                      │
│                                        @@                                    │
│                                       @ @                                    │
│                                         @                                    │
│                                         @                                    │
│                                         @                                    │
└──────────────────────────────────────────────────────────────────────────────┘


File Systems

This is a simple df command clone and lists the filesystems - it does not use libperfstat just regular system calls. Example output:

$ ./filesystems
Filesystem         Size MB     Free MB  %Used %Inodes MountPoint
/dev/hd1           8192.00     2313.06  71.8%   3.4% /home
/dev/hd2           3072.00      503.68  83.6%  30.7% /usr
/dev/hd9var        1024.00      423.61  58.6%  14.8% /var
/dev/hd3           1024.00      976.88   4.6%   0.1% /tmp
/proc                 0.00        0.00 100.0% 100.0% /proc
/dev/hd10opt       2048.00     1561.19  23.8%   3.9% /opt
/dev/livedump       256.00      255.36   0.2%   0.0% /var/adm/ras/livedump
/cdrom not mounted
/dev/fslv00        8192.00     4966.45  39.4%   0.0% /scratch
/dev/weblogslv     2048.00     1667.30  18.6%   0.0% /weblogs
/dev/webpageslv    49728.00    14387.46  71.1%   0.4% /webpages
/dev/fslv01       16384.00        0.00 100.0%  34.4% /backup

Dedicated Donating LPAR

This program outputs the Dedicated CPU LPAR with Donating activated statistics. This needs to be compiled on a system the its libperfstat includes the donating stats in perfstat_partition_t data structure. It outputs the logical and physical percentages, physical CPU Used and then the donating stats so you get the whole picture. I compiled it on ML04 but with the libperfstat.h header file from AIX6. August 2007. Example output (on a LPAR without Donating)

$ /home/nag/libperfstat/donate
This is not a Dedicated CPU LPAR with Donating Enabled
Stopping

CPU Totals

This program outputs Entitlement, VP and physical CPU used (Consumed) - an input parameter is the seconds between output lines (default 1 second. Compiled on AIX 6.1 TL6 sp5. Example output looks like:

./evp 30
E=1.50 VP=3 PhysicalCPUused=0.507
E=1.50 VP=3 PhysicalCPUused=0.506
E=1.50 VP=3 PhysicalCPUused=0.509
E=1.50 VP=3 PhysicalCPUused=0.518

- - - End of Page - - -

Additional Information


Other places to find content from Nigel Griffiths IBM (retired)

Document Location

Worldwide

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG10","label":"AIX"},"Component":"","Platform":[{"code":"PF002","label":"AIX"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}}]

Document Information

Modified date:
14 June 2023

UID

ibm11119225