Code Monkey home page Code Monkey logo

nmonchart's Introduction

README for nmonchart 22 by Nigel Griffiths
==========================================

The Korn shell script file nmonchart transforms .nmon performance capture files in to .html files for a webserver site.

If your .nmon is called hostname_date_time.nmon  and the website pages are at /webpages/docs then use it like this:

	./nmonchart hostname_date_time.nmon /webpages/docs/hostname_date_time.html

Then nmonchart Korn shell script needs the Korn shell installed.
- it has NOT been tested on Csh or bash.
AIX and Linux have Korn Shell called kshi - if your like does not have it you should install it.

The script works out if it is running on AIX or Linux and makes two changes based on that.
- see the top 10 lines for this.

nmonchart is to complete - it is fairly simple Korn shell, grep, sed and awk.
For data that is in fixed format like physical CPU, run queue and memory stats in the nmon output 
it is simple to pick out the column and graph it.
For data that is not fixed format as it depends on the resources like disk, network, CPUs it is more complex
as it has to workout the number of header line (the resource names) and data lines.
The graphs like TOPSUM and TOPCMD are quite tricky. 

For testing I have supplied a sample nmon file called: sampleC.nmon and a sample output file called: sampleC.html
which was generated using the following command: ./nmonchart sampleC.nmon sampleC.html

Examine the sample.html to find out how the data and graphs are generated.
- It is using Javascript
- The Googlechart library (directly from the web) is used to generate the graphs
- - find more information here https://developers.google.com/chart/
- - it has lots of functions and pretty graphs
- then for each graphs
- - There is the data in an array format and the ZZZ data transformed in to a java dat format
- - Then the chart drawing options and graph instructions
- At the bottom it creates the Javascript buttons and then the config data that is displayed at the bottom of the webpage.

----
Output file size

Also note nmonchart output files are typically much smaller than the original nmon file.
Something like 20% of the size.
This is unlike the nmon Analyser file output which can typically be twice the size.

----
Summary of the graphs

    PHYSICAL_CPU - PhysicalCPU, VirtualCPU and entitlement (AIX only LPAR stats))
    POOLIDLE - If switched on at the LPAR level PoolIdle and Pool CPU count (AIX only
    CPU_UTILisation - User%, System%, Wait% and Idle%
    CPU_USE - Logical CPU Core Use (Power SMT or x86 Hyperthreads) Average(User%+System%)
    RUNQ - Run Queue in number of processes
    PSWITCH - Process Switches as the kernel rns different programs
    SYSCALL - Systems calls of processes requesting Kernel operations - Total and read, write calls
    READWRITE - Read and Write System calls only
    FORKEXEC - Systems call fork (duplicate a process) and exec (overwrite current process with a new program)
    FILEIO - System call - number of bytes on the read + write system call - includes disks, networt sockets and pipes
    REALMEM - Total RAM (MB) and Free RAM (MB) (AIX only)
    VIRTMEM - Virtual memory (paging space) Total (MB) and Free (MB) (AIX only)
    MEM_LINUX - Total RAM, Free RAM (MB), and other Linux memory stats (Linux Only)
    SWAP_LINUX - Swap size (MB) and Swap Free (MB (Linux only)
    FSCACHE - Filesystem Cache (numperm) size in percent with minperm% and maxperm%
    PAGING - Paging space: pages in (pgin) and out (pgout) plus Filesystem paging: in (pgsin) and out (psout)
    SWAPIN - Process swap back in to memory per second
    TOPSUM - If your nmon file includes TOP process (nmon -t or nmon -T) - Bubble diagram of top process by total CPU cycles, total I/O KB and max Memory size
	- horizontal axis = CPU cycles in total
	- vertical axis the I/O generated this could be network, disk, pipes, sockets
	- size of the bubble is the memory size
    TOPCMD - If your nmon file includes TOP process (nmon -t or nmon -T) - top 15 commands nd their CPU use over time. 

    NET - Network throughput read and write for each network in KByes per second
    NETPACKET - Numbers of read and write packets per second for each network
    NETSIZE - The average number of bytes in each packet for each network read and write
    ADAPT_KPS - Throughput in KBytes per second read and write for each disk adapter
    ADAPT_TPS - Transactions per second read and write for each disk adapter
    DISKBUSY - Disk busy percentage for each disk - Stacked lines
    DISKBUSYu - Disk busy percentage for each disk - Unstacked lines
    DISKREAD - Disk read throughput in KBytes per second for each disk - Stacked lines
    DISKREADu - Disk read throughput in KBytes per second for each disk - Unstacked lines
    DISKWRITE - Disk write throughput in KBytes per second for each disk - Stacked lines
    DISKWRITEu - Disk write throughput in KBytes per second for each disk - Unstacked lines
    DISKBSIZE - Disk block sizes
    DISKXTER - Disk Transfers per second
    JFS - Journaled Filesystem Percent Full
    IPC - Interprocess Communication meaning Semaphores and messages queues. 

----
Graphs not supported
    More than 150 Disks - You have the adapter view for overall Disk stats. Data files with crazy numbers of disks in the thousands are just impossible or graph or manage (IMHO). The first 150 plus the adapter totals is a good compromise.
    Disk service times - see above. Perhaps we need a different set of graphs just for the disk junkies!! Personally, we should get the disk subsystems to do the I/O spreading work and hid a disk mess from the UNIX / Linux Sys admin team.

----
Graphs that are not going to happen and why
	Individual Logical CPU Utilisation (up to 1536 with the new E880 with 192 cores)
        Mostly pointless and misleading - they are timesharing the physical CPU cores.
        Better to study the VM LPAR physical CPU use and UTIL graphs. 

----
Adding new graphs
- I am interested in hearing you ideas on new graphs you would like to have.
- They need to add value for most nmon users
- Adding graphs from the nmon file is pretty easy as we have already worked though the issues of most formatting options
- So it is a cut'n'paste rename the graph and make minor formatting changes for the column, don't forget the button line 
at the bottom.

- Yet more disks graphs for stupidly high numbers of disks is not a good idea. We could give an option to fine the top 20 over used disk names!

----
nmonchart created webpages or Graph failures

If you transform the nmon data but the webpage does not work -  what should you do?
1 Feel free to send me the original nmon file to investigate
2 Mostly, the webpage will probably display OK but the buttons will not work
3 Javascript and Google charts are rather fussy in the syntax.
4 Sometimes the first few graphs work but later in the page ones will not do anything - this is a good indicator of where the syntax issue is in the file.
5 If something like the number of disks changes during the collecting of data then you will find the disk buttons and later buttons will not work.  The nmon data collect does NOT handle this by design. This is to reduce nmon CPU time by a large amount.
6  you could go looking at the .html file looking for oddly formatted lines - I have tried to indent the Java script code to make this possible.
7 If you work a fix please email the original and the fixed nmonchart scripts.

----
Testing of nmonchart

Using the internal to IBM website we had more than 200 nmon files to test.
This includes
Current AIX 6 and 7
Back dated AIX 6 and 7 including some with nmon errors of 5 years ago
Old AIX 5 files - mostly to check utilisation before upgrading to POWER8

Current Linux on Power from SUSE, Ubuntu and Red Hat
Current Linux on x86 and x86_64 from SUSE, Ubuntu and Red Hat and also other hardware like ARM.
Other Linux distro' and some older releases too.
I would like more examples from Mainframe and Linux Distro's like Fedora OpenSUSE, Debian etc.
and collected by nmon 15 from within a VM especially overworked machines showing CPU Steal utilisation time.

On strange, rare or older nmon files a lot of work has gone in to support oddly formatted data
- nmonchart is now pretty robust ... unless you know differently

----
Upload and Generate Graphs Website
==================================
This is just a starter for ten - you will be required to do significant work.
You will have to know HTML, scripting and a little PHP.
I am not offering hand holding support to get your working.

I set up a crude upload your nmon file webpage and a cron job to create the .html files and a further script
to generate a webpage to list the resulting .html files listed by hostname and then the date and listing the OS.

- nmon_upload.html - the upload webpage
- nmon_upload.php - the PHP that actually uploads the file
- nmonchart_cron - the cron job that runs nmonchart on new uploads and generated the webpage of hosts and graphs.

This is provided "as is" but comes with loads of assumptions in the code:
	My apache website /webpages/docs
	the resulting .html are placed here /webpages/docs/nmonchart
	the cron generate index.html of graphs here /webpages/docs/nmonchart/index.html
	the uploads end up here /webpages/docs/nmon_upload
	the final place for the .nmon files /home/nag/nmoncharttmp
I may try to clean these up and make them generic.

I would actually like some help doing a much better job and the above has a 8 MB limit and is slow and
I would like a multiple file upload system.  
The 60 second cron job is also crude.
The index.html needs to automatically refresh once a minute or so.

I actually have a budget to run a WWW upload website to help those not interested in setting up their own.
- expect more information as soon as I can set this up.

Cheers Nigel Griffiths 
[email protected]
Twitter @mr_nmon

nmonchart's People

Contributors

aguther avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.