Package rst.devices.generic¶
This package collects device-independent data types.
It is only intended for data types which do not make sense outside the context of a specific device. Try to use generic data types instead, if possible.
Messages¶
Message UserStateCollection¶
-
class
rst.devices.generic.
UserStateCollection
¶ Collection of
UserState
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.UserState
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message UserStateCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated UserState element = 1;
}
Message MemoryStateCollection¶
-
class
rst.devices.generic.
MemoryStateCollection
¶ Collection of
MemoryState
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.MemoryState
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message MemoryStateCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated MemoryState element = 1;
}
Message DiskStateCollection¶
-
class
rst.devices.generic.
DiskStateCollection
¶ Collection of
DiskState
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.DiskState
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message DiskStateCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated DiskState element = 1;
}
Message NetworkStateCollection¶
-
class
rst.devices.generic.
NetworkStateCollection
¶ Collection of
NetworkState
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.NetworkState
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message NetworkStateCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated NetworkState element = 1;
}
Message CpuStateCollection¶
-
class
rst.devices.generic.
CpuStateCollection
¶ Collection of
CpuState
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.CpuState
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message CpuStateCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated CpuState element = 1;
}
Message HostInformationCollection¶
-
class
rst.devices.generic.
HostInformationCollection
¶ Collection of
HostInformation
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.HostInformation
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message HostInformationCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated HostInformation element = 1;
}
Message BatteryStateCollection¶
-
class
rst.devices.generic.
BatteryStateCollection
¶ Collection of
BatteryState
instances.Auto-generated.
-
element
¶ Type: array of rst.devices.generic.BatteryState
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message BatteryStateCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated BatteryState element = 1;
}
Message HostInformation¶
-
class
rst.devices.generic.
HostInformation
¶ Combines monitoring information about a single processing node into a single message.
Code author: Jens-Christian Seele <jseele@techfak.uni-bielefeld.de>
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
@create_collection
-
hostname
¶ Type: ASCII-STRING
Name of the host being monitored.
-
memory_state
¶ Type: rst.devices.generic.MemoryState
Information about the memory usage.
-
cpu_state
¶ Type: rst.devices.generic.CpuState
Information about the CPU usage.
-
process_num
¶ Type: UINT64
The number of processes currently being executed on the system.
-
disk_state
¶ Type: rst.devices.generic.DiskState
Information about storage devices.
-
network_state
¶ Type: rst.devices.generic.NetworkState
Information about network devices and connections.
-
user_state
¶ Type: rst.devices.generic.UserState
Information about logged-in users.
-
message HostInformation {
/**
* Name of the host being monitored.
*/
optional string hostname = 1;
/**
* Information about the memory usage.
*/
optional MemoryState memory_state = 2;
/**
* Information about the CPU usage.
*/
optional CpuState cpu_state = 3;
/**
* The number of processes currently being executed on the system.
*/
optional uint64 process_num = 4;
/**
* Information about storage devices.
*/
optional DiskState disk_state = 5;
/**
* Information about network devices and connections.
*/
optional NetworkState network_state = 6;
/**
* Information about logged-in users.
*/
optional UserState user_state = 7;
}
Message UserState¶
-
class
rst.devices.generic.
UserState
¶ Information about the currently logged-in users on a processing node.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
@create_collection
-
logged_in_users
¶ Type: UINT32
Number of currently logged-in users distinguished by their user name.
-
login_sessions
¶ Type: UINT32
Number of sessions associated to logged-in users. On Linux this relates to terminals used by a user.
-
login_hosts
¶ Type: UINT32
Number of distinct hosts from which users are logged in on the described processing node.
-
message UserState {
/**
* Number of currently logged-in users distinguished by their user name.
*/
optional uint32 logged_in_users = 1;
/**
* Number of sessions associated to logged-in users. On Linux this relates
* to terminals used by a user.
*/
optional uint32 login_sessions = 2;
/**
* Number of distinct hosts from which users are logged in on the described
* processing node.
*/
optional uint32 login_hosts = 3;
}
Message NetworkState¶
-
class
rst.devices.generic.
NetworkState
¶ Information about the available persistent storage devices in a processing node and their usage statistics.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
@create_collection
-
nics
¶ Type: array of rst.devices.generic.NetworkState.NetworkInterfaceController
List of statistic messages for all NICs of the processing node. Order is not important.
-
connections
¶ Type: array of rst.devices.generic.NetworkState.NetworkConnections
Numbers of network connections indexed by the combined key (protocol, address family). Order is not important. Keys must be unique.
-
message NetworkState {
/**
* Represents statistics for a single Network Interface Controller (NIC).
*
* @author Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
*/
message NetworkInterfaceController {
/**
* Name of the NIC as represented by the OS.
*/
required bytes name = 1;
/**
* Number of bytes received by the NIC so far. Might wrap in case of an
* overflow.
*/
// @unit(byte)
optional uint64 bytes_received = 10;
/**
* Number of bytes sent by the NIC so far. Might wrap in case of an
* overflow.
*/
// @unit(byte)
optional uint64 bytes_sent = 11;
/**
* Number of packets received by the NIC. Might wrap in case of an
* overflow.
*/
optional uint64 packets_received = 12;
/**
* Number of packets sent by the NIC. Might wrap in case of an
* overflow.
*/
optional uint64 packets_sent = 13;
/**
* Number of errors while receiving packets since the start of the
* device. Might wrap in case of an overflow.
*/
optional uint64 receive_errors = 14;
/**
* Number of errors while sending packets since the start of the
* device. Might wrap in case of an overflow.
*/
optional uint64 send_errors = 15;
/**
* Number of dropped packets that should have been received since the
* start of the device. Might wrap in case of an overflow.
*/
optional uint64 receive_drops = 16;
/**
* Number of dropped packets that should have been sent since the start
* of the device. Might wrap in case of an overflow.
*/
optional uint64 send_drops = 17;
}
/**
* List of statistic messages for all NICs of the processing node. Order is
* not important.
*/
repeated NetworkInterfaceController nics = 1;
/**
* Number of network connections for a combination of address family and
* protocol and separated by the different connection states. In case a
* combination of protocol and address family does not allow to distinguish
* different connection states, all connections will end up in the @ref
* .num_none field.
*
* The list of connection states has been taken from python psutil.
*
* @author Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
*/
message NetworkConnections {
/**
* Available OSI transport layer protocols for network connections.
*/
enum Protocol {
/**
* The Transmission Control Protocol (TCP).
*/
PROTOCOL_TCP = 1;
/**
* The User Datagram Protocol (UDP).
*/
PROTOCOL_UDP = 2;
/**
* Any other protocol. Might also be used in case TCP and UDP
* cannot be distinguished.
*/
PROTOCOL_OTHER = 100;
}
/**
* Possible network address families used to establish a network
* connection.
*/
enum AddressFamily {
/**
* Internet Protocol version 4 (IPv4).
*/
FAMILY_IPV4 = 1;
/**
* Internet Protocol version 6 (IPv6).
*/
FAMILY_IPV6 = 2;
/**
* Unix domain sockets.
*/
FAMILY_UNIX = 3;
/**
* Any other address family.
*/
FAMILY_OTHER = 100;
}
/**
* Protocol of the network connection counters expressed in this
* message.
*/
required Protocol protocol = 1;
/**
* Address family of the network connection counters expressed in this
* message.
*/
required AddressFamily family = 2;
/**
* Number of connections in the ESTABLISHED state.
*/
optional uint32 num_established = 10;
/**
* Number of connections in the SYN_SENT state.
*/
optional uint32 num_syn_sent = 11;
/**
* Number of connections in the SYN_RECV state.
*/
optional uint32 num_syn_recv = 12;
/**
* Number of connections in the FIN_WAIT1 state.
*/
optional uint32 num_fin_wait1 = 13;
/**
* Number of connections in the FIN_WAIT2 state.
*/
optional uint32 num_fin_wait2 = 14;
/**
* Number of connections in the TIME_WAIT state.
*/
optional uint32 num_time_wait = 15;
/**
* Number of connections in the CLOSE state.
*/
optional uint32 num_close = 16;
/**
* Number of connections in the CLOSE_WAIT state.
*/
optional uint32 num_close_wait = 17;
/**
* Number of connections in the LAST_ACK state.
*/
optional uint32 num_last_ack = 18;
/**
* Number of connections in the LISTEN state.
*/
optional uint32 num_listen = 19;
/**
* Number of connections in the CLOSING state.
*/
optional uint32 num_closing = 20;
/**
* Number of connections in the DELETE_TCB state (windows).
*/
optional uint32 num_delete_tcb = 21;
/**
* Number of connections in the IDLE state (solaris).
*/
optional uint32 num_idle = 22;
/**
* Number of connections in the BOUND state (solaris).
*/
optional uint32 num_bound = 23;
/**
* Number of connections in any other or unknown state.
*/
optional uint32 num_none = 40;
}
/**
* Numbers of network connections indexed by the combined key (protocol,
* address family). Order is not important. Keys must be unique.
*/
repeated NetworkConnections connections = 2;
}
Message NetworkInterfaceController¶
-
class
rst.devices.generic.NetworkState.
NetworkInterfaceController
¶ Represents statistics for a single Network Interface Controller (NIC).
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
-
name
¶ Type: OCTET-VECTOR
Name of the NIC as represented by the OS.
-
bytes_received
¶ Type: UINT64
Unit: byte
Number of bytes received by the NIC so far. Might wrap in case of an overflow.
-
bytes_sent
¶ Type: UINT64
Unit: byte
Number of bytes sent by the NIC so far. Might wrap in case of an overflow.
-
packets_received
¶ Type: UINT64
Number of packets received by the NIC. Might wrap in case of an overflow.
-
packets_sent
¶ Type: UINT64
Number of packets sent by the NIC. Might wrap in case of an overflow.
-
receive_errors
¶ Type: UINT64
Number of errors while receiving packets since the start of the device. Might wrap in case of an overflow.
-
send_errors
¶ Type: UINT64
Number of errors while sending packets since the start of the device. Might wrap in case of an overflow.
-
receive_drops
¶ Type: UINT64
Number of dropped packets that should have been received since the start of the device. Might wrap in case of an overflow.
-
send_drops
¶ Type: UINT64
Number of dropped packets that should have been sent since the start of the device. Might wrap in case of an overflow.
-
message NetworkInterfaceController {
/**
* Name of the NIC as represented by the OS.
*/
required bytes name = 1;
/**
* Number of bytes received by the NIC so far. Might wrap in case of an
* overflow.
*/
// @unit(byte)
optional uint64 bytes_received = 10;
/**
* Number of bytes sent by the NIC so far. Might wrap in case of an
* overflow.
*/
// @unit(byte)
optional uint64 bytes_sent = 11;
/**
* Number of packets received by the NIC. Might wrap in case of an
* overflow.
*/
optional uint64 packets_received = 12;
/**
* Number of packets sent by the NIC. Might wrap in case of an
* overflow.
*/
optional uint64 packets_sent = 13;
/**
* Number of errors while receiving packets since the start of the
* device. Might wrap in case of an overflow.
*/
optional uint64 receive_errors = 14;
/**
* Number of errors while sending packets since the start of the
* device. Might wrap in case of an overflow.
*/
optional uint64 send_errors = 15;
/**
* Number of dropped packets that should have been received since the
* start of the device. Might wrap in case of an overflow.
*/
optional uint64 receive_drops = 16;
/**
* Number of dropped packets that should have been sent since the start
* of the device. Might wrap in case of an overflow.
*/
optional uint64 send_drops = 17;
}
Message NetworkConnections¶
-
class
rst.devices.generic.NetworkState.
NetworkConnections
¶ Number of network connections for a combination of address family and protocol and separated by the different connection states. In case a combination of protocol and address family does not allow to distinguish different connection states, all connections will end up in the
num_none
field.The list of connection states has been taken from python psutil.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
-
protocol
¶ Type: rst.devices.generic.NetworkState.NetworkConnections.Protocol
Protocol of the network connection counters expressed in this message.
-
family
¶ Type: rst.devices.generic.NetworkState.NetworkConnections.AddressFamily
Address family of the network connection counters expressed in this message.
-
num_established
¶ Type: UINT32
Number of connections in the ESTABLISHED state.
-
num_syn_sent
¶ Type: UINT32
Number of connections in the SYN_SENT state.
-
num_syn_recv
¶ Type: UINT32
Number of connections in the SYN_RECV state.
-
num_fin_wait1
¶ Type: UINT32
Number of connections in the FIN_WAIT1 state.
-
num_fin_wait2
¶ Type: UINT32
Number of connections in the FIN_WAIT2 state.
-
num_time_wait
¶ Type: UINT32
Number of connections in the TIME_WAIT state.
-
num_close
¶ Type: UINT32
Number of connections in the CLOSE state.
-
num_close_wait
¶ Type: UINT32
Number of connections in the CLOSE_WAIT state.
-
num_last_ack
¶ Type: UINT32
Number of connections in the LAST_ACK state.
-
num_listen
¶ Type: UINT32
Number of connections in the LISTEN state.
-
num_closing
¶ Type: UINT32
Number of connections in the CLOSING state.
-
num_delete_tcb
¶ Type: UINT32
Number of connections in the DELETE_TCB state (windows).
-
num_idle
¶ Type: UINT32
Number of connections in the IDLE state (solaris).
-
num_bound
¶ Type: UINT32
Number of connections in the BOUND state (solaris).
-
num_none
¶ Type: UINT32
Number of connections in any other or unknown state.
-
message NetworkConnections {
/**
* Available OSI transport layer protocols for network connections.
*/
enum Protocol {
/**
* The Transmission Control Protocol (TCP).
*/
PROTOCOL_TCP = 1;
/**
* The User Datagram Protocol (UDP).
*/
PROTOCOL_UDP = 2;
/**
* Any other protocol. Might also be used in case TCP and UDP
* cannot be distinguished.
*/
PROTOCOL_OTHER = 100;
}
/**
* Possible network address families used to establish a network
* connection.
*/
enum AddressFamily {
/**
* Internet Protocol version 4 (IPv4).
*/
FAMILY_IPV4 = 1;
/**
* Internet Protocol version 6 (IPv6).
*/
FAMILY_IPV6 = 2;
/**
* Unix domain sockets.
*/
FAMILY_UNIX = 3;
/**
* Any other address family.
*/
FAMILY_OTHER = 100;
}
/**
* Protocol of the network connection counters expressed in this
* message.
*/
required Protocol protocol = 1;
/**
* Address family of the network connection counters expressed in this
* message.
*/
required AddressFamily family = 2;
/**
* Number of connections in the ESTABLISHED state.
*/
optional uint32 num_established = 10;
/**
* Number of connections in the SYN_SENT state.
*/
optional uint32 num_syn_sent = 11;
/**
* Number of connections in the SYN_RECV state.
*/
optional uint32 num_syn_recv = 12;
/**
* Number of connections in the FIN_WAIT1 state.
*/
optional uint32 num_fin_wait1 = 13;
/**
* Number of connections in the FIN_WAIT2 state.
*/
optional uint32 num_fin_wait2 = 14;
/**
* Number of connections in the TIME_WAIT state.
*/
optional uint32 num_time_wait = 15;
/**
* Number of connections in the CLOSE state.
*/
optional uint32 num_close = 16;
/**
* Number of connections in the CLOSE_WAIT state.
*/
optional uint32 num_close_wait = 17;
/**
* Number of connections in the LAST_ACK state.
*/
optional uint32 num_last_ack = 18;
/**
* Number of connections in the LISTEN state.
*/
optional uint32 num_listen = 19;
/**
* Number of connections in the CLOSING state.
*/
optional uint32 num_closing = 20;
/**
* Number of connections in the DELETE_TCB state (windows).
*/
optional uint32 num_delete_tcb = 21;
/**
* Number of connections in the IDLE state (solaris).
*/
optional uint32 num_idle = 22;
/**
* Number of connections in the BOUND state (solaris).
*/
optional uint32 num_bound = 23;
/**
* Number of connections in any other or unknown state.
*/
optional uint32 num_none = 40;
}
Message Protocol¶
-
class
rst.devices.generic.NetworkState.NetworkConnections.
Protocol
¶ Available OSI transport layer protocols for network connections.
-
PROTOCOL_TCP
¶ -
= 1
The Transmission Control Protocol (TCP).
-
PROTOCOL_UDP
¶ -
= 2
The User Datagram Protocol (UDP).
-
PROTOCOL_OTHER
¶ -
= 100
Any other protocol. Might also be used in case TCP and UDP cannot be distinguished.
-
enum Protocol {
/**
* The Transmission Control Protocol (TCP).
*/
PROTOCOL_TCP = 1;
/**
* The User Datagram Protocol (UDP).
*/
PROTOCOL_UDP = 2;
/**
* Any other protocol. Might also be used in case TCP and UDP
* cannot be distinguished.
*/
PROTOCOL_OTHER = 100;
}
Message AddressFamily¶
-
class
rst.devices.generic.NetworkState.NetworkConnections.
AddressFamily
¶ Possible network address families used to establish a network connection.
-
FAMILY_IPV4
¶ -
= 1
Internet Protocol version 4 (IPv4).
-
FAMILY_IPV6
¶ -
= 2
Internet Protocol version 6 (IPv6).
-
FAMILY_UNIX
¶ -
= 3
Unix domain sockets.
-
FAMILY_OTHER
¶ -
= 100
Any other address family.
-
enum AddressFamily {
/**
* Internet Protocol version 4 (IPv4).
*/
FAMILY_IPV4 = 1;
/**
* Internet Protocol version 6 (IPv6).
*/
FAMILY_IPV6 = 2;
/**
* Unix domain sockets.
*/
FAMILY_UNIX = 3;
/**
* Any other address family.
*/
FAMILY_OTHER = 100;
}
Message DiskState¶
-
class
rst.devices.generic.
DiskState
¶ Information about the available persistent storage devices in a processing node and their usage statistics.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
@create_collection
-
partitions
¶ Type: array of rst.devices.generic.DiskState.Partition
The available partitions of the processing node. Order is not important.
-
devices
¶ Type: array of rst.devices.generic.DiskState.Device
Collection of statistics for physical storage devices. Order is not important.
-
message DiskState {
/**
* Representation of file system partition and related size information.
* Due to things like LVM, a partition may reside on multiple physical
* storage devices and device names might even be unrelated.
*
* @author Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
*/
message Partition {
/**
* The path (Unix) or drive letter under which the partition is
* accessible in the node's file system.
*/
required bytes mount_point = 1;
/**
* Name of the physical storage device on which this partition resides.
* Due to the reasons mentioned in the message comment, this name may
* or may not match one of the names given in the devices section.
*/
optional bytes device = 2;
/**
* Total available space on the partition.
*/
// @unit(byte)
optional uint64 space_total = 10;
/**
* Used space on the partition.
*/
// @unit(byte)
optional uint64 space_used = 11;
}
/**
* The available partitions of the processing node. Order is not important.
*/
repeated Partition partitions = 1;
/**
* Represents a physical storage device and statistics regarding read and
* write access for that device. The exact definition of what a storage
* device is, may be OS-specific due to the availability of the respective
* counters for the operating system. Therefore, the device can be
* unrelated to physical hard disks.
*
* @author Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
*/
message Device {
/**
* Name of the device as represented by the OS.
*/
required bytes name = 1;
/**
* Number of reads performed on this device so far. Might wrap in case
* of an overflow.
*/
optional uint64 read_count = 10;
/**
* Number of writes performed on this device so far. Might wrap in case
* of an overflow.
*/
optional uint64 write_count = 11;
/**
* Number of bytes read from the device so far. Might wrap in case of
* an overflow.
*/
// @unit(byte)
optional uint64 read_bytes = 12;
/**
* Number of bytes written to the device so far. Might wrap in case of
* an overflow.
*/
// @unit(byte)
optional uint64 write_bytes = 13;
/**
* Time spent reading from the device. Might wrap in case of an
* overflow.
*/
// @unit(msec)
optional uint64 read_time = 14;
/**
* Time spent writing to the device. Might wrap in case of an overflow.
*/
// @unit(msec)
optional uint64 write_time = 15;
}
/**
* Collection of statistics for physical storage devices. Order is not
* important.
*/
repeated Device devices = 2;
}
Message Partition¶
-
class
rst.devices.generic.DiskState.
Partition
¶ Representation of file system partition and related size information. Due to things like LVM, a partition may reside on multiple physical storage devices and device names might even be unrelated.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
-
mount_point
¶ Type: OCTET-VECTOR
The path (Unix) or drive letter under which the partition is accessible in the node’s file system.
-
device
¶ Type: OCTET-VECTOR
Name of the physical storage device on which this partition resides. Due to the reasons mentioned in the message comment, this name may or may not match one of the names given in the devices section.
-
space_total
¶ Type: UINT64
Unit: byte
Total available space on the partition.
-
space_used
¶ Type: UINT64
Unit: byte
Used space on the partition.
-
message Partition {
/**
* The path (Unix) or drive letter under which the partition is
* accessible in the node's file system.
*/
required bytes mount_point = 1;
/**
* Name of the physical storage device on which this partition resides.
* Due to the reasons mentioned in the message comment, this name may
* or may not match one of the names given in the devices section.
*/
optional bytes device = 2;
/**
* Total available space on the partition.
*/
// @unit(byte)
optional uint64 space_total = 10;
/**
* Used space on the partition.
*/
// @unit(byte)
optional uint64 space_used = 11;
}
Message Device¶
-
class
rst.devices.generic.DiskState.
Device
¶ Represents a physical storage device and statistics regarding read and write access for that device. The exact definition of what a storage device is, may be OS-specific due to the availability of the respective counters for the operating system. Therefore, the device can be unrelated to physical hard disks.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
-
name
¶ Type: OCTET-VECTOR
Name of the device as represented by the OS.
-
read_count
¶ Type: UINT64
Number of reads performed on this device so far. Might wrap in case of an overflow.
-
write_count
¶ Type: UINT64
Number of writes performed on this device so far. Might wrap in case of an overflow.
-
read_bytes
¶ Type: UINT64
Unit: byte
Number of bytes read from the device so far. Might wrap in case of an overflow.
-
write_bytes
¶ Type: UINT64
Unit: byte
Number of bytes written to the device so far. Might wrap in case of an overflow.
-
read_time
¶ Type: UINT64
Unit: msec
Time spent reading from the device. Might wrap in case of an overflow.
-
write_time
¶ Type: UINT64
Unit: msec
Time spent writing to the device. Might wrap in case of an overflow.
-
message Device {
/**
* Name of the device as represented by the OS.
*/
required bytes name = 1;
/**
* Number of reads performed on this device so far. Might wrap in case
* of an overflow.
*/
optional uint64 read_count = 10;
/**
* Number of writes performed on this device so far. Might wrap in case
* of an overflow.
*/
optional uint64 write_count = 11;
/**
* Number of bytes read from the device so far. Might wrap in case of
* an overflow.
*/
// @unit(byte)
optional uint64 read_bytes = 12;
/**
* Number of bytes written to the device so far. Might wrap in case of
* an overflow.
*/
// @unit(byte)
optional uint64 write_bytes = 13;
/**
* Time spent reading from the device. Might wrap in case of an
* overflow.
*/
// @unit(msec)
optional uint64 read_time = 14;
/**
* Time spent writing to the device. Might wrap in case of an overflow.
*/
// @unit(msec)
optional uint64 write_time = 15;
}
Message CpuState¶
-
class
rst.devices.generic.
CpuState
¶ Low-level information of the CPU utilization for a single system with potentially multiple cores.
This message is currently designed closely along the information available in the Linux proc filesystem. So it is probably only directly useful for Linux systems.
Code author: Jens-Christian Seele <jseele@techfak.uni-bielefeld.de>
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
@create_collection
-
jiffy_length
¶ Type: UINT32
Unit: microsecond
The length of one measurement tick for the individual CPU counters.
-
cpus
¶ Type: array of rst.devices.generic.CpuState.Cpu
An entry for each (virtualized) CPU or core of a multicore system.
-
load_1
¶ Type: FLOAT32
Unit: number
Constraint:
value>=0
Load average for one minute as defined by the linux kernel, e.g. in man proc: The first three fields in this file are load average figures giving the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes
-
load_5
¶ Type: FLOAT32
Unit: number
Constraint:
value>=0
Load average for 5 minutes as defined by the linux kernel, e.g. in man proc: The first three fields in this file are load average figures giving the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes
-
load_15
¶ Type: FLOAT32
Unit: number
Constraint:
value>=0
Load average for 15 minute as defined by the linux kernel, e.g. in man proc: The first three fields in this file are load average figures giving the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes
-
message CpuState {
/**
* The length of one measurement tick for the individual CPU counters.
*/
// @unit(microsecond)
optional uint32 jiffy_length = 10;
/**
* Measurements for a single CPU in the system.
*
* The supported detailed fields for each CPU vary with different Kernel
* versions. In oder to calculate at least a valid load of the CPU,
* minimally total and idle need to be given. Hence, they are required
* fields. Ideally, @ref .idle + all other detail fields should sum up to
* the total value.
*
* With each new measurement all counters must fulfill the condition
* new value >= previous value. I.e. these are ever-increasing numbers and
* differences need to be calculated to find out the current system
* statistics.
*
* All values are measured in abstract ticks of a fixed length. This length
* is specified @ref CpuState.jiffy_length.
*/
message Cpu {
/**
* Identifier for the respective CPU or core in a multicore system.
*/
// @unit(number)
required int32 index = 1;
/**
* Total time spent by this CPU so far in any mode including idle.
*/
// @unit(number)
required uint64 total = 100;
/**
* Time spent idle.
*/
// @unit(number)
required uint64 idle = 5;
/**
* Time spent in user mode.
*/
// @unit(number)
optional uint64 user = 2;
/**
* Time spent in user mode with nice (low) priority.
*/
// @unit(number)
optional uint64 user_low = 3;
/**
* Time spent in system mode.
*/
// @unit(number)
optional uint64 system = 4;
/**
* Time spent waiting for IO to complete.
*/
// @unit(number)
optional uint64 iowait = 6;
/**
* Time spent servicing interrupts.
*/
// @unit(number)
optional uint64 irq = 7;
/**
* Time spent servicing softirqs.
*/
// @unit(number)
optional uint64 softirq = 8;
/**
* Time spent in another operating system in case of a virtualized system.
*/
// @unit(number)
optional uint64 steal = 9;
/**
* Time spent running a virtualized guest.
*/
// @unit(number)
optional uint64 guest = 10;
}
/**
* An entry for each (virtualized) CPU or core of a multicore system.
*/
repeated Cpu cpus = 20;
/**
* Load average for one minute as defined by the linux kernel, e.g. in
* man proc:
* The first three fields in this file are load average figures giving the
* number of jobs in the run queue (state R) or waiting for disk I/O
* (state D) averaged over 1, 5, and 15 minutes
*/
// @unit(number)
// @constraint(value>=0)
optional float load_1 = 40;
/**
* Load average for 5 minutes as defined by the linux kernel, e.g. in
* man proc:
* The first three fields in this file are load average figures giving the
* number of jobs in the run queue (state R) or waiting for disk I/O
* (state D) averaged over 1, 5, and 15 minutes
*/
// @unit(number)
// @constraint(value>=0)
optional float load_5 = 41;
/**
* Load average for 15 minute as defined by the linux kernel, e.g. in
* man proc:
* The first three fields in this file are load average figures giving the
* number of jobs in the run queue (state R) or waiting for disk I/O
* (state D) averaged over 1, 5, and 15 minutes
*/
// @unit(number)
// @constraint(value>=0)
optional float load_15 = 42;
}
Message Cpu¶
-
class
rst.devices.generic.CpuState.
Cpu
¶ Measurements for a single CPU in the system.
The supported detailed fields for each CPU vary with different Kernel versions. In oder to calculate at least a valid load of the CPU, minimally total and idle need to be given. Hence, they are required fields. Ideally,
idle
+ all other detail fields should sum up to the total value.With each new measurement all counters must fulfill the condition new value >= previous value. I.e. these are ever-increasing numbers and differences need to be calculated to find out the current system statistics.
All values are measured in abstract ticks of a fixed length. This length is specified <Could not resolve reference to CpuState.jiffy_length> .
-
index
¶ Type: INT32
Unit: number
Identifier for the respective CPU or core in a multicore system.
-
total
¶ Type: UINT64
Unit: number
Total time spent by this CPU so far in any mode including idle.
-
idle
¶ Type: UINT64
Unit: number
Time spent idle.
-
user
¶ Type: UINT64
Unit: number
Time spent in user mode.
-
user_low
¶ Type: UINT64
Unit: number
Time spent in user mode with nice (low) priority.
-
system
¶ Type: UINT64
Unit: number
Time spent in system mode.
-
iowait
¶ Type: UINT64
Unit: number
Time spent waiting for IO to complete.
-
irq
¶ Type: UINT64
Unit: number
Time spent servicing interrupts.
-
softirq
¶ Type: UINT64
Unit: number
Time spent servicing softirqs.
-
steal
¶ Type: UINT64
Unit: number
Time spent in another operating system in case of a virtualized system.
-
guest
¶ Type: UINT64
Unit: number
Time spent running a virtualized guest.
-
message Cpu {
/**
* Identifier for the respective CPU or core in a multicore system.
*/
// @unit(number)
required int32 index = 1;
/**
* Total time spent by this CPU so far in any mode including idle.
*/
// @unit(number)
required uint64 total = 100;
/**
* Time spent idle.
*/
// @unit(number)
required uint64 idle = 5;
/**
* Time spent in user mode.
*/
// @unit(number)
optional uint64 user = 2;
/**
* Time spent in user mode with nice (low) priority.
*/
// @unit(number)
optional uint64 user_low = 3;
/**
* Time spent in system mode.
*/
// @unit(number)
optional uint64 system = 4;
/**
* Time spent waiting for IO to complete.
*/
// @unit(number)
optional uint64 iowait = 6;
/**
* Time spent servicing interrupts.
*/
// @unit(number)
optional uint64 irq = 7;
/**
* Time spent servicing softirqs.
*/
// @unit(number)
optional uint64 softirq = 8;
/**
* Time spent in another operating system in case of a virtualized system.
*/
// @unit(number)
optional uint64 steal = 9;
/**
* Time spent running a virtualized guest.
*/
// @unit(number)
optional uint64 guest = 10;
}
Message MemoryState¶
-
class
rst.devices.generic.
MemoryState
¶ Usage information about the system memory of a processing node.
Code author: Jens-Christian Seele <jseele@techfak.uni-bielefeld.de>
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
Code author: Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
@create_collection
-
total
¶ Type: FLOAT32
Unit: byte
Constraint:
value>=0
The total amount of system memory available.
-
used
¶ Type: FLOAT32
Unit: byte
Constraint:
0<=value<=.total
The currently used amount of memory. This includes everything including cached memory etc. Stated the other way around,
total
- <Could not resolve reference to .free> must result in the amount of memory currently being completely unused.
-
usable
¶ Type: UINT64
Unit: byte
Constraint:
0<=value<=.total
The amount of working memory that can be used by processes without swapping, either because it is directly free or it can be reclaimed.
-
swap_total
¶ Type: UINT64
Unit: byte
Constraint:
value>=0
The amount of swap space available.
-
swap_used
¶ Type: UINT64
Unit: byte
Constraint:
0<=value<=.swap_total
The amount of swap space currently being used.
-
message MemoryState {
/**
* The total amount of system memory available.
*/
// @unit(byte)
// @constraint(value>=0)
optional float total = 2;
/**
* The currently used amount of memory. This includes everything including
* cached memory etc. Stated the other way around, @ref .total - @ref .free
* must result in the amount of memory currently being completely unused.
*/
// @unit(byte)
// @constraint(0<=value<=.total)
optional float used = 3;
/**
* The amount of working memory that can be used by processes without
* swapping, either because it is directly free or it can be reclaimed.
*/
// @unit(byte)
// @constraint(0<=value<=.total)
optional uint64 usable = 4;
/**
* The amount of swap space available.
*/
// @unit(byte)
// @constraint(value>=0)
optional uint64 swap_total = 5;
/**
* The amount of swap space currently being used.
*/
// @unit(byte)
// @constraint(0<=value<=.swap_total)
optional uint64 swap_used = 6;
}
Message BatteryState¶
-
class
rst.devices.generic.
BatteryState
¶ Provides information about the state of a single battery.
Code author: Jens-Christian Seele <jseele@techfak.uni-bielefeld.de>
@create_collection
-
current
¶ Type: FLOAT32
Unit: ampere
Indicates the electrical current draining or charging the battery at the moment.
Negative currents indicate discharging of the battery, positive ones indicate an attached charger.
-
charge_level
¶ Type: FLOAT32
Unit: number
Constraint:
0<=value<=1
Indicates the current charging level of the battery, where 1 means full and 0 indicates completely empty.
-
battery_temperature
¶ Type: FLOAT32
Unit: degree-celsius
The temperature of the battery.
-
message BatteryState {
/**
* Indicates the electrical current draining or charging the battery at the
* moment.
*
* Negative currents indicate discharging of the battery, positive ones
* indicate an attached charger.
*/
// @unit(ampere)
optional float current = 1;
/**
* Indicates the current charging level of the battery, where 1 means full
* and 0 indicates completely empty.
*/
// @unit(number)
// @constraint(0<=value<=1)
required float charge_level = 2;
/**
* The temperature of the battery.
*/
// @unit(degree-celsius)
optional float battery_temperature = 3;
}