RoboMetrics
RoboMetrics is a Python library for measuring system resources. Specially focused on CPU, Memory and GPU usage. It is designed to be used in a wide range of applications, from monitoring system resources to testing and benchmarking.
Goals of RoboMetrics:
- Provide a simple way to measure resources without losing data in the process.
- Be able to measure resources in real-time.
- Interconnect workers in a network.
Installation
To install the client install it via pip:
pip install roborregos-metrics-client
To install the server:
pip install roborregos-metrics-server
Architecture
RoboMetrics is designed to be modular, extensible and distributed. It is composed of four main components:
- Process: This represent your normal Python/C++ process/application. Inn order to measure its resources, you only need to import the
robometrics.lib.registermodule and callregister.
from robometrics.lib.register import Register
Register.async_auto_register() # Recomended for non-blocking calls
Register.auto_unregister()
- Workers: The worker is a module made to run in the background in a host machine. The worker is responsible for collecting data from the registered processes and sending it to the intake server (or in its defect, save the data locally).
To start a worker, you only need to run the entry point robometrics.worker.worker.
robometrics-worker
- Intake Server: The intake server is a server that receives data from the workers and stores it in a database. The server is responsible for managing the data and providing an API to access it.
The current implementation relies on a mongo database, but can be worked towards a more general solution. There is a docker-compose file that can be used to start the db.
To start the server, you only need to run the entry point robometrics.server.server.
robometrics-server
- RoboMetrics-Viz: The visualization module is a web application that connects to the intake server and displays the data in a user-friendly way. The web application is built using Next.js and Vega-Lite.
Refer to the viz repo: RoboMetrics-Viz
Recomendations
The modules are pretend to used in a robotics enviroment or a distributed system. This way each host sould be responsible to run a worker and a process. The intake server can be run in a central server or in a server that is always on. (Other alternative is to run the worker and process without a central server and run robometrics-sync to sync the data to a central server)
Release files for roborregos-metrics-server 0.1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| roborregos-metrics-server-0.1.0.4.tar.gz | 9.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| roborregos_metrics_server-0.1.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.8 kB
Release files / roborregos-metrics-server-0.1.0.4.tar.gz
| Download URL | roborregos-metrics-server-0.1.0.4.tar.gz |
|---|---|
| Size | 9.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f3c8caee6dc06e73ed9c3b0348cd20ec78ba5f1d387718783c47c2888891ce79
|
|
BLAKE2b-256 checksum How to use checksums |
7168dfab5fceec6142f69114e094ba587db0a46bf69ab7e15a0ffd66dc31219f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / roborregos_metrics_server-0.1.0.4-py3-none-any.whl
| Download URL | roborregos_metrics_server-0.1.0.4-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad3109c89f3aa3116a42aaa15a870bdda9c4b23adc7c73ceafdef4ed01a5c2aa
|
|
BLAKE2b-256 checksum How to use checksums |
b8b114650e59ae9542d319e87fc68bb78c2263e1ab5a99d850fbf3d69fb5edf7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|