Skip to main content

Comprehensive and concise system information querying tool.

Project description

Comprehensive and concise system information querying tool.

package version from PyPI build status from GitHub test coverage from Codecov grade from Codacy license

The goal is to gather all relevant:

  • hardware information (processors, accelerators, memory, networks, drives)

  • static operating system information (name, version, hostname)

  • runtime information (environment, libraries, system load, etc.)

and provide them in a concise form that’s both machine- and human-readable.

Another important goal is to also be fail-safe, even with unexpected hardware configurations, low-level tool errors and deal with incomplete information.

You can use system-query as a library and as a command-line tool.

Motivation

Where am I running?

One of the main motivations for creating system-query is to assist with answering the question “what is the actual hardware and software configuration of the system I’m using?” regardless of the official specification.

How to rerun this experiment?

The system-query was also created to assist with the computational experiment reproducibility and verification of results. Only if you know exactly where you ran your experiment, you can reason about its results and be able to reproduce them.

Using

Installing system-query doesn’t enable all the features by default. Some of the query functions will work only on some systems. To attempt installation with all features enables, run pip3 install system-query[all]. If something brakes, you can narrow down the features by typing a feature scope instead of all. You can choose from cpu, gpu, hdd, ram and swap. E.g. pip3 install system-query[gpu]. You can also select more than one feature at the same time, e.g. pip3 install system-query[cpu,hdd,ram].

As library

In [1]: from system_query import query_cpu
        query_cpu()

Out[1]: {'brand': 'Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz',
         'clock': 1771.0370000000003,
         'clock_max': 3900.0,
         'clock_min': 1600.0,
         'logical_cores': 8,
         'physical_cores': 4}

More examples in examples.ipynb.

system_query.query_all()

This will launch all below functions and assemble results into a dictionary.

system_query.query_cpu()

To be able to see details like cache size, clock speed and core counts, install Python packages pint and psutil.

system_query.query_gpus()

To be able to see GPUs in the system, make sure you have CUDA installed and install Python package pycuda.

system_query.query_hdds()

To be able to see HDDs in the system, make sure you have libudev installed and install Python package pyudev.

system_query.query_ram()

To be able to see amount of memory, install Python package psutil.

system_query.query_software()

This will attempt to gather version information of various common programs, assuming their executables are in system path.

system_query.query_swap()

To be able to see amount of swap space, install Python package psutil.

In [9]: system_query.query_swap()
Out[9]: {'total': 0}

As command-line tool

Below will run system_query.query_all() and output results to stdout:

$ python3 -m system_query
{'cpu': {'brand': 'Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz',
         'clock': 1725.031125,
         'clock_max': 3900.0,
         'clock_min': 1600.0,
         'logical_cores': 8,
         'physical_cores': 4},
 'gpus': [],
 'host': 'TestMachine',
 'os': 'Linux-4.4.0-109-generic-x86_64-with-debian-stretch-sid',
 'ram': {'total': 33701269504},
 'swap': {'total': 0}}

Please use -h to see usage information:

$ python3 -m system_query -h
usage: system_query [-h] [-s {all,cpu,gpu,ram,swap}] [-f {raw,json}]
                    [-t TARGET] [--version]

Comprehensive and concise system information tool. Query a given hardware
and/or software scope of your system and get results in human- and machine-
readable formats.

optional arguments:
  -h, --help            show this help message and exit
  -s {all,cpu,gpu,ram,swap}, --scope {all,cpu,gpu,ram,swap}
                        Scope of the query (default: all)
  -f {raw,json}, --format {raw,json}
                        Format of the results of the query. (default: raw)
  -t TARGET, --target TARGET
                        File path where to write the results of the query.
                        Special values: "stdout" and "stderr" to write to
                        stdout and stderr, respectively. (default: stdout)
  --version             show program's version number and exit

Copyright 2017-2023 by the contributors, Apache License 2.0,
https://github.com/mbdevpl/system-query

Requirements

Python version 3.9 or later.

Python libraries as specified in requirements.txt. Recommended (but optional) packages are listed in requirements_optional.txt.

Building and running tests additionally requires packages listed in requirements_test.txt.

Tested on Linux, macOS and Windows.

Additionally, for all features to work you should have the following libraries installed in your system:

  • CUDA

  • libudev

Contributors

Aleksandr Drozd

Emil Vatai

Mateusz Bysiek

For licensing information, please see LICENSE and NOTICE.

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

system_query-0.4.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

system_query-0.4.0-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file system_query-0.4.0.tar.gz.

File metadata

  • Download URL: system_query-0.4.0.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for system_query-0.4.0.tar.gz
Algorithm Hash digest
SHA256 7d20dd357b66391d2006b5de35eda09c8d7c5c268b7d262e8427556f33097412
MD5 b573dd2cddea0390ea30b8e15ced6871
BLAKE2b-256 5c6312dfe44f6bc0f3c6ae669ae98cd8de3822465c1e3c0c89eb08b1bc45cabf

See more details on using hashes here.

File details

Details for the file system_query-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: system_query-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for system_query-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6830b9f05abb5a51fd7001006fe5322c59d47180f576aedf2352d29f79ef6875
MD5 a308178af31d994f37bf5cc7bd803f88
BLAKE2b-256 dff576087853d213fd18812ab3e376b4dab1d513417cd7375073c78ef2dd4eca

See more details on using hashes here.

Supported by

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