Skip to main content

Linux system information library

Project description

sysutil-lib

  • Linux system information library

Warning

  • this library is ment to be used only in linux systems
  • it is possible to write code using it on other systems, but it will not allow to run the code, raising an exception before execution

Other implementations

  • this library is also available for Rust
  • check it out at crates.io

Importation

import sysutil

Data structures

ProcessorUsage

class ProcessorUsage:
    total: float
    user: float
    nice: float
    system: float
    idle: float
    iowait: float
    interrupt: float
    soft_interrupt: float
  • data structure which encloses the different parameters relative to processor usage

CpuUsage

class CpuUsage:
    average: ProcessorUsage
    processors: [ProcessorUsage]
  • contains the average CPU usage, and the specific usage for each processor

CpuInfo

class CpuInfo:
    modelName: str
    cores: int
    threads: int
    dies: int
    governors: [str]
    maxFrequencyMHz: float
    clockBoost: bool
    architecture: str
    byteOrder: str
  • contains base information relative to the CPU

SchedulerPolicy

class SchedulerPolicy:
    name: str
    scalingGovernor: str
    scalingDriver: str
    minimumScalingMHz: float
    maximumScalingMHz: float
  • contains scheduler information relative to a processor in your system

RamSize

class RamSize:
    gb: float
    gib: float
  • contains total ram size, both in GB (1000^3 bytes) and GiB (1024^3 bytes)

NetworkRate

class NetworkRate:
    download: float
    upload: float
  • contains total upload and download network rate (in bytes)

TemperatureSensor

class TemperatureSensor:
    label: str
    temperature: float
  • contains sensor name (label) and the recorded temperature

Battery

class Battery:
    capacity: int
    status: str
  • contains capacity and status of battery

VramSize

class VramSize:
    gb: float
    gib: float
  • contains total gpu's vram size, both in GB (1000^3 bytes) and GiB (1024^3 bytes)

RouteType

class RouteType:
    TCP = 'tcp'
    TCP6 = 'tcp6'
    UDP = 'udp'
    UDP6 = 'udp6'

RouteStatus

class RouteStatus:
    ESTABLISHED = 'established'
    SYN_SENT = 'syn sent'
    SYN_RECEIVED = 'syn received'
    FIN_WAIT1 = 'fin wait 1'
    FIN_WAIT2 = 'fin wait 2'
    TIME_WAIT = 'time wait'
    CLOSED = 'closed'
    CLOSE_WAIT = 'close wait'
    LAST_ACKNOWLEDGEMENT = 'last acknowledgement'
    LISTENING = 'listening'
    CLOSING = 'closing'
    NEW_SYN_RECEIVED = 'new syn received'

NetworkRoute

class NetworkRoute:
    routeType: str
    localAddress: str
    localPort: int
    remoteAddress: str
    remotePort: int
    routeStatus: str 
  • represents a network route

CPU

class CPU:
    info: CpuInfo
    averageUsage: ProcessorUsage
    perProcessorUsage: [ProcessorUsage]
    schedulerPolicies: [SchedulerPolicy]
  • encloses all cpu data available in the library

Methods

cpu = CPU()
  • standard constructor
cpu = CPU()

cpu.update()
  • update() method updates usages and scheduler status

Clocksource

class ClockSource:
    current: str
    available: [str]
  • contains current clock source and the available ones

Bios

class Bios:
    vendor: str
    release: str
    version: str
    date: str
  • contains information relative to the installed bios

Motherboard

class Motherboard:
    name: str
    vendor: str
    version: str
    bios: Bios
  • contains information relative to the motherboard and the installed bios

GpuMetrics

class GpuMetrics:
    temperatureEdge: int
    temperatureHotspot: int
    temperatureMem: int
    temperatureVrgfx: int
    temperatureVrsoc: int
    temperatureVrmem: int
    averageSocketPower: int
    averageGfxclkFrequency: int
    averageSockclkFrequency: int
    averageUclkFrequency: int
    currentGfxclk: int
    currentSockclk: int
    throttleStatus: int
    currentFanSpeed: int
    pcieLinkWidth: int
    pcieLinkSpeed: int
  • encloses gpu metrics parameters

Bytesize

class ByteSize:
    __bytes: int
  • Bytes size data structure implementing methods to convert in various size orders

NvmeDevice

class NvmeDevice:
    device: str
    pcieAddress: str
    model: str
    linkSpeedGTs: float
    pcieLanes: int
    size: ByteSize
    partitions: [StoragePartition]
  • Contains NVME device information

StoragePartition

class StoragePartition:
    device: str
    mountPoint: str
    filesystem: str
    size: ByteSize
    startPoint: str
  • Encloses device name, size and startpoint relative to a partition

StorageDevice

class StorageDevice:
    model: str
    device: str
    size: ByteSize
    partitions: [StoragePartition]
  • Contains information relative to a storage device in the system

Frequency

class Frequency:
    _khz: float
  • Contains frequency value in kHz, implements conversion methods for kHz, MHz, GHz

ProcessorFrequency

class ProcessorFrequency:
    processorID: str
    frequency: Frequency
  • Contains processor id and its frequency

CpuFrequency

class CpuFrequency:
    average: Frequency
    processors: [ProcessorFrequency]
  • Contains cpu frequency, both average and processor wise

Backlight

class Backlight:
    brightness: int
    maxBrightness: int
  • Holds information about backlight

Load

class Load:
    oneMinute: int
    fiveMinutes: int
    fifteenMinutes: int
  • holds load values

IPv4

class IPv4:
    address: str
    interface: str
    broadcast: str
    cidr: int
    netmask: str
  • contains the various parameters for an IPv4 address in the system

BusInput

class BusInput:
    bus: int
    vendor: int
    product: int
    version: int
    name: str
    physicalPath: str
    sysfsPath: str
    uniqueIdentifier: str
    handles: [str]
    properties: int
    events: int
    keys: [str]
    miscellaneousEvents: int
    led: int
  • contains the information regarding a bus input

Functions

def cpuUsage() -> CpuUsage
  • returns the cpu usage, both average and processor-wise, all the values are percentage
def cpuFrequency() -> CpuFrequency
  • returns CPU frequency, both average and processor wise
def ramUsage() -> float
  • returns ram usage percentage
def networkRate() -> NetworkRate
  • returns network rate (download and upload), expressed in bytes
def temperatureSensors() -> [TemperatureSensor]
  • returns every temperature sensor in TemperatureSensor format
def cpuInfo() -> CpuInfo
  • returns the cpu base information, enclosed in the CpuInfo data structure
def ramSize() -> RamSize
  • returns ram size as specified in the RamSize data structure
def schedulerInfo() -> [SchedulerPolicy]
  • returns scheduler information for each processor
def gpuUsage() -> float
  • returns gpu usage percentage
  • yet tested only on AMD 7000 series GPUs, returns None in case it's not capable to retrieve information
def batteryInfo() -> Battery 
  • returns battery status and capacity
def vramSize() -> VramSize
  • returns vram size as specified in the VramSize data structure
def vramUsage() -> float
  • returns vram usage percentage
def networkRoutes() -> [NetworkRoute]
  • returns a list containing each internal network route
def clockSource() -> ClockSource
  • returns the currently active clock source and the different ones available, enclosed in ClockSource struct
def biosInfo() -> Bios
  • returns information about the currently installed BIOS
def motherboardInfo() -> Motherboard
  • returns information about the motherboard
def gpuMetrics() -> GpuMetrics
  • returns metrics parameters from the amdgpu driver
def nvmeDevices() -> [NvmeDevices]
  • Returns a vector containing all NVME devices found in the system
def storageDevices() -> [StorageDevices]
  • Returns a vector containing all storage devices (NVME excluded) in the system
def getBacklight() -> Backlight
  • Returns the current backlight brightness and the maximum possible value or None if it's not possible to retrieve data
def getLoad() -> Load 
  • returns the load for the past one, five and fifteen minutes
def getIPv4() -> [IPv4]
  • returns a list of IPv4 object; each one is related to an IPv4 address in the system
def busInput() -> [BusInput]
  • returns a list of BusInput objects, representing the bus inputs found in procfs
def exportJson() -> dict
  • returns a dict containing all the information which sysutil can provide

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sysutil_lib-0.6.0.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sysutil_lib-0.6.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file sysutil_lib-0.6.0.tar.gz.

File metadata

  • Download URL: sysutil_lib-0.6.0.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for sysutil_lib-0.6.0.tar.gz
Algorithm Hash digest
SHA256 f2a77afc0d9fb325b4575bad777650f31caea0c83681ccb74b9ec20488e9750a
MD5 4ba96ffba7b18a85957e5fe995625a07
BLAKE2b-256 0d587e716ab37a9507800743726eb7172399c42f84b68483116c62e885580055

See more details on using hashes here.

File details

Details for the file sysutil_lib-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: sysutil_lib-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for sysutil_lib-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b8c69a92116c2a7329717083fdd69931e1172da217622b875853f1067ea3b3d4
MD5 8d07b099f25ef41effc042b84247f7b0
BLAKE2b-256 0adea6f5a68102c633775a1d37d2ad4d1c755bf28dffa82d2bd9c91609696ae6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page