Recent Changes - Search:

Home Page

Other tools

edit SideBar


nmon of Linux Documentation - Updated 21st Nov 2016

Ha ha ha ha - you are joking right :-)

This page contains the following sections:

  1. Hardware and Linux Supported
  2. Getting Started via YouTube Videos - Including nmon for Linux and nmon for AIX
  3. Getting Started - If you prefer to read the absolute minimum
  4. nmon Command help - nmon for Linux -? and -h command output for the full syntax
  5. nmon Support
  6. Other sources

Hardware and Linux Supported

  • Platforms = hardware
    • POWER
    • x86_64 = AMD64 - 63 bit
    • Mainframe
    • x86 = 32 bit dropping off rapidly
    • ARM Raspberry Pi 2+3
    • Others . . . include embedded processors running Linux
  • Linux Distro’s
    • Ubuntu
    • Debian
    • OpenSUSE
    • Red Hat RHEL
    • Fedora
    • Centos
    • Many others . . .

YouTube Videos about nmon for Linux

Many People prefer to watch a YouTube Video to learn - here are the six videos on nmon for both Linux and AIX operating systems. These are all the details you need to know to use nmon well. Note: nmonchart creates a .html file of all the graphs - it is one of many nmon graphing tools.

nmon for Linux

  1. nmon for Linux Starter Pack 20 minutes
  2. nmon for Linux Data Capture 15 minutes
  3. nmonchart to graph your nmon data files 22 minutes

Many nmon users use both Linux and AIX so here are the AIX equivalent videos and many nmon for Linux user use the nmon Analyser (Microsoft Excel spreadsheet)

nmon for AIX

  1. nmon Starter Pack Monitoring Online 14 minutes
  2. nmon Starter Pack for AIX Data Capture 15 minutes
  3. nmon Starter Pack for AIX Analyser 10 minutes

nmon for Linux Getting Started - If you prefer to read the absolute minimum

Below assumes that you are logged on your system, that you have renamed your nmon binary file to just "nmon", that the nmon file has execute permission (chmod ugo+x nmon) and it is in your PATH.

Using nmon for Linux Online

  • Just start nmon for Linux with: nmon
  • To stop it, just type: q
  • To get on screen hints type: h
    • and h again to remove the hints
  • Most of the rest are toggled commands i.e. type c to see the CPU stats and type c again to remove CPU stats.
  • The various stats come out in a set order (you can't control this) starting with CPU then memory and finally top processes at the bottom as there can be many processes this tends to fill up the rest of the window
  • Note if you make the window larger you can see more lines of output - this works in X Windows, VMC and Putty.
  • For memory stats type m
  • For disk graphs type d and you will see a 50 column graph of the read and write busy percentages
  • For disk numbers type D and if you type D again you see different information eventually typing D will close this section
  • For top processes there are different modes for the order of displaying the processes and different information, See the top line of the Top Processes section for further details.

Using nmon for Linux in data capture mode

  • Start by capturing a small sample file. Type: nmon -f -s2 -c 30
    • The -f means you want the data saved to a file and not displayed on the screen.
    • The -s 2 means you want to capture data every 2 seconds
    • The -c 30 means you want thirty data points or snap shots
    • This means that after a few seconds collecting the configuration nmon for Linux will run for 2 x 30 = 60 seconds and stop. At the end some further configuration data is collected.
  • As nmon for Linux start up briefly check you system and options and then disconnect from you terminal sessions.
  • It then runs like a daemon process in the background. The point is that if you log out or get disconnected then nmon will complete the data file capture - this is a good thing.
  • If you want to be sure nmon is still running you can't use a simple "ps" because it is not associated with your log on session. Use "ps -ef | grep nmon" instead.
  • It is a common mistake to try to start using nmon for Linux output file before nmon has finished - this results in a either incomplete data which messes up a later tool or if you asked to a longer time between snap shots then there may be no data actually in the file, which confuses all tools trying to analyse the file.
  • Once nmon for Linux has finished and to build confidence try:
    1. Use: grep ZZZZ yourfile.nmon
      • This should output the one line for each snapshot and date and time it happened.
    2. Edit the nmon file with vi. You will notice it is a simple text file The start of each line defines the content of the line and then the values are separated with commas. This means the file can be imported in to a spread sheet. If you want to manually import the file, make sure you sort the file first (with the um er "sort" command). This sort means all the lines of a particular type are together. A sort is not required by most of the nmon for Linux analysing tools as they perform the function themselves.

Hint for nmon version 16d

 # ./nmon -h

Hint for nmon version 16d

        Full Help Info : nmon -h

        On-screen Stats: nmon
        Data Collection: nmon -f [-s <seconds>] [-c <count>] [-t|-T]
        Capacity Plan  : nmon -x


        Read the Welcome screen & at any time type: "h" for more help
        Type "q" to exit nmon

For Data-Collect-Mode

        -f            Must be the first option on the line (switches off interactive mode)
                      Saves data to a CSV Spreadsheet format .nmon file in then local directory
                      Note: -f sets a defaults -s300 -c288    which you can then modify
        Further Data Collection Options:
        -s <seconds>  time between data snapshots
        -c <count>    of snapshots before exiting
        -t            Includes Top Processes stats (-T also collects command arguments)
        -x            Capacity Planning=15 min snapshots for 1 day. (nmon -ft -s 900 -c 96)

End of Hints

Full Help Information for nmon 16d

For Interactive and Data Collection Mode:

        User Defined Disk Groups (DG) - This works in both modes
        It is a work around Linux issues, where disks & partitions are mixed up in /proc files
        & drive driver developers use bizarre device names, making it trick to separate them.
        -g <filename> Use this file to define the groups
                      - On each line: group-name <disks-list>   (space separated list)
                      - Example line: database sdb sdc sdd sde
                      - Up to 64 disk groups, 512 disks per line
                      - Disks names can appear more than one group
        -g auto       - Will generate a file called "auto" with just disks from "lsblk|grep disk" output
         For Interactive use define the groups then type: g or G
         For Data Capture defining the groups switches on data collection

Data-Collect-Mode = spreadsheet format (i.e. comma separated values)

        Note: Use only one of f, F, R, x, X or z to switch on Data Collection mode
        Note: Make it the first argument then use other options to modify the defaults
        Note: Don't collect data that you don't want - it just makes the files too large
        Note: Too many snapshots = too much data and crashes Analyser and other tools
        Note: 500 to 800 snapshots make a good graph on a normal size screen
        Recommended normal minimal options: snapshots every 2 minutes all day:
                Simple capture:      nmon -f  -s 120 -c 720
                With Top Procs:      nmon -fT -s 120 -c 720
                Set the directory:   nmon -fT -s 120 -c 720 -m /home/nag/nmon
                Capture a busy hour: nmon -fT -s   5 -c 720 -m /home/nag/nmon

For Data-Collect-Mode Options

        -f            spreadsheet output format [note: default -s300 -c288]
                         output file is <hostname>_YYYYMMDD_HHMM.nmon
        -F <filename> same as -f but user supplied filename
                         Not recommended as the default file name is perfect
        The other options in alphabetical order:
        -a            Include Accelerator GPU stats
        -b            Online only: for black and white mode (switch off colour)
        -c <number>   The number of snapshots before nmon stops
        -d <disks>    To set the maximum number of disks [default 256]
                      Ignores disks if the systems has 100's of disk or the config is odd!
        -D            Use with -g to add the Disk Wait/Service Time & in-flight stats
        -f and -F     See above
        -g <filename> User Defined Disk Groups (see above) - Data Capture: Generates  BBBG & DG lines
        -g auto       See above but makes the file "auto" for you of just the disks like sda etc.
        -h            This help output
        -I <percent>  Set the ignore process & disks busy threshold (default 0.1%)
                      Don't save or show proc/disk using less than this percent
        -l <dpl>      Disks per line in data capture to avoid spreadsheet width issues. Default 150. EMC=64.
        -m <directory> nmon changes to this directory before saving to file
                      Useful when starting nmon via cron
        -M              Adds MHz stats for each CPU thread. Some POWER8 model CPU cores can be different frequencies
        -N            Include NFS Network File System for V2, V3 and V4
        -p            nmon outputs the PID when it starts. Useful in scripts to capture the PID for a later safe stop.
        -r <runname>  Use in a benchmark to record the run details for later analysis [default hostname]
        -R              Old rrdtool format used by some - may be removed in the future. If you use this email Nigel
        -s <seconds>  Time between snap shots - with "-c count" decides duration of the data capture
        -t            Include Top Processes in the output
        -T            As -t plus it saves command line arguments in UARG section
        -U            Include the Linux 10 CPU utilisation stats (CPUUTIL lines in the file)
        -V            Print nmon version & exit immediately

        To manually load nmon files into a spreadsheet:
                sort -A *nmon >stats.csv
                Transfer the stats.csv file to your PC
                Start spreadsheet & then Open with type=comma-separated-value ASCII file
                This puts every datum in a different cell
                Now select the data of one type (same 1st column) and graph it
                The nmon Analyser & other tools do not need the file sorted.

Capacity Planning mode - use cron to run each day

        -x            Sensible spreadsheet output for one day
                      Every 15 mins for 1 day ( i.e. -ft -s 900 -c 96)
        -X            Sensible spreadsheet output for busy hour
                      Every 30 secs for 1 hour ( i.e. -ft -s 30 -c 120)
        -z            Like -x but the output saved in /var/perf/tmp assuming root user

Interactive Mode Keys in Alphabetical Order

    Start nmon then type the letters below to switch on & off particular stats
    The stats are always in the same order on-screen
    To see more stats: make the font smaller or use two windows

        Key --- Toggles on off to control what is displayed ---
        b   = Black and white mode (or use -b command line option)
        c   = CPU Utilisation stats with bar graphs (CPU core threads)
        C   = CPU Utilisation as above but concise wide view (up to 192 CPUs)
        d   = Disk I/O Busy% & Graphs of Read and Write KB/s
        D   = Disk I/O Numbers including Transfers, Average Block Size & Peaks (type: 0 to reset)
        g   = User Defined Disk Groups            (assumes -g <file> when starting nmon)
        G   = Change Disk stats (d) to just disks (assumes -g auto   when starting nmon)
        h   = This help information
        j   = File Systems including Journal File Systems
        k   = Kernel stats Run Queue, context-switch, fork, Load Average & Uptime
        l   = Long term Total CPU (over 75 snapshots) via bar graphs
        L   = Large and =Huge memory page stats
        m   = Memory & Swap stats
        M   = MHz for machines with variable frequency 1st=Threads 2nd=Cores 3=Graphs
        n   = Network stats & errors (if no errors it disappears)
        N   = NFS - Network File System
              1st NFS V2 & V3, 2nd=NFS4-Client & 3rd=NFS4-Server
        o   = Disk I/O Map (one character per disk pixels showing how busy it is)
              Particularly good if you have 100's of disks
        p   = PowerVM LPAR Stats from /proc/ppc64/lparcfg
        q   = Quit
        r   = Resources: Machine type, name, cache details & OS version & Distro + LPAR
        t   = Top Processes: select the data & order 1=Basic, 3=Perf 4=Size 5=I/O=root only
        u   = Top Process with command line details
        U   = CPU utilisation stats - all 10 Linux stats:
              user, user_nice, system, idle, iowait, irq, softirq, steal, guest, guest_nice
        v   = Experimental Verbose mode - tries to make recommendations
        V   = Virtual Memory stats

        Key --- Other Interactive Controls ---
        +   = Double the screen refresh time
        -   = Halves the screen refresh time
        0   = Reset peak counts to zero (peak highlight with ">")
        1   = Top Processes mode 1 Nice, Priority, Status
        3   = Top Processes mode 3 CPU, Memory, Faults
        4   = Top Processes mode 4 as 3 but order by memory
        5   = Top Processes mode 5 as 3 but order by I/O (if root user)
        6   = Highlights 60% row on Long Term CPU view
        7   = Highlights 70% row on Long Term CPU view
        8   = Highlights 80% row on Long Term CPU view
        9   = Highlights 90% row on Long Term CPU view
        .   = Minimum mode i.e. only busy disks and processes shown
        space = Refresh screen now

Interactive Start-up Control

        If you find you always type the same toggles every time you start
        then place them in the NMON shell variable. For example:
         export NMON=cmdrtn

Other items for Interactive and Data Collection mode:

        a) To limit the processes nmon lists (online and to a file)
            either set NMONCMD0 to NMONCMD63 to the program names
            or use -C cmd:cmd:cmd etc. example: -C ksh:vi:syncd

Other items for Data Collection mode:

        b) To you want to stop nmon use: kill -USR2 <nmon-pid>
        c) Use -p and nmon outputs the background process pid
        d) If you want to pipe nmon output to other commands use a FIFO:
            mkfifo /tmp/mypipe
            nmon -F /tmp/mypipe &
            tail -f /tmp/mypipe
        e) If nmon fails please report it with:
           1) nmon version like: 16d
           2) the output of: cd /proc; cat cpuinfo meminfo partitions stat vmstat
           3) some clue of what you were doing
           4) I may ask you to run the debug version or collect data files
        f) If box & line characters are letters then check: terminal emulator & $TERM
        g) External Data Collectors - nmon will execute a command or script at each snapshot time
           They must output to a different file which is merge afterwards with the nmon output
           Set the following shell variables:
            NMON_START  = script to generate CVS Header test line explaining the columns
                 Generate: TabName,DataDescription,Column_name_and_units,Column_name_and_units ...
            NMON_SNAP   = script for each snapshots data, the parameter is the T0000 snapshot number
                 Generate: TabName,T00NN,Data,Data,Data ...
            NMON_END    = script to clean up or finalise the data
            NMON_ONE_IN = call NMON_START less often (if it is heavy in CPU terms)
            Once capture done: cat nmon-file data-file >merged-file ; ready for Analyser or other tools
            The nmon Analyser will automatically do its best to graph the data on a new Tab sheet

        Developer: Nigel Griffiths     See
        Feedback welcome - On the current release only
        No warranty given or implied. Copyright GPLv3

nmon for Linux Support

If you:

  • need help running nmon or understanding the data saved
  • have a suggestion for improvements
  • have bug fixes or want to report errors
  • want to extend nmon for Linux on to other platforms
  • want to include nmon on your distro (not a problem, I would just like to know)

getting in touch at the nmon for Linux - Help Forum

Edit - History - Print - Recent Changes - Search
Page last modified on November 24, 2016, at 12:34 AM