#
# Copyright (c) 2004 Silicon Graphics, Inc.  All Rights Reserved.
# 
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
# 
# MacOS X PMDA help file in the ASCII format
#
# lines beginning with a # are ignored
# lines beginning @ introduce a new entry of the form
#  @ metric_name oneline-text
#  help test goes
#  here over multiple lines
#  ...
#
# the metric_name is decoded against the default PMNS -- as a special case,
# a name of the form NNN.MM (for numeric NNN and MM) is interpreted as an
# instance domain identification, and the text describes the instance domain
#
# blank lines before the @ line are ignored
#

@ 78.0 load averages for 1, 5, and 15 minutes
@ 78.1 mounted block-device-backed filesystem
@ 78.2 set of all disks
@ 78.3 set of all processors
@ 78.4 set of network interfaces
@ 78.5 network filesystem (NFS) v3 operations

@ kernel.uname.release release level of the running kernel
@ kernel.uname.version version level (build number) and build date of the running kernel
@ kernel.uname.sysname name of the implementation of the operating system
@ kernel.uname.machine name of the hardware type the system is running on
@ kernel.uname.nodename host name of this node on the network
@ kernel.uname.distro version of macOS installed

@ kernel.all.cpu.user total user time for all processors
@ kernel.all.cpu.nice total nice time for all processors
@ kernel.all.cpu.sys total system time for all processors
@ kernel.all.cpu.idle total idle time for all processors
@ kernel.all.load 1, 5 and 15 minute load average
@ kernel.all.uptime time the current kernel has been running
@ kernel.all.hz value of HZ (jiffies/second) for the currently running kernel
@ hinv.ncpu number of processors 
@ kernel.percpu.cpu.user percpu user processor time metric
@ kernel.percpu.cpu.nice percpu nice user processor time metric
@ kernel.percpu.cpu.sys percpu system processor time metric
@ kernel.percpu.cpu.idle percpu idle processor time metric

@ hinv.physmem total system memory
@ hinv.pagesize system memory page size
@ mem.physmem total system memory metric
@ mem.freemem total pages free in the system
@ mem.active the total pages currently in use and pageable
@ mem.inactive the total pages on the inactive list
@ mem.pages.freemem total number of free pages in the system
@ mem.pages.active the number of pages currently in use and pageable
@ mem.pages.inactive the number of pages on the inactive list
@ mem.pages.reactivated the number of pages that have been moved from inactive to active list
@ mem.pages.wired the total number of pages wired down (cannot be paged out)
@ mem.pages.faults the number of times the "vm_fault" routine has been called
@ mem.pages.cow_faults the number of faults that caused a page to be copied
@ mem.pages.zero_filled the number of pages that have been zero-filled on demand
@ mem.pageins the number of requests for pages from a pager
@ mem.pageouts the number of pages that have been paged out
@ mem.util.wired wired memory
@ mem.util.active active memory
@ mem.util.inactive inactive memory
@ mem.util.used used memory
Equals mem.util.wired + mem.util.active + mem.util.inactive.
@ mem.util.free free memory
@ mem.util.compressed compressed memory
Memory pages that have been compressed by the macOS memory compressor.
This represents the amount of memory that has been compressed and stored
in the compressor cache, reducing physical memory pressure.
@ mem.compressions cumulative count of memory compressions
The total number of memory compression operations performed by the
macOS memory compressor since system boot. Each compression occurs when
the system moves a page from active or inactive memory into compressed storage.
@ mem.decompressions cumulative count of memory decompressions
The total number of memory decompression operations performed by the
macOS memory compressor since system boot. Each decompression occurs when
a compressed page is accessed and must be restored to normal memory.
@ mem.compressor.pages number of pages stored in compressor
The current number of memory pages stored in the macOS memory compressor
cache. These pages have been compressed to reduce physical memory usage.
@ mem.compressor.uncompressed_pages total uncompressed size of compressed pages
The total number of pages that are currently stored in compressed form,
measured in their original (uncompressed) size. This shows how many pages
of memory are being represented by the compressed storage.
@ mem.compressor.swapouts_under_30s swapouts completed within 30 seconds
Number of memory compressor swapout operations that completed within 30
seconds since system boot. Part of timing bucket metrics for swapout
performance analysis.
@ mem.compressor.swapouts_under_60s swapouts completed within 60 seconds
Number of memory compressor swapout operations that completed within 60
seconds since system boot. Part of timing bucket metrics for swapout
performance analysis.
@ mem.compressor.swapouts_under_300s swapouts completed within 300 seconds
Number of memory compressor swapout operations that completed within 300
seconds (5 minutes) since system boot. Part of timing bucket metrics for
swapout performance analysis.
@ mem.compressor.thrashing_detected memory thrashing detections
Counter of memory thrashing events detected by the compressor swapper.
Indicates periods of excessive memory pressure where the system is spending
significant time swapping compressed memory.
@ mem.compressor.major_compactions major compaction operations completed
Total number of major memory compaction operations completed by the
compressor. Major compactions reorganize compressed memory segments to
improve efficiency and reclaim space.
@ mem.compressor.lz4_compressions LZ4 compression operations
Total number of LZ4 compression operations performed. LZ4 is a fast
compression algorithm used by macOS for memory compression in certain
scenarios.

@ swap.length total swap space configured
Total amount of swap space available to the system in kilobytes.
Obtained from sysctl vm.swapusage on macOS.
@ swap.used swap space currently in use
Amount of swap space currently being used in kilobytes.
Obtained from sysctl vm.swapusage on macOS.
@ swap.free swap space currently free
Amount of swap space currently available in kilobytes.
Obtained from sysctl vm.swapusage on macOS.
@ swap.pagesin pages swapped in from disk
Cumulative count of pages that have been swapped in from disk since boot.
This is an alias to the same data as mem.pageins, provided for compatibility
with pmstat and other cross-platform tools.
@ swap.pagesout pages swapped out to disk
Cumulative count of pages that have been swapped out to disk since boot.
This is an alias to the same data as mem.pageouts, provided for compatibility
with pmstat and other cross-platform tools.

@ hinv.nfilesys number of file systems currently mounted
@ filesys.capacity total capacity of mounted filesystem (Kbytes)
@ filesys.used total space used on mounted filesystem (Kbytes)    
@ filesys.free total space free on mounted filesystem (Kbytes)
@ filesys.usedfiles number of inodes allocated on mounted filesystem
@ filesys.freefiles number of unallocated inodes on mounted filesystem
@ filesys.mountdir file system mount point
@ filesys.full percentage of filesystem in use       
@ filesys.blocksize size of each block on mounted filesystem (Bytes)
@ filesys.avail total space free to non-superusers on mounted filesystem (Kbytes)
@ filesys.type filesystem type name for each mounted filesystem

@ hinv.ndisk number of disks in the system

@ hinv.machine Machine model
Same value as hw.model from sysctl, or Model Identifier from the
"About This Mac" dialog.

@ disk.dev.read per-disk read operations
Cumulative number of disk read operations since system boot time (subject
to counter wrap).

@ disk.dev.write per-disk write operations
Cumulative number of disk write operations since system boot time (subject
to counter wrap).

@ disk.dev.total per-disk total (read+write) operations
Cumulative number of disk read and write operations since system boot
time (subject to counter wrap).

@ disk.dev.read_bytes per-disk count of bytes read
@ disk.dev.write_bytes per-disk count of bytes written
@ disk.dev.total_bytes per-disk count bytes read and written
@ disk.dev.blkread per-disk block read operations
Cumulative number of disk block read operations since system boot time
(subject to counter wrap).

@ disk.dev.blkwrite per-disk block write operations
Cumulative number of disk block write operations since system boot time
(subject to counter wrap).

@ disk.dev.blktotal per-disk total (read+write) block operations
Cumulative number of disk block read and write operations since system
boot time (subject to counter wrap).

@ disk.dev.read_time i dunno either
@ disk.dev.write_time i dunno either
@ disk.dev.total_time i dunno either

@ disk.dev.read_errors per-disk read error count
Cumulative number of read errors reported by IOBlockStorageDriver since
system boot time (subject to counter wrap).

@ disk.dev.write_errors per-disk write error count
Cumulative number of write errors reported by IOBlockStorageDriver since
system boot time (subject to counter wrap).

@ disk.dev.read_retries per-disk read retry count
Cumulative number of read retries performed by IOBlockStorageDriver since
system boot time (subject to counter wrap).

@ disk.dev.write_retries per-disk write retry count
Cumulative number of write retries performed by IOBlockStorageDriver since
system boot time (subject to counter wrap).

@ disk.dev.total_read_time per-disk cumulative read time
Total time spent performing read operations in nanoseconds, as reported by
IOBlockStorageDriver since system boot time (subject to counter wrap).

@ disk.dev.total_write_time per-disk cumulative write time
Total time spent performing write operations in nanoseconds, as reported by
IOBlockStorageDriver since system boot time (subject to counter wrap).

@ disk.dev.avgrq_sz per-disk average request size
Average I/O request size in bytes, calculated as total bytes transferred
divided by total operations (read + write). Instantaneous value.

@ disk.dev.await per-disk average wait time
Average I/O wait time in nanoseconds per operation, calculated as total
I/O time divided by total operations (read + write). Instantaneous value.

@ disk.all.read_time i dunno either
@ disk.all.write_time i dunno either
@ disk.all.total_time i dunno either

@ disk.all.read_errors total read errors, summed for all disks
Cumulative number of read errors since system boot time (subject to counter
wrap), summed over all disk devices.

@ disk.all.write_errors total write errors, summed for all disks
Cumulative number of write errors since system boot time (subject to counter
wrap), summed over all disk devices.

@ disk.all.read_retries total read retries, summed for all disks
Cumulative number of read retries since system boot time (subject to counter
wrap), summed over all disk devices.

@ disk.all.write_retries total write retries, summed for all disks
Cumulative number of write retries since system boot time (subject to counter
wrap), summed over all disk devices.

@ disk.all.total_read_time total cumulative read time, summed for all disks
Total time spent performing read operations in nanoseconds since system boot
time (subject to counter wrap), summed over all disk devices.

@ disk.all.total_write_time total cumulative write time, summed for all disks
Total time spent performing write operations in nanoseconds since system boot
time (subject to counter wrap), summed over all disk devices.

@ disk.all.avgrq_sz average request size across all disks
Average I/O request size in bytes across all disks, calculated as total bytes
transferred divided by total operations. Instantaneous value.

@ disk.all.await average wait time across all disks
Average I/O wait time in nanoseconds per operation across all disks, calculated
as total I/O time divided by total operations. Instantaneous value.

@ disk.all.read total read operations, summed for all disks
Cumulative number of disk read operations since system boot time
(subject to counter wrap), summed over all disk devices.

@ disk.all.write total write operations, summed for all disks
Cumulative number of disk read operations since system boot time
(subject to counter wrap), summed over all disk devices.

@ disk.all.total total read and write operations, summed for all disks
Cumulative number of disk read and write operations since system boot
time (subject to counter wrap), summed over all disk devices.

@ disk.all.blkread block read operations, summed for all disks
Cumulative number of disk block read operations since system boot time
(subject to counter wrap), summed over all disk devices.

@ disk.all.blkwrite block write operations, summed for all disks
Cumulative number of disk block write operations since system boot time
(subject to counter wrap), summed over all disk devices.

@ disk.all.blktotal total (read+write) block operations, summed for all disks
Cumulative number of disk block read and write operations since system
boot time (subject to counter wrap), summed over all disk devices.

@ disk.all.read_bytes count of bytes read for all disk devices
@ disk.all.write_bytes count of bytes written for all disk devices
@ disk.all.total_bytes count of bytes read and written for all disk devices

@ network.interface.in.bytes network receive read bytes
@ network.interface.in.packets network receive read packets
@ network.interface.in.errors network receive read errors
@ network.interface.in.drops connections dropped on input
@ network.interface.in.mcasts network receive multicasts
@ network.interface.out.bytes network send write bytes
@ network.interface.out.packets network send write packets
@ network.interface.out.errors network send write errors
@ network.interface.out.mcasts network send multicasts
@ network.interface.collisions network send collisions for CDMA interfaces
@ network.interface.mtu maximum transmission size for network interfaces
@ network.interface.baudrate line speed for network interfaces
@ network.interface.total.bytes total network bytes received and sent
@ network.interface.total.packets total network packets received and sent
@ network.interface.total.errors total network errors on receive and send
@ network.interface.total.drops total network connections dropped
@ network.interface.total.mcasts total network multicasts

@ network.all.in.bytes total network receive bytes across all interfaces
Sum of network.interface.in.bytes across all network interfaces.

@ network.all.in.packets total network receive packets across all interfaces
Sum of network.interface.in.packets across all network interfaces.

@ network.all.in.errors total network receive errors across all interfaces
Sum of network.interface.in.errors across all network interfaces.

@ network.all.in.drops total network receive drops across all interfaces
Sum of network.interface.in.drops across all network interfaces.

@ network.all.out.bytes total network send bytes across all interfaces
Sum of network.interface.out.bytes across all network interfaces.

@ network.all.out.packets total network send packets across all interfaces
Sum of network.interface.out.packets across all network interfaces.

@ network.all.out.errors total network send errors across all interfaces
Sum of network.interface.out.errors across all network interfaces.

@ network.all.out.drops total network send drops across all interfaces
Always zero on macOS - output drop tracking is not available.

@ network.all.total.bytes total network bytes across all interfaces
Sum of network.all.in.bytes and network.all.out.bytes.

@ network.all.total.packets total network packets across all interfaces
Sum of network.all.in.packets and network.all.out.packets.

@ network.all.total.errors total network errors across all interfaces
Sum of network.all.in.errors and network.all.out.errors.

@ network.all.total.drops total network drops across all interfaces
Sum of network.all.in.drops and network.all.out.drops.

@ network.udp.indatagrams total UDP datagrams received
Total number of UDP datagrams delivered to UDP users.
This is a cumulative counter from boot time.
@ network.udp.outdatagrams total UDP datagrams sent
Total number of UDP datagrams sent from this host.
This is a cumulative counter from boot time.
@ network.udp.noports UDP datagrams to port with no listener
Total number of received UDP datagrams for which there was no listener
at the destination port. This is a cumulative counter from boot time.
@ network.udp.inerrors.total Total UDP input errors
Aggregate count of all UDP input errors (sum of hdrops, badsum, badlen).
Includes header errors, checksum errors, and length errors.

@ network.udp.inerrors.hdrops Header error drops
UDP datagrams dropped due to header errors. May indicate malformed packets
or network transmission issues.

@ network.udp.inerrors.badsum Bad checksum errors
UDP datagrams received with bad checksum. May indicate NIC hardware issues,
transmission line problems, or network equipment failures.

@ network.udp.inerrors.badlen Bad length errors
UDP datagrams dropped due to invalid length fields. May indicate malformed
packets or protocol violations.

@ network.udp.rcvbuferrors UDP receive buffer errors
Total number of UDP datagrams dropped due to full socket receive buffers.
This occurs when the receiving application cannot keep up with incoming data.

@ network.icmp.inmsgs total ICMP messages received
Total number of ICMP messages received (sum of all ICMP message types).
This is a cumulative counter from boot time.
@ network.icmp.outmsgs total ICMP messages sent
Total number of ICMP messages sent (sum of all ICMP message types).
This is a cumulative counter from boot time.
@ network.icmp.inerrors ICMP input errors
Total number of errors encountered on received ICMP messages.
Includes bad codes, truncated messages, checksum errors, and invalid lengths.
This is a cumulative counter from boot time.
@ network.icmp.indestunreachs ICMP destination unreachable messages received
Total number of ICMP Destination Unreachable messages received.
This is a cumulative counter from boot time.
@ network.icmp.inechos ICMP echo requests received
Total number of ICMP Echo Request messages received (ping requests).
This is a cumulative counter from boot time.
@ network.icmp.inechoreps ICMP echo replies received
Total number of ICMP Echo Reply messages received (ping responses).
This is a cumulative counter from boot time.
@ network.icmp.outechos ICMP echo requests sent
Total number of ICMP Echo Request messages sent (ping requests).
This is a cumulative counter from boot time.
@ network.icmp.outechoreps ICMP echo replies sent
Total number of ICMP Echo Reply messages sent (ping responses).
This is a cumulative counter from boot time.

@ network.ipv6.inreceives IPv6 packets received
Total number of IPv6 packets received.
This is a cumulative counter from boot time.
Retrieved via the net.inet6.ip6.stats sysctl.

@ network.ipv6.outforwarded IPv6 packets forwarded
Number of IPv6 packets forwarded to other destinations.
This is a cumulative counter from boot time.
Retrieved via the net.inet6.ip6.stats sysctl.

@ network.ipv6.indiscards IPv6 input packets discarded
Number of IPv6 packets discarded on input due to being too short or too small.
This is a cumulative counter from boot time.
Retrieved via the net.inet6.ip6.stats sysctl.

@ network.ipv6.outdiscards IPv6 output packets discarded
Number of IPv6 packets dropped on output due to buffer exhaustion or other errors.
This is a cumulative counter from boot time.
Retrieved via the net.inet6.ip6.stats sysctl.

@ network.ipv6.fragcreates IPv6 fragment packets created
Number of IPv6 packet fragments created for transmission.
This is a cumulative counter from boot time.
Retrieved via the net.inet6.ip6.stats sysctl.

@ network.ipv6.reasmoks IPv6 packets successfully reassembled
Number of IPv6 packets successfully reassembled from fragments.
This is a cumulative counter from boot time.
Retrieved via the net.inet6.ip6.stats sysctl.

@ network.sockstat.tcp.inuse TCP sockets in use
Number of TCP protocol control blocks (PCBs) currently in use.
This represents the number of active TCP connections and listening sockets.
Retrieved via the net.inet.tcp.pcbcount sysctl.

@ network.sockstat.udp.inuse UDP sockets in use
Number of UDP protocol control blocks (PCBs) currently in use.
This represents the number of active UDP sockets.
Retrieved via the net.inet.udp.pcbcount sysctl.

@ network.tcpconn.established TCP connections in ESTABLISHED state
Number of TCP connections currently in the ESTABLISHED state.
These are fully established connections actively transferring data.
This is the primary state for active communication between client and server.

@ network.tcpconn.syn_sent TCP connections in SYN_SENT state
Number of TCP connections currently in the SYN_SENT state.
The connection is attempting to open and has sent a SYN packet.
This state indicates active connection establishment in progress.

@ network.tcpconn.syn_recv TCP connections in SYN_RECEIVED state
Number of TCP connections currently in the SYN_RECEIVED state.
The server has received a SYN and sent a SYN-ACK response.
This state indicates passive connection establishment in progress.

@ network.tcpconn.fin_wait1 TCP connections in FIN_WAIT1 state
Number of TCP connections currently in the FIN_WAIT1 state.
The connection is closing and has sent a FIN packet.
Waiting for acknowledgment or a connection termination request from remote.

@ network.tcpconn.fin_wait2 TCP connections in FIN_WAIT2 state
Number of TCP connections currently in the FIN_WAIT2 state.
The local side has closed the connection and is waiting for a FIN from remote.
This state occurs after receiving ACK for our FIN.

@ network.tcpconn.time_wait TCP connections in TIME_WAIT state
Number of TCP connections currently in the TIME_WAIT state.
Connections waiting for enough time to pass to ensure the remote TCP
received the acknowledgment of its connection termination request.
High values may indicate many short-lived connections.

@ network.tcpconn.close TCP connections in CLOSED state
Number of TCP connections currently in the CLOSED state.
This is the default state representing no connection.
Typically this count should be zero or very low.

@ network.tcpconn.close_wait TCP connections in CLOSE_WAIT state
Number of TCP connections currently in the CLOSE_WAIT state.
The remote end has closed the connection, waiting for local application to close.
High values may indicate applications not closing connections properly.

@ network.tcpconn.last_ack TCP connections in LAST_ACK state
Number of TCP connections currently in the LAST_ACK state.
The connection has received a FIN from remote and sent its own FIN.
Waiting for the final acknowledgment.

@ network.tcpconn.listen TCP connections in LISTEN state
Number of TCP sockets currently in the LISTEN state.
These are server sockets waiting for incoming connection requests.
This represents the number of services listening for connections.

@ network.tcpconn.closing TCP connections in CLOSING state
Number of TCP connections currently in the CLOSING state.
Both sides are closing simultaneously, waiting for final acknowledgments.
This is a relatively rare state during simultaneous connection termination.


@ network.tcp.activeopens active TCP connection attempts
Count of TCP connections that have transitioned from CLOSED to SYN_SENT state.
This represents outbound connection attempts initiated by the local host.

@ network.tcp.passiveopens passive TCP connection attempts
Count of TCP connections that have transitioned from LISTEN to SYN_RECEIVED state.
This represents inbound connections accepted by listening sockets.

@ network.tcp.attemptfails failed TCP connection attempts
Count of TCP connection attempts that failed (SYN_SENT/SYN_RECEIVED to CLOSED).
Includes timeouts, resets, and other connection establishment failures.

@ network.tcp.estabresets TCP connections reset from ESTABLISHED
Count of TCP connections that transitioned from ESTABLISHED to CLOSED.
This typically indicates abnormal connection termination via RST.

@ network.tcp.currestab current established TCP connections
Current number of TCP connections in ESTABLISHED state.
This is a snapshot count, not a cumulative counter like other TCP metrics.

@ network.tcp.insegs TCP segments received
Total number of TCP segments received, including those received in error.
This is the total count of all TCP packets received by the host.

@ network.tcp.outsegs TCP segments sent
Total number of TCP segments sent, including those containing retransmitted data.
This is the total count of all TCP packets transmitted by the host.

@ network.tcp.retranssegs TCP segments retransmitted
Count of TCP segments retransmitted due to timeout or loss detection.
High values may indicate network congestion or packet loss.

@ network.tcp.inerrs.total Total TCP input errors
Aggregate count of all TCP input errors (sum of badsum, badoff, short, memdrop).

@ network.tcp.inerrs.badsum Bad checksum errors
TCP segments received with bad checksum. May indicate NIC hardware issues,
transmission line problems, or network equipment failures.

@ network.tcp.inerrs.badoff Bad offset errors
TCP segments received with bad header offset. May indicate malformed packets
or potential security attacks.

@ network.tcp.inerrs.short Truncated packets
TCP segments received that are too short (truncated). May indicate MTU mismatches,
packet fragmentation issues, or incomplete transmissions.

@ network.tcp.inerrs.memdrop Memory exhaustion drops
TCP segments dropped due to memory exhaustion during receive processing.
Indicates system resource pressure.

@ network.tcp.outrsts TCP reset segments sent
Count of TCP RST (reset) segments sent.
RST segments are used to abort connections or reject invalid connection attempts.

@ network.tcp.incsumerrors TCP checksum errors on input
Count of TCP segments discarded due to bad checksum.
Subset of network.tcp.inerrs specifically for checksum failures.

@ network.tcp.rtoalgorithm TCP retransmission timeout algorithm
The algorithm used to determine TCP retransmission timeout (RTO).
Value 4 indicates Van Jacobson's algorithm (RFC 6298), the modern standard.

@ network.tcp.rtomin minimum TCP retransmission timeout
Minimum value of TCP retransmission timeout in milliseconds.
Default is 200ms, the lower bound before declaring packet loss.

@ network.tcp.rtomax maximum TCP retransmission timeout
Maximum value of TCP retransmission timeout in milliseconds.
Default is 64000ms (64 seconds), the upper bound for retransmission backoff.

@ network.tcp.maxconn maximum TCP connections supported
Maximum number of TCP connections the system can support.
Value -1 indicates no fixed limit (dynamically allocated).

@ nfs3.client.calls
@ nfs3.client.reqs
@ nfs3.server.calls
@ nfs3.server.reqs
@ rpc.client.rpccnt
@ rpc.client.rpcretrans
@ rpc.client.rpctimeouts
@ rpc.client.rpcinvalid
@ rpc.client.rpcunexpected
@ rpc.client.attrcache.hits
@ rpc.client.attrcache.misses
@ rpc.client.lookupcache.hits
@ rpc.client.lookupcache.misses
@ rpc.client.biocache.read.hits
@ rpc.client.biocache.read.misses
@ rpc.client.biocache.write.hits
@ rpc.client.biocache.write.misses
@ rpc.client.biocache.readlink.hits
@ rpc.client.biocache.readlink.misses
@ rpc.client.biocache.readdir.hits
@ rpc.client.biocache.readdir.misses
@ rpc.client.direofcache.hits
@ rpc.client.direofcache.misses
@ rpc.client.pageins
@ rpc.client.pageouts
@ rpc.server.retfailed
@ rpc.server.faults
@ rpc.server.cache.inprog
@ rpc.server.cache.nonidem
@ rpc.server.cache.idem
@ rpc.server.cache.misses
@ rpc.server.vopwrites

@ vfs.files.count current number of open files
Current number of file descriptors (open files) in the system.
This represents the actual count of files currently open across all processes.
@ vfs.files.max maximum number of open files allowed
System-wide maximum number of file descriptors that can be open simultaneously.
This is a tunable kernel parameter (kern.maxfiles) that limits total open files.
@ vfs.files.free number of available file descriptor slots
The number of file descriptor slots available for new file opens.
Computed as vfs.files.max minus vfs.files.count.
@ vfs.vnodes.count current number of vnodes in use
Current number of vnodes (virtual file system nodes) allocated in the kernel.
Each open file, directory, or device typically requires at least one vnode.
@ vfs.vnodes.max maximum number of vnodes allowed
System-wide maximum number of vnodes that can exist simultaneously.
This is a tunable kernel parameter (kern.maxvnodes) that limits vnode allocation.
@ vfs.vnodes.recycled recycled vnode count
The number of vnodes that have been recycled (freed and reused) by the
kernel. This counter indicates how often the vnode cache reaches capacity
and must reclaim entries.
@ kernel.all.nprocs total number of processes
Current number of tasks (processes) running in the system.
This includes all processes across all users.
@ kernel.all.nthreads total number of threads
Current number of threads running in the system.
This includes all threads across all processes and users.

@ kernel.all.nusers number of user sessions on the system
Count of currently logged-in user sessions obtained from the utmpx database.
This includes both regular users and root sessions. This metric is used by
pcp-uptime and other tools to display user counts, similar to the system
uptime command.

@ kernel.all.nroots number of root user sessions on the system
Count of currently logged-in root user sessions from the utmpx database.
This is a subset of kernel.all.nusers counting only sessions where the
username is "root".

@ kernel.all.nsessions total number of utmpx session records
Total count of session records in the utmpx database. This includes all
session types, not just USER_PROCESS entries, providing a count of all
tracked login events.

@ kernel.limits.maxproc maximum processes (system-wide)
System-wide limit on the total number of processes that can exist simultaneously.
This is a tunable kernel parameter (kern.maxproc) that sets the global process limit.
@ kernel.limits.maxprocperuid maximum processes per user
Per-user limit on the number of processes each user can create.
This is a tunable kernel parameter (kern.maxprocperuid) that prevents a single
user from consuming all process slots.
@ kernel.limits.maxfiles maximum file descriptors (system-wide)
System-wide limit on the total number of open file descriptors.
This is a tunable kernel parameter (kern.maxfiles) identical to vfs.files.max.
@ kernel.limits.maxfilesperproc maximum file descriptors per process
Per-process limit on the number of file descriptors that can be open.
This is a tunable kernel parameter (kern.maxfilesperproc) that limits each
process's resource consumption.

@ hinv.ngpu number of GPUs
Number of GPUs (Graphics Processing Units) available in the system.
Includes both integrated and discrete GPUs on Intel Macs and
integrated GPUs on Apple Silicon Macs.
@ gpu.util GPU utilization percentage
Current GPU utilization percentage (0-100) representing how busy
the GPU is processing graphics and compute workloads.
@ gpu.memory.used GPU VRAM used
Amount of GPU video memory (VRAM) currently in use, in bytes.
This represents memory allocated for graphics buffers, textures,
and compute operations.
@ gpu.memory.free GPU VRAM free
Amount of GPU video memory (VRAM) currently available, in bytes.
Calculated as total VRAM minus used VRAM.

@ power.battery.present battery present flag
Boolean flag (1/0) indicating whether a battery is present in the system.
Desktop Macs will typically show 0, while MacBooks will show 1.
@ power.battery.charging battery charging status
Boolean flag (1/0) indicating whether the battery is currently charging.
Only meaningful when battery is present and AC power is connected.
@ power.battery.charge current battery charge percentage
Current battery charge level as a percentage (0-100).
Represents the current capacity relative to the maximum capacity.
@ power.battery.time_remaining minutes to empty or full
Estimated time in minutes until the battery is fully charged (when charging)
or fully discharged (when on battery power). Returns -1 if the estimate
is unavailable or unreliable.
@ power.battery.health battery health percentage
Battery health as a percentage (0-100), calculated as the ratio of
current maximum capacity to design capacity. Indicates battery degradation
over time. A value below 80% typically indicates significant wear.
@ power.battery.cycle_count battery charge cycle count
Number of complete charge-discharge cycles the battery has undergone.
A cycle is counted when 100% of battery capacity has been used, though
not necessarily in a single charge/discharge. Higher cycle counts indicate
more battery wear.
@ power.battery.temperature battery temperature
Battery temperature in degrees Celsius × 100 (for precision).
For example, a value of 2500 represents 25.00°C. Used for thermal
monitoring and battery health assessment.
@ power.battery.voltage battery voltage
Current battery voltage in millivolts (mV). Voltage varies with
charge level and battery chemistry. Typical MacBook batteries operate
in the 10000-13000 mV range.
@ power.battery.amperage battery discharge/charge rate
Current flow in milliamps (mA). Negative values indicate discharging
(battery powering the system), positive values indicate charging.
Magnitude indicates power consumption or charging speed.
@ power.battery.capacity.design design capacity
Battery design capacity in milliamp-hours (mAh). This is the original
rated capacity when the battery was new. Used as baseline for calculating
battery health.
@ power.battery.capacity.max current maximum capacity
Current maximum battery capacity in milliamp-hours (mAh). This value
decreases over time as the battery ages and degrades. Compare with
design capacity to assess battery wear.
@ power.ac.connected AC power connected flag
Boolean flag (1/0) indicating whether AC power adapter is connected.
When 1, the system is running on external power; when 0, running on
battery (if present).
@ power.source power source type
String indicating the current power source: "AC Power" when running on
external power adapter, "Battery Power" when running on battery, or
"Unknown" if power source cannot be determined.

@ disk.apfs.ncontainer number of APFS containers
Number of APFS containers visible via IOKit (AppleAPFSContainer class).
Instantaneous value.

@ disk.apfs.nvolume number of APFS volumes
Number of APFS volumes visible via IOKit (AppleAPFSVolume class).
Instantaneous value.

@ disk.apfs.container.block_size APFS container block size
Block size in bytes for the APFS container as reported by ContainerBlockSize.
Discrete value per container instance.

@ disk.apfs.container.bytes_read APFS container bytes read
Cumulative bytes read from the block device backing this APFS container
since system boot (subject to counter wrap).

@ disk.apfs.container.bytes_written APFS container bytes written
Cumulative bytes written to the block device backing this APFS container
since system boot (subject to counter wrap).

@ disk.apfs.container.read_requests APFS container read requests
Cumulative number of read requests sent to the block device backing this
APFS container since system boot (subject to counter wrap).

@ disk.apfs.container.write_requests APFS container write requests
Cumulative number of write requests sent to the block device backing this
APFS container since system boot (subject to counter wrap).

@ disk.apfs.container.transactions APFS container transactions flushed
Cumulative number of APFS transactions flushed to the container since
system boot (subject to counter wrap).

@ disk.apfs.container.cache_hits APFS container object cache hits
Cumulative number of object cache hits in the APFS container since
system boot (subject to counter wrap).

@ disk.apfs.container.cache_evictions APFS container object cache evictions
Cumulative number of object cache evictions from the APFS container since
system boot (subject to counter wrap).

@ disk.apfs.container.read_errors APFS container metadata read errors
Cumulative number of metadata read errors encountered by the APFS container
since system boot (subject to counter wrap).

@ disk.apfs.container.write_errors APFS container metadata write errors
Cumulative number of metadata write errors encountered by the APFS container
since system boot (subject to counter wrap).

@ disk.apfs.volume.encrypted APFS volume encryption status
Boolean flag (1/0) indicating whether the APFS volume is encrypted.
Instantaneous value per volume instance.

@ disk.apfs.volume.locked APFS volume locked status
Boolean flag (1/0) indicating whether the APFS volume is currently locked
(requires password to unlock). Instantaneous value per volume instance.

@ hinv.nfan number of cooling fans
Number of cooling fans in the system, detected via SMC (System Management
Controller). On fanless MacBooks (M1/M2 MacBook Air), this will be 0.
On MacBooks with active cooling, typically 1-2 fans. Desktop Macs may have
more fans. Instantaneous value, no instance domain.

@ thermal.cpu.die CPU die temperature
CPU die temperature in degrees Celsius, read from SMC key Tp01 (Apple Silicon)
or equivalent Intel key. Represents the hottest point on the CPU die.
Typical operating range: 30-90°C. Returns PM_ERR_APPVERSION if sensor
not available on this Mac model. Instantaneous value.

@ thermal.cpu.proximity CPU proximity temperature
Temperature measured near the CPU package (°C), read from SMC key TA0P.
Generally lower than die temperature but responds quickly to CPU load changes.
Useful for thermal trending. Instantaneous value.

@ thermal.gpu.die GPU die temperature
GPU die temperature in degrees Celsius, read from SMC key Tg01 (Apple Silicon
integrated GPU) or equivalent discrete GPU key. Only available on Macs with
discrete GPUs or Apple Silicon with GPU sensor support. Returns PM_ERR_APPVERSION
if not available. Instantaneous value.

@ thermal.package SoC package temperature
System-on-chip package temperature (°C), read from SMC key TCXC. On Apple
Silicon, represents the unified M-series chip temperature. On Intel Macs,
represents the CPU package. Instantaneous value.

@ thermal.ambient ambient air temperature
Ambient air temperature inside the chassis (°C), read from SMC key TA0P.
Represents intake air temperature before cooling. Useful for diagnosing
thermal throttling and fan behavior. Instantaneous value.

@ thermal.fan.speed fan speed
Current fan speed in revolutions per minute (RPM), per-fan instance.
Read from SMC keys F0Ac, F1Ac, etc. Value of 0 indicates fan stopped
(unusual except during boot). Compare with target RPM to detect thermal
throttling. Instantaneous value, FAN_INDOM instance domain.

@ thermal.fan.target target fan speed
Target fan speed in RPM that SMC is attempting to achieve, per-fan instance.
When target > current speed, system is trying to increase cooling.
Read from SMC keys F0Tg, F1Tg, etc. Instantaneous value, FAN_INDOM instance domain.

@ thermal.fan.mode fan control mode
Fan control mode: 0 = automatic (SMC-controlled based on temperature),
1 = manual (user/software override). Most systems operate in automatic mode.
Manual mode typically requires third-party software. Read from SMC keys
F0Md, F1Md, etc. Instantaneous value, FAN_INDOM instance domain.

@ thermal.fan.min minimum fan speed
Minimum fan speed in RPM, per-fan instance. Fans will not spin slower than
this value during normal operation. Typically 1200-2000 RPM for MacBooks.
Read from SMC keys F0Mn, F1Mn, etc. Discrete value, FAN_INDOM instance domain.

@ thermal.fan.max maximum fan speed
Maximum fan speed in RPM, per-fan instance. Fans will not spin faster than
this value even under extreme thermal load. Typically 5000-7000 RPM for MacBooks.
Read from SMC keys F0Mx, F1Mx, etc. Discrete value, FAN_INDOM instance domain.

@ thermal.pressure.level thermal pressure level
macOS thermal pressure level (0-3) from notify API:
  0 = Nominal (normal operation, no throttling)
  1 = Fair (light thermal load, minimal throttling)
  2 = Serious (high thermal load, active throttling)
  3 = Critical (extreme thermal load, aggressive throttling)
Always available, does not require SMC access. Instantaneous value.

@ thermal.pressure.state thermal pressure state string
Human-readable thermal pressure state: "Nominal", "Fair", "Serious", or
"Critical". Corresponds to thermal.pressure.level numeric value. Useful for
monitoring dashboards and alerts. Always available via notify API.
Instantaneous value, string type.
