Skip to main content

Atop

Atop is a toolset that enables support for capturing performance information on Unix/Linux systems. This information is used in the Virtual Client to to formulate a performance counter base. The Atop toolset is integrated into the Virtual Client platform as a background monitor called the PerfCounterMonitor and is part of the default monitors for the Virtual Client. Performance counters are sampled every 1 second during the monitor frequency interval noted in the parameters below. At the end of this monitor frequency interval, the performance counter samples are aggregated and then emitted. Most of the aggregations are averages; however, there are a few counters that track the min, max and median of the samples during the frequency interval. The monitor frequency can be adjusted to change the precision of the counter samples window.

Supported Platforms

  • linux-x64
  • linux-arm64

Atop Output Description

The following section describes the various counters/metrics that are available with the Atop toolset. Note that for consistency with other performance counter toolsets used by the Virtual Client across Windows and Unix/Linux systems, these performance metrics are mapped to performance counter names that are similar in format to those captured on Windows systems. See the link at the top for more details on the exact performance counters that are captured.

https://manpages.debian.org/testing/atop/atop.1.en.html#OUTPUT_DESCRIPTION_-_SYSTEM_LEVEL

Metric NameDescription
PRC-sysTotal cpu time consumed in system mode ('sys')
PRC-userTotal cpu time consumed in user mode ('user')
PRC-#procThe total number of processes present at this moment ('#proc')
PRC-#trunThe total number of threads present at this moment in state 'running' ('#trun')
PRC-#tslpi'sleeping interruptible' ('#tslpi')
PRC-#tslpu'sleeping uninterruptible' ('#tslpu')
PRC-#zombieThe number of zombie processes ('#zombie')
PRC-clonesThe number of clone system calls ('clones')
PRC-#zombieThe number of zombie processes ('#zombie')
PRC-#exitThe number of processes that ended during the interval ('#exit') when process accounting is used. Instead of '#exit' the last column may indicate that process accounting could not be activated ('no procacct').
\Processor Information(_Total)% System TimeThe percentage of cpu time spent in kernel mode by all active processes ('sys')
\Processor Information(_Total)% User TimeThe percentage of cpu time consumed in user mode ('user') for all active processes (including processes running with a nice value larger than zero)
\Processor Information(_Total)% IRQ TimeThe percentage of cpu time spent for interrupt handling ('irq') including softirq
\Processor Information(_Total)% Idle TimeThe percentage of unused cpu time while no processes were waiting for disk I/O ('idle')
CPU-waitThe percentage of unused cpu time while at least one process was waiting for disk I/O ('wait').In case of per-cpu occupation, the cpu number and the wait percentage ('w') for that cpu. The number of lines showing the per-cpu occupation can be limited.
CPU-stealFor virtual machines, the steal-percentage ('steal') shows the percentage of cpu time stolen by other virtual machines running on the same hardware.
CPU-guestFor physical machines hosting one or more virtual machines, the guest-percentage ('guest') shows the percentage of cpu time used by the virtual machines. Notice that this percentage overlaps the user percentage!
CPU-ipcWhen PMC performance monitoring counters are supported by the CPU and the kernel (and atop runs with root privileges), the number of instructions per CPU cycle ('ipc') is shown. The first sample always shows the value 'initial', because the counters are just activated at the moment that atop is started.
CPU-cyclper CPU the effective number of cycles ('cycl') is shown. This value can reach the current CPU frequency if such CPU is 100% busy. When an idle CPU is halted, the number of effective cycles can be (considerably) lower than the current frequency.
CPU-avgfIn case that the kernel module 'cpufreq_stats' is active (after issueing 'modprobe cpufreq_stats'), the average frequency ('avgf') is shown.
CPU-avgscalIn case that the kernel module 'cpufreq_stats' is active (after issueing 'modprobe cpufreq_stats'), the average scaling percentage ('avgscal') is shown.
CPU-curfOtherwise the current frequency ('curf') is shown at the moment that the sample is taken.
CPU-curscalOtherwise the current scaling percentage ('curscal') is shown at the moment that the sample is taken.
CPL-avg1The load average figures reflecting the number of threads that are available to run on a CPU (i.e. part of the runqueue) or that are waiting for disk I/O, over 1 minutes.
CPL-avg5The load average figures reflecting the number of threads that are available to run on a CPU (i.e. part of the runqueue) or that are waiting for disk I/O, over 5 minutes.
CPL-avg15The load average figures reflecting the number of threads that are available to run on a CPU (i.e. part of the runqueue) or that are waiting for disk I/O, over 15 minutes.
\Processor Information(_Total)\CSwitchesThe number of context switches ('csw')
CPL-intrThe number of serviced interrupts ('intr')
CPL-numcpuThe number of available CPUs
GPU-gpubusyThe subsequent columns show the percentage of time that one or more kernels were executing on the GPU ('gpubusy')
GPU-membusyThe percentage of time that global (device) memory was being read or written ('membusy')
GPU-memoccThe occupation percentage of memory ('memocc')
GPU-totalThe total memory ('total')
GPU-usedThe memory being in use at the moment of the sample ('used')
GPU-usavgThe average memory being in use during the sample time ('usavg')
GPU-#procThe number of processes being active on the GPU at the moment of the sample ('#proc')
GPU-typeThe type of GPU
\Memory\Total ByteThe total amount of physical memory ('tot')
\Memory\Free ByteThe amount of memory which is currently free ('free')
\Memory\Cached ByteThe amount of memory in use as page cache including the total resident shared memory ('cache')
MEM-dirtyThe amount of memory within the page cache that has to be flushed to disk ('dirty')
\Memory\Buffers ByteThe amount of memory used for filesystem meta data ('buff')
MEM-slabThe amount of memory being used for kernel mallocs ('slab')
MEM-slrecThe amount of slab memory that is reclaimable ('slrec')
MEM-shmemThe resident size of shared memory including tmpfs ('shmem')
MEM-shrssThe resident size of shared memory ('shrss')
MEM-shswpThe amount of shared memory that is currently swapped ('shswp')
MEM-vmbalThe amount of memory that is currently claimed by vmware's balloon driver ('vmbal')
MEM-zfarcThe amount of memory that is currently claimed by the ARC (cache) of ZFSonlinux ('zfarc')
MEM-hptotThe amount of memory that is claimed for huge pages ('hptot')
MEM-hpuseThe amount of huge page memory that is really in use ('hpuse')
SWP-totThe total amount of swap space on disk ('tot')
SWP-freeThe amount of free swap space ('free')
SWP-swcacThe size of the swap cache ('swcac')
SWP-vmcomThe committed virtual memory space ('vmcom')
SWP-vmlimThe maximum limit of the committed space ('vmlim', which is by default swap size plus 50% of memory size) is shown.
PAG-scanThe number of scanned pages ('scan') due to the fact that free memory drops below a particular threshold
PAG-stallThe number times that the kernel tries to reclaim pages due to an urgent need ('stall').
PAG-swinThe number of memory pages the system read from swap space ('swin')
PAG-swoutThe number of memory pages the system wrote to swap space ('swout') are shown
PSIPressure Stall Information. - NOT ENABLED
LVM/MDD/DSKLogical volume/multiple device/disk utilization.
LVM/MDD/DSK-busyThe busy percentage i.e. the portion of time that the unit was busy handling requests ('busy')
LVM/MDD/DSK-readThe number of read requests issued ('read')
LVM/MDD/DSK-writeThe number of write requests issued ('write')
LVM/MDD/DSK-KiB/rThe number of KiBytes per read ('KiB/r')
LVM/MDD/DSK-KiB/wThe number of KiBytes per write ('KiB/w')
LVM/MDD/DSK-MBr/sThe number of MiBytes per second throughput for reads ('MBr/s')
LVM/MDD/DSK-MBw/sThe number of MiBytes per second throughput for writes ('MBw/s')
LVM/MDD/DSK-avqThe average queue depth ('avq')
LVM/MDD/DSK-avioThe average number of milliseconds needed by a request ('avio') for seek, latency and data transfer.
NFMNetwork Filesystem (NFS) mount at the client side.
NFM-srvThe mounted server directory, the name of the server ('srv')
NFM-readThe total number of bytes physically read from the server ('read')
NFM-writeThe total number of bytes physically written to the server ('write')
NFM-nreadData transfer is subdivided in the number of bytes read via normal read() system calls ('nread')
NFM-nwritThe number of bytes written via normal read() system calls ('nwrit')
NFM-dreadThe number of bytes read via direct I/O ('dread')
NFM-dwritThe number of bytes written via direct I/O ('dwrit')
NFM-mreadThe number of bytes read via memory mapped I/O pages ('mread')
NFM-mwritThe number of bytes written via memory mapped I/O pages ('mwrit')
NFCNetwork Filesystem (NFS) client side counters. - NOT ENABLED
NFC-rpcThe number of RPC calls issues by local processes ('rpc')
NFC-rpwriteThe number of read RPC calls ('read') and write RPC calls ('rpwrite') issued to the NFS server
NFC-retxmitThe number of RPC calls being retransmitted ('retxmit')
NFC-autrefThe number of authorization refreshes ('autref').
NFSNetwork Filesystem (NFS) server side counters. - NOT ENABLED
NFS-rpcThe number of RPC calls received from NFS clients ('rpc')
NFS-cwritThe number of read RPC calls received ('cread'), the number of write RPC calls received ('cwrit')
NFS-MBcr/sThe number of Megabytes/second returned to read requests by clients ('MBcr/s')
NFS-MBcw/sThe number of Megabytes/second passed in write requests by clients ('MBcw/s')
NFS-nettcpThe number of network requests handled via TCP ('nettcp')
NFS-netudpThe number of network requests handled via UDP ('netudp')
NFS-rcmissThe number of reply cache hits ('rchits'), the number of reply cache misses ('rcmiss')
NFS-rcnocaThe number of uncached requests ('rcnoca')
NFS-badfmtThe number of requests with a bad format ('badfmt')
NFS-badautBad authorization ('badaut')
NFS-badclnThe number of bad clients ('badcln').
NET-tcpiThe number of received TCP segments including those received in error ('tcpi')
NET-tcpoThe number of transmitted TCP segments excluding those containing only retransmitted octets ('tcpo')
NET-udpiThe number of UDP datagrams received ('udpi')
NET-udpoThe number of UDP datagrams transmitted ('udpo')
NET-tcpaoThe number of active TCP opens ('tcpao')
NET-tcppoThe number of passive TCP opens ('tcppo')
NET-tcprsThe number of TCP output retransmissions ('tcprs')
NET-tcpieThe number of TCP input errors ('tcpie')
NET-tcporThe number of TCP output resets ('tcpor')
NET-udpnpThe number of UDP no ports ('udpnp')
NET-udpieThe number of UDP input errors ('udpie')
NET-ipiThe number of IP datagrams received from interfaces, including those received in error ('ipi')
NET-ipoThe number of IP datagrams that local higher-layer protocols offered for transmission ('ipo')
NET-ipfrwThe number of received IP datagrams which were forwarded to other interfaces ('ipfrw')
NET-delivThe number of IP datagrams which were delivered to local higher-layer protocols ('deliv')
NET-icmpiThe number of received ICMP datagrams ('icmpi')
NET-icmpoThe number of transmitted ICMP datagrams ('icmpo')
NET-pckiThe number of received packets ('pcki')
NET-pckoThe number of transmitted packets ('pcko')
NET-spThe line speed of the interface ('sp')
NET-siThe effective amount of bits received per second ('si')
NET-soThe effective amount of bits transmitted per second ('so')
NET-collThe number of collisions ('coll')
NET-mltiThe number of received multicast packets ('mlti')
NET-erriThe number of errors while receiving a packet ('erri')
NET-erroThe number of errors while transmitting a packet ('erro')
NET-drpiThe number of received packets dropped ('drpi')
NET-drpoThe number of transmitted packets dropped ('drpo')
IFBInfiniband utilization. - NOT ENABLED