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 | See sync_count_1. |
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 (first value), 5 (second value) and 15 (third 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. |
48 | 0x30 | u32 | nr_iowait | Number of blocked threads (waiting for I/O). |
52 | 0x34 | See note 2. | per_cpu_data | Time spent in user, kernel, idle, nice, etc for every CPU. See note 3. |
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 the 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 bytes 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 |