Topic
  • 5 replies
  • Latest Post - ‏2012-03-23T11:53:41Z by SystemAdmin
SystemAdmin
SystemAdmin
2402 Posts

Pinned topic topas_nmon changed in 6.1.6.5

‏2011-10-13T10:39:18Z |
Hi,
I noted that following nmon graphs went empty after upgrade to AIX 6.1.6.5:
CPU vs entitlement, Shared pool utilization, All stats and Weight.

I looked in to nmon data and noted that BBBL,20 and BBBL,21 has changed place in 6.1.6.5
and BBBL,21 appears much later in the 6.1.6.5 datafile; between the data of CPU_ALL and LPAR_T0001.
There is extra data there for BBBL,xx,Flags.

There is also extra POOLS data. Appearance of the POOLS data is surprising
since machines are both power5 and not pool capable.

In LPAR data theres "extra" column in the end of 6.1.6.5
LPAR,T0001,0.324,1,2,16,1.00,0,0.00,2.02,2.02,1,1,15.61,11.91,0.05,4.82,15.61,11.91,0.05,4.82,0,0
Compared to 6.1.6.3:
LPAR,T0001,1.272,2,4,28,2.00,0,0.00,4.54,4.54,1,1,31.09,29.80,0.15,2.55,31.09,29.80,0.15,2.55,0

It looks like 6.1.6.5 has extra column which is not prepared - I mean there ought to be
BBBL,22 somewhere.

Somethings is therefore changed in the topas_nmon's way of recording data
and my nmon2rrd dont like it. Messed up :P

And yes - I have compiled the nmon2rrd to be topas_nmon "compliant" already.

BBBL,01,lparno,20
BBBL,02,lparname,XXlpar20
BBBL,03,CPU in sys,16
BBBL,04,Virtual CPU,1
BBBL,05,Logical CPU,2
BBBL,06,Pool CPU,16
BBBL,07,smt threads,2
BBBL,08,capped,1
BBBL,09,min Virtual,1
BBBL,10,max Virtual,8
BBBL,11,min Logical,1
BBBL,12,max Logical,16
BBBL,13,min Capacity,0.1
BBBL,14,max Capacity,4.0
BBBL,15,Entitled Capacity,1.0
BBBL,16,Weight,0
BBBL,17,min Memory MB,1024
BBBL,18,max Memory MB,8192
BBBL,19,online Memory,8192
-->BBBL,20,pool id,0
-->BBBL,21,Flags,LPARed DRable SMT Shared Capped.

6.1.6.3 (works but have some duplicates 02 and 03)
BBBL,01,lparno,10
BBBL,02,lparname,XYlpar10
BBBL,03,CPU in sys,28
BBBL,02,lparname,XYlpar10
BBBL,03,CPU in sys,28
BBBL,04,Virtual CPU,2
BBBL,05,Logical CPU,4
BBBL,06,Pool CPU,28
BBBL,07,smt threads,2
BBBL,08,capped,1
BBBL,09,min Virtual,1
BBBL,10,max Virtual,16
BBBL,11,min Logical,1
BBBL,12,max Logical,32
BBBL,13,min Capacity,0.1
BBBL,14,max Capacity,8.0
BBBL,15,Entitled Capacity,2.0
BBBL,16,Weight,0
BBBL,17,min Memory MB,1024
BBBL,18,max Memory MB,32768
BBBL,19,online Memory,24576
-->BBBL,20,Flags,
-->BBBL,21,pool id,0
Extra POOL data in 6.1.6.5 on power5 not POOL capable:
POOLS,Multiple CPU Pools XXlpar20,shcpus_in_sys,max_pool_capacity,entitled_pool_capacity,pool_max_time,pool_busy_time,shcpu_tot_time
,shcpu_busy_time,Pool_id,entitled
POOLS,T0001,0,0.00,0.00,0.00,0.00,0.00,0.00,0,1.00

R: Weskus
Updated on 2012-03-23T11:53:41Z at 2012-03-23T11:53:41Z by SystemAdmin
  • SystemAdmin
    SystemAdmin
    2402 Posts

    Re: topas_nmon changed in 6.1.6.5

    ‏2011-12-22T08:31:08Z  
    Hi all
    Due the fact that topas developers have added new fields to the topas_nmon lpar and processes recordings, nmon2rrd leaves them
    empty. You must edit nmon2rrd.c accordingly to get it working. I did it and now it works again for me.

    However I cannot understand why they changed the field order for lpar data, it is a good candidate for nagging ;-)

    Changed/added part of the nmon2rrd.c in italics below:
    char *a_lpar20[] ={ "PhysicalCPU","virtualCPUs","logicalCPUs","poolCPUs","entitled","weight","PoolIdle","usedAllCPU","usedPoolCPU","Shared
    CPU","Capped","EC_User","EC_Sys","EC_Wait_pc","EC_Idle_pc","VP_User_pc","VP_Sys_pc","VP_Wait_pc","VP_Idle_pc","Folded" };
    int a_lpar_size_long2 = sizeof(a_lpar20)/sizeof(char *);

    +/* Added VSA 2011 Capgemini */++
    char *a_lpar21[] ={ "PhysicalCPU","virtualCPUs","logicalCPUs","poolCPUs","entitled","weight","PoolIdle","usedAllCPU","usedPoolCPU","Shared
    CPU","Capped","EC_User","EC_Sys","EC_Wait_pc","EC_Idle_pc","VP_User_pc","VP_Sys_pc","VP_Wait_pc","VP_Idle_pc","Pool_id","Folded" };
    int a_lpar_size_long3 = sizeof(a_lpar21)/sizeof(char *);

    /* NFS */

    AND
    else if(nmon12e)
    rrdcreate(a_lpar20,a_lpar_size_long2,"lpar");
    else if(topas_nmon)
    rrdcreate(a_lpar21,a_lpar_size_long3,"lpar");
    else
    rrdcreate(a_lpar,a_lpar_size,"lpar");

    rrdcreate(a_mem,a_mem_size,"mem");
    if(memuse_long)
    rrdcreate(a_memuse_long,a_memuse_long_size,"memuse");
    else
    rrdcreate(a_memuse,a_memuse_size,"memuse");
    rrdcreate(a_memnew,a_memnew_size ,"memnew");

    if(nmon9) {
    rrdcreate(a_proc9,a_proc_size9,"proc");
    } else if(topas_nmon) {
    rrdcreate(a_proct,a_proct_size,"proc");
    } else {
    rrdcreate(a_proc,a_proc_size,"proc");
    }
    AND

    char *a_proc[] = { "Runnable","Swapin","pswitch","syscall","read","write","fork","exec","sem","msg" };
    int a_proc_size = sizeof(a_proc)/sizeof(char *);

    /* VSA Capgemini 3 extra fields in topas_nmon */
    char *a_proct[] = { "Runnable","Swapin","pswitch","syscall","read","write","fork","exec","sem","msg","bufio","rawio","diocio" };
    int a_proct_size = sizeof(a_proct)/sizeof(char *);

    char *a_file[] = { "iget","namei","dirblk","readch","writech","ttyrawch","ttycanch","ttyoutch" };
    int a_file_size = sizeof(a_file)/sizeof(char *);

    AND these you might have done earlier to rrdgraph topas_nmon data in general:
    int nmon11e=0;
    int nmon11d=0;
    int topas_nmon=0;
    char *infile = NULL;

    PLUS

    if( nmonversion[0] == 'T' &&
    nmonversion[1] == 'O' &&
    nmonversion[2] == 'P' &&
    nmonversion[3] == 'A' &&
    nmonversion[4] == 'S' &&
    nmonversion[5] == '-' &&
    nmonversion[6] == 'N' &&
    nmonversion[7] == 'M' &&
    nmonversion[8] == 'O' &&
    nmonversion[9] == 'N' ) {
    topas_nmon=1;
    memuse_long=1;
    if(debug){
    printf("DEBUG ****** TOPAS-NMON ******\n");
    printf("DEBUG ****** nmon12e == %d ******\n",nmon12e);
    printf("DEBUG ****** memuse_long == %d ******\n",memuse_long);
    }
    }

    Happy compiling
    Weskus
  • SystemAdmin
    SystemAdmin
    2402 Posts

    Re: topas_nmon changed in 6.1.6.5

    ‏2011-12-24T22:02:19Z  
    Hi again,
    I realized one thing. Topas_nmon does not reveal its version, its just topas_nmon, not nmon12e or nmon10. Nmon2rrd figured out how to work with data according to the nmon version used
    to collect data. Now there is no version, just TOPAS_NMON - everytime.

    In order to overcome this and make nmon2rrd work with different kind of topas_nmon versions, I added aix version check to the nmon2rrd - its robust and ugly coding but it worked for me.
    (look, its like 20 years ago when I studied C). I drop the lines of code here in around January...

    AIX6 TL6 SP3 and SP5 are the versions that I have been struggling with. No idea what kind of data AIX V7 topas_nmon recording creates.

    R: Weskus
  • SystemAdmin
    SystemAdmin
    2402 Posts

    Re: topas_nmon changed in 6.1.6.5

    ‏2012-01-02T20:53:51Z  
    Hi again,
    Here are the lines I promised:

    /* TM 10.5 15/02/06 */
    char newaix[]="6.1.6.15";
    if (lpar_found)
    if(nmon11d)
    rrdcreate(a_lpar11d,a_lpar_size11,"lpar");
    else if(nmon11e)
    rrdcreate(a_lpar19,a_lpar_size_long,"lpar");
    else if(nmon12e)
    rrdcreate(a_lpar20,a_lpar_size_long2,"lpar");
    else if(topas_nmon)
    {
    if(strcmp(aix,newaix) == 0 )
    {
    rrdcreate(a_lpar21,a_lpar_size_long3,"lpar");
    }
    else
    rrdcreate(a_lpar20,a_lpar_size_long2,"lpar");
    }
    else
    rrdcreate(a_lpar,a_lpar_size,"lpar");
  • Michael_Develeoper_Profile
    3 Posts

    Re: topas_nmon changed in 6.1.6.5

    ‏2012-03-23T11:20:55Z  
    Hello!

    nmon2web also provides blank pages in memory and paging since AIX Ver. 6.1.6.
  • SystemAdmin
    SystemAdmin
    2402 Posts

    Re: topas_nmon changed in 6.1.6.5

    ‏2012-03-23T11:53:41Z  
    Hello!

    nmon2web also provides blank pages in memory and paging since AIX Ver. 6.1.6.
    I can imagine that, since data structure of the nmon recording changed. Similar changes to the nmon2web is obviously required to make it work again. Unfortunately, I do not have any experience of the nmon2web and stick to the nmon2rrd ;-)