APPLDATA monitor record layout
![]()
Each of the data gathering modules writes a different type of record.
z/VM® can identify the records by their unique product ID.
The product ID is an EBCDIC string of this form: LINUXKRNL<record
ID>260100
. The <record ID> is treated as a byte value, not a
string.
The records contain data of the following types:
- u32
- unsigned 4 byte integer
- u64
- unsigned 8 byte integer
| Offset (Decimal) | Offset (Hex) | Type | Name | Description |
|---|---|---|---|---|
| 0 | 0x0 | u64 | timestamp | TOD time stamp that is generated on the Linux® side after record update |
| 8 | 0x8 | u32 | sync_count_1 | After z/VM collected the record data, sync_count_1 and sync_count_2 must be the same. Otherwise, the record was updated on the Linux side while z/VM was collecting the data. As a result, the data might be inconsistent. |
| 12 | 0xC | u32 | sync_count_2 | |
| 16 | 0x10 | u64 | pgpgin | Data that was read from disk (in KB) |
| 24 | 0x18 | u64 | pgpgout | Data that was written to disk (in KB) |
| 32 | 0x20 | u64 | pswpin | Pages that were swapped in |
| 40 | 0x28 | u64 | pswpout | Pages that were swapped out |
| 48 | 0x30 | u64 | sharedram | Shared RAM in KB |
| 56 | 0x38 | u64 | totalram | Total usable main memory size in KB |
| 64 | 0x40 | u64 | freeram | Available memory size in KB |
| 72 | 0x48 | u64 | totalhigh | Total high memory size in KB |
| 80 | 0x50 | u64 | freehigh | Available high memory size in KB |
| 88 | 0x58 | u64 | bufferram | Memory that was reserved for raw disk blocks, corresponding to "Buffers" from /proc/meminfo, in KB |
| 96 | 0x60 | u64 | cached | Size of used cache, including "Cached" and "SwapCached" from /proc/meminfo, in KB |
| 104 | 0x68 | u64 | totalswap | Total swap space size in KB |
| 112 | 0x70 | u64 | freeswap | Free swap space in KB |
| 120 | 0x78 | u64 | pgalloc | Page allocations |
| 128 | 0x80 | u64 | pgfault | Page faults (major+minor) |
| 136 | 0x88 | u64 | pgmajfault | Page faults (major only) |
| Offset (Decimal) | Offset (Hex) | Type (size) | Name | Description |
|---|---|---|---|---|
| 0 | 0x0 | u64 | timestamp | TOD time stamp that is generated on the Linux side after record update |
| 8 | 0x8 | u32 | sync_count_1 | After z/VM collected the record data, sync_count_1 and sync_count_2 must be the same. Otherwise, the record was updated on the Linux side while z/VM was collecting the data. As a result, the data might be inconsistent. |
| 12 | 0xC | u32 | sync_count_2 | See sync_count_1. |
| 16 | 0x10 | u32 | nr_cpus | Number of virtual CPUs. |
| 20 | 0x14 | u32 | per_cpu_size | Size of the per_cpu_data for each CPU (= 36). |
| 24 | 0x18 | u32 | cpu_offset | Offset of the first per_cpu_data (= 52). |
| 28 | 0x1C | u32 | nr_running | Number of runnable threads. |
| 32 | 0x20 | u32 | nr_threads | Number of threads. |
| 36 | 0x24 | 3 × u32 | avenrun[3] | Average number of running processes during the last 1 (1st value), 5 (2nd value) and 15 (3rd value) minutes. These values are "fake fix-point", each value is composed of a 10-bit integer and an 11-bit fractional part. See note 1 at the end of this table. |
| 48 | 0x30 | u32 | nr_iowait | Number of blocked threads (waiting for I/O). |
| 52 | 0x34 | See note 2. | per_cpu_data | Time that is spent in user, kernel, idle, nice, etc for every CPU. See note 3 at the end of this table. |
| 52 | 0x34 | u32 | per_cpu_user | Timer ticks that were spent in user mode. |
| 56 | 0x38 | u32 | per_cpu_nice | Timer ticks that were spent with modified priority. |
| 60 | 0x3C | u32 | per_cpu_system | Timer ticks that were spent in kernel mode. |
| 64 | 0x40 | u32 | per_cpu_idle | Timer ticks that were spent in idle mode. |
| 68 | 0x44 | u32 | per_cpu_irq | Timer ticks that were spent in interrupts. |
| 72 | 0x48 | u32 | per_cpu_softirq | Timer ticks that were spent in softirqs. |
| 76 | 0x4C | u32 | per_cpu_iowait | Timer ticks that were spent while waiting for I/O. |
| 80 | 0x50 | u32 | per_cpu_steal | Timer ticks "stolen" by hypervisor. |
| 84 | 0x54 | u32 | cpu_id | The number of this CPU. |
|
Note:
|
||||
| Offset (Decimal) | Offset (Hex) | Type | Name | Description |
|---|---|---|---|---|
| 0 | 0x0 | u64 | timestamp | TOD time stamp that is generated on the Linux side after record update |
| 8 | 0x8 | u32 | sync_count_1 | After z/VM collected the record data, sync_count_1 and sync_count_2 must be the same. Otherwise, the record was updated on the Linux side while z/VM was collecting the data. As a result, the data might be inconsistent. |
| 12 | 0xC | u32 | sync_count_2 | See sync_count_1. |
| 16 | 0x10 | u32 | nr_interfaces | Number of interfaces being monitored |
| 20 | 0x14 | u32 | padding | Unused. The next value is 64-bit aligned, so these 4 byte would be padded out by compiler |
| 24 | 0x18 | u64 | rx_packets | Total packets that were received |
| 32 | 0x20 | u64 | tx_packets | Total packets that were transmitted |
| 40 | 0x28 | u64 | rx_bytes | Total bytes that were received |
| 48 | 0x30 | u64 | tx_bytes | Total bytes that were transmitted |
| 56 | 0x38 | u64 | rx_errors | Number of bad packets that were received |
| 64 | 0x40 | u64 | tx_errors | Number of packet transmit problems |
| 72 | 0x48 | u64 | rx_dropped | Number of incoming packets that were dropped because of insufficient space in Linux buffers |
| 80 | 0x50 | u64 | tx_dropped | Number of outgoing packets that were dropped because of insufficient space in Linux buffers |
| 88 | 0x58 | u64 | collisions | Number of collisions while transmitting |