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
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)
- YouTube - YouTube Channel for Nigel Griffiths
- AIXpert Blog
Document Location
Worldwide
Was this topic helpful?
Document Information
Modified date:
14 June 2023
UID
ibm11119225