SARMON - SAR + NMON for Solaris
Total Page:16
File Type:pdf, Size:1020Kb
Published on GeckoTechnology.com (http://www.geckotechnology.com) Home > SARMON - SAR + NMON for Solaris SARMON - SAR + NMON for Solaris SARMON - SAR + NMON for Solaris guitoo - Thu, 2010-01-07 21:42 [1] [2] [3] CPU Disk Network You probably know nmon for Linux and AIX if you come to this page... It is a very simple and nice system monitoring and reporting tool developed by IBM engineer Nigel Griffiths. Recently (July 2009) nmon Linux has been released to the OpenSource community. NMON has for its reporting aspect many tools to represent the captured data. The main one is "nmon analyzer", to be downloaded from http://www.ibm.com/developerworks/aix/library/au- nmon_analyser/ [4]. This Excel macro loads a raw nmon file and generates graphs. I find Excel a perfect tool to manipulate the captured data and render as wish. For large systems, with number of disk devices greater than 254, nmon analyzer has been edited to a XXL purpose, for Excel 2007 of higher. See bellow for more information. For more information on this tool and its creator Nigel: NMON at IBM DeveloperWorks http://www.ibm.com/developerworks/aix/library/au- analyze_aix/ [5] NMON Wiki https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon NMON Analyser Wiki https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon_analyser NMON at SourceForge http://nmon.sourceforge.net [6] Working sometimes on Solaris, I could not find its equivalent for reporting purpose, especially the ability to setup the tool easily, and to get numerous OS raw measurements and graphs on Excel (as opposed to PDF or custom graphing tool). So I decided to write such a tool, and I found the easiest way was to start from SAR tool ( http://docs.sun.com/app/docs/doc/816-5165/sar-1?a=view [7]) and to add few hooks in order to render system activity in NMON file format. Sarmon also supports fully RRD output. [8] [9] [10] CPU IOStat Service Time Processes Wait Times No warranty given or implied when using sarmon. Table of Content Architecture Project Ground Rules Source Code Download SARMON Fields Environment Variables RRD Support VxVM Support Nmon analyzer XXL How to Skip SA File Generation How to Test SARMON How to Install SARMON How to Compile SARMON Report Issues or Request Enhancements Up-Coming Enhancements Version History Architecture Sarmon supports Solaris 10 and 11. Solaris 10 early versions require sarmon early release ('es' version). Sadc, the sar daemon which captures OS activity, has been modified to output also the nmon file. If sadc generates a file called for example sa17, then another file called sa17.hostname_yymmdd_hhmm.nmon is generated too. sadc output native file format is not changed. All sarmon code has been placed into two separate files (sarmon.c and sarmon.h) with most of its methods and variables being static. Any hook method placed in sadc.c will have its name prefixed by sarmon_ to avoid any confusion. There are currently 5 hooks (init, snap, close, sleep and one to capture usage per CPU) in sadc.c. Additionally prstat project code has been used with out any change to log statistics per process and for accounting per zone or project. At the end of prstat.c, some code has been added to output statistics in nmon format. Also iostat partial code has been used too in order to render mount points and NFS name to the raw block device name. "Linux" OS is recognized by the analyzer via the "AAA,Linux" line inside the nmon file. Project Ground Rules The project will follow the following rules for its design and implementation: Minimum change in original SAR project code. Only few hooks shall be added to process nmon features outside original code. One key reason is that any change of sar project can be merged in minutes sarmon is an extension to sar, so any command parameter, feature and output shall remain unchanged sadc output raw file format shall not be changed. This means any data structure required for extending sar (i.e. monitor each CPU) shall be carried within sarmon code, and shall not be placed in raw sadc files sarmon can provide more monitoring feature, output shall be part of nmon report sarmon nmon reporting shall be compatible with nmon file format (well, not formally document thought!), so that tools such as "nmon analyzer" can process the file. Currently it has been tested with version 33D, 33e, 33f and 43a sarmon does not need to run as root Source Code Original SAR source code has been downloaded from OpenSolaris, under "Common Development and Distribution License" license. Base code version is build 130 (realligned on build 146 today). Original source code locations can be found at: http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sa/ [11] http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/prstat/ [12] http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/stat/c... [13] SourceForge project at http://sourceforge.net/projects/sarmon/ [14] As few parts are reuse of OpenSolaris, the code uses few private APIs. Over time, I will do my best to remove them over time. Namely as for v1.12: zone_get_id, getvmusage, di_dim_fini, di_dim_path_dev, di_dim_path_devices, di_lookup_node. Download SARMON Source Code Binaries (i386 and SPARC) Sample Excel Output Download from SourceForge [15] Sample RRD Output nmon analyzer XXL Fields Worksheet Column Description Average CPU time %: User% user time Sys% system time Wait% wait time (= 0 on Solaris 10) CPU_ALL Idle = 100 - User% - Sys% - Wait% CPUnnn Idle% See note on release 1.11 CPU% User% + Sys% CPUs Number of CPUs User% Sys% Breakdown of CPU Utilisation by logical processor CPU_SUMM Wait% over the collection period Idle% memtotal (in MB) total usable physical memory swaptotal = swapfree + swapused (in MB) free physical memory. For Solaris file memfree system cache (FSCache) is located inside this area. Same as 'vmstat.memory.free' value in MB (in MB) Free swap space MEM Same as 'swap -s.available' Same as 'sar -r.freeswap / 2' (/2 since unit is block swapfree size) Close to 'vmstat.memory.swap' value in MB (which does not include reserved space) (in MB) used swap (reserved + allocated) swapused Same as 'swap -s.allocated' MEMNEW Not Used - %rcache Cache hit ratio %wcache Same as 'sar -b' lread (/s) accesses of system buffers lwrite Same as 'sar -b' pread (/s) transfers using raw (physical) device mechanism MEMUSE pwrite Same as 'sar -b' %comp Ignore (negative value) (/s) transfer of data between system buffers and bread disk or other block device bwrite Same as 'sar -b' VM (pages/s) minor faults (hat and as minor faults) minfaults Same as 'vmstat.mf' Worksheet Column Description (pages/s) majfaults major faults (pages/s) pgin pageins and pgout outs (pages/s) pages examined by scans pageout daemon Same as 'vmstat.sr' (pages/s) pages freed by daemon or reclaims auto Same as 'vmstat.re' (KB/s) pages paged in and pgpgin out pgpgout Same as 'vmstat.pi and po' (KB/s) pages swapped in pswpin and out pswpout Same as 'vmstat.si and so' (KB/s) pages freed by daemon or pgfree auto Same as 'vmstat.fr' DISKREAD device name (KB/s) read from block device (disk, other [nfs, IOSTATREAD device name partition, iopath, tape], controller, VxVM volume) CTRLREAD ctrler name Same as 'iostat -x.kr/s'. For iostat, a disk is referred VxVMREAD vol name as a device. Controller stats: -C option DISKWRITE device name (KB/s) written to block device (disk, other [nfs, IOSTATWRITE device name partition, iopath, tape], controller, VxVM volume) CTRLWRITE ctrler name Same as 'iostat -x.kw/s'. For iostat, a disk is referred VxVMWRITE vol name as a device. Controller stats: -C option Worksheet Column Description (ops/s) read + write (disk, other [nfs, partition, DISKXFER device name iopath, tape], controller, VxVM volume) IOSTATXFER device name Same as 'iostat -x.r/s+w/s'. For iostat, a disk is CTRLXFER ctrler name referred as a device. Controller stats: -C option VxVMXFER vol name Same as 'sar -d.r+w/s' (KB/xfer) Average data size per block device DISKBSIZE device name transfer (disk, other [nfs, partition, iopath, tape], IOSTATBSIZE device name controller, VxVM volume) CTRLBSIZE ctrler name Same as 'iostat -x.(kr/s+kw/s)/(r/s+w/s)'. For iostat, VxVMBSIZE vol name a disk is referred as a device. Controller stats: -C option (%) Percent of time the block device is busy (transactions in progress) (disk, other [nfs, partition, DISKBUSY device name iopath, tape], controller, VxVM volume) IOSTATBUSY device name Same as 'iostat -x.%b'. For iostat, a disk is referred CTRLBUSY ctrler name as a device. Controller stats: -C option VxVMBUSY vol name Same as 'sar -d.%busy' Warning: for controller and VxVM volume, it is an estimation (ms) Average service time (disk, other [nfs, partition, DISKSVCTM device name iopath, tape], controller, VxVM volume) IOSTATSVCTM device name Same as 'sar -d.avserv' CTRLSVCTM ctrler name Same as 'iostat -xn.asvc_t'. For iostat, a disk is VxVMSVCTM vol name referred as a device. Controller stats: -C option (ms) Average wait time (disk, other [nfs, partition, DISKWAITTM device name iopath, tape], controller, VxVM volume) IOSTATWAITTM device name Same as 'sar -d.avwait' CTRLWAITTM ctrler name Same as 'iostat -xn.wsvc_t'. For iostat, a disk is VxVMWAITTM vol name referred as a device. Controller stats: -C option Disk Read (KB/s) Total of all disk reads KB/sec DISK_SUM Disk Write (KB/s) Total of all disk writes KB/sec IO/sec (ops/s) Total of all disk transfers if-read (KB/s) KB read on this interface if-write (KB/s) KB written to this interface NET if-total (KB/s) KB read + written for this interface total-read (KB/s) KB read for all interfaces total-write (KB/s) KB written for all interfaces if-reads/s (packets/s) packets read on this interface NETPACKET if-writes/s (packets/s) packets written to this interface NETERROR if-ierrs (packets/s) incoming packets with error Worksheet Column Description (packets/s) outgoing if-oerrs packets with error (col/s) if-collisions collisions per second (/s) translations of i-node numbers to pointers to the i-node structure of a file or device.