nmon for Linux Compiling
nmon for Linux source code is released under the GPL license.
- There is just a single source code file written in C and a makefile - nice and simple.
|lmon14g.c||188 KB||4th June 2011 - Larger specific fixes for:|
1) TOP process memory page-size fixed for 64 KB memory page systems
- Old Linux versions compiled for 4 KB page-size
- Typically New server Linux versions use 64 KB page-size (run: getconf PAGESIZE to find out)
- Fixed output TOP process sizes on-screen and also the optional Top processes section in the nmon data file
2) Added Page Size to the online memory section
3) Added netstat (fixed typo), uptime and getconf PAGESIZE to nmon data file BBBP section
If you have 4KB pages then version 14f will work fine = no need to upgrade.
|lmon14f.c||188 KB||2nd Jan 2011 - Minor specific fixes for:|
1) TOP process stats saved to file have 2 decimal places (was 1) for more accuracy.
|lmon14e.c||188 KB||14th Dec 2010 - Minor specific fixes for:|
1) if you have more than 100CPUs the CPU10 and CPU100 stats wrong
|lmon14d.c||188 KB||17th Nov 2010 - Minor specific fixes for:|
1) Microscopic bug in NFS stats saved to file (an extra comma but worth fixing)
|lmon14c.c||188 KB||17th Nov 2010 - Minor specific fixes for:|
1) Fixed File System sizes, if you have odd filesystems with 1KB blocks (found on RedHat RHEL 5.5)
without the the sizes are 4 times large than reported with df -m
Any one understand why/how these are created? My Power based machine has 4KB / and 1K /boot !!
2) Fix for machines with more than 99 CPUs (found on Power based machines
Don't forget to add compiler -D KERNEL_2_6_18 option for Linux Kernel this level or high for some extra features.
|lmon14a.c||185 KB||Current source code: Bugs fixes for:|
1) Fixed two fclose() missing after error issues. This may stop a few crashes when you have 100's of short lived processes - resulting is too many open files. Big thanks to the guys that pointed these out.
2) Added NFS v4 stats - online hit N a second time, data collect mode use -N as normal. Only reported if found switched on. NFS v4 has 75 statistics instead of v2=18 and v3=22 so they can be displayed side by side.
3) Added KERNEL_2_6_18 compile time option for later Linux kernels to add features from this release onwards: Threads & IO time for processes in TOP process output - would be nice to add Threads to the online view too.
4) Added EXPERIMENTAL compile time option for stuff to be tested more
5) Disk Group stats include group reads, writes, merges, service times, in-flight and IO time
6) Fixed major bugs in /proc/vmstat data handling
7) For POWER7 added SMT=4 reporting
8) Fix for 256 CPU as found in POWER7 machines, includes 3 digit CPU counts - could cause problems with down stream tools that assume CPU numbers are 2 digit numbers.
9) More command output saved in BBBP section - best to capture and look for a list. Include miltipath command and configuration, ppc64-utils like lscfg and netstat -r
10) Captured more from POWER /proc/ppc64/lparcfg (not output yet)
11) Flags to stop multiple reads of the same file for different reasons in one update.
Lots of this is from Ralf Schmidt-Dannert
|lmon13g.c||159 KB||Older source code: Bugs fixes for:|
1) Tracked down the User Defined Disk Groups bug with David Baril's help
2) Now collects the /proc/diskstats in the BBB section
3) Minor typo's fixed in the help and hints and column widths in the on-screen network stats
|lmon13d.c||159 KB||Bugs fixed from 12f are:|
1) Added POWER Active Memory Sharing stats both Online (see Memory) and to capture file,
2) Changed online colour graphs to use black foreground so that stats meaning is clearer
3) Fixes to user defines disk groups stats (online and capture)
4) Added Online Disk Totals and duplicate warning
5) Added Online disk ignore first update of erroneous data
6) Added file capture data: df, mount and fstab capture to BBB lines
7) Fixed Online disk map (rain diagram) output
8) Online disk changes from KB to MB, if numbers are too large for screen space
9) Bug fixes and code from Brian Smith & David Baril (well done and thanks)
|lmon12f.c||154 KB||Previous source code|
Bugs fixed from 12e are:
1) Fix online mode Curses crash (malloc off by one failure - my fault),
2) Online colour graphs for CPU, CPU long term (hit lowercase L) & disks
- Code and fixes from Brian Smith (well done and thanks)
|lmon12e.c||154 KB||Bugs fixed from 12c are:|
1) Large CPU counts fail due the massive size of /proc/cpuinfo on Intel/AMD
|lmon12d.c||152 KB||Differences from 12b in the download binaries are:|
Copyright & includes small fix for 64 way POWER machines
|makefile||2 KB||Build instructions for the make commend|
|Documentation.txt||1 KB||Small file primarily to help build processes that wants a licence and documentation file|
- The file for compiling is called lmon.c for historic reasons.
- For release reasons the version is added
- The number in the file name is the major release i.e. this is increased when new function is added.
- The letter in the file name is increase as bugs are removed and the new code is released.
The process is as follows:
- Download the source code file
- Download the makefile
- Rename the source code file to lmon.c (mv lmon12d.c lmon.c) or add a link (ln lmon12d.c lmon.c)
- vi the makefile and find the directive that matches your platform and Linux release
- Note: some of the older versions have extra defined compile time options (-D SOMETHING) to switch on code to work around bugs in the operating system or some platforms have extra features so defined options pull in the code to handle it.
- If necessary, create a new line to create a nmon file specific to your new Linux Distro / platform combination.
- Make nmon, for example to compile nmon for x86_64 for Ubuntu
- Yes, it is that easy.
- Testing - normally it is very obvious if there is problems.
- Run some workload
- Use nmon online - and check the numbers for CPU, memory, disks and top processes look about right
- If the numbers are all zeros - suspect you have a problem
- Then use nmon for Linux to to collect data to a file
- Once the file output is complete
- Use vi to check the output file - it is simple text. Does the last like look OK?
- grep the ZZZ lines to check nmon for Linux ran to completion - one of these lines is output for each capture with a time and date.
- Use you nmon for Linux output file analyser to check it understands the output.