Skip to main content

Track and visualize GPU energy consumption using PyNVML, with MongoDB integration.

Project description

EnergyMonitor

Overview

EnergyMonitor is a Python-based tool that tracks GPU power consumption using NVIDIA Management Library (NVML) and stores energy usage data in a MongoDB database. It allows users to log in, track energy consumption per project, and store run-specific energy data.

Features

  • User Authentication: Secure login using bcrypt.
  • Energy Monitoring: Tracks GPU power usage using NVML.
  • Project-Based Tracking: Associates energy consumption data with different projects.
  • Database Storage: Saves energy consumption history in MongoDB.
  • Automatic Timing: Energy tracking automatically starts and stops when monitoring begins and ends.

Installation Requirements

Before using the tool, install the required dependencies:

pip install pymongo bcrypt pynvml

Ensure you have:

  • A MongoDB database (e.g., MongoDB Atlas or a local instance).
  • NVIDIA GPU and drivers installed.
  • NVML library (included in the NVIDIA drivers).

Usage

1. Import and Initialize

from energy_monitor import EnergyMonitor
monitor = EnergyMonitor()

2. Login

Before tracking energy consumption, log in with:

monitor.login("username", "password")

3. Start Monitoring

Start tracking energy consumption for a specific project:

monitor.start("ProjectName")
  • If the project does not exist, it prompts the user to create one.
  • The timer automatically starts when monitoring begins.

4. Stop Monitoring

To stop tracking and save energy data:

monitor.stop()
  • This automatically calculates the total energy used and duration.
  • Data is stored in the database.

Functions

login(username, password)

Inputs:

  • username (str): The username of the user.
  • password (str): The corresponding password.

Functionality:

  • Authenticates the user with a hashed password.
  • Stores the user ID after successful login.

start(project_name)

Inputs:

  • project_name (str): Name of the project to track energy usage.

Functionality:

  • Initializes GPU energy monitoring.
  • Checks if the project exists; if not, prompts user to create one.
  • Automatically starts the timer when monitoring begins.

stop()

Functionality:

  • Automatically stops the timer and calculates energy consumption.
  • Stores run details like duration, timestamp, and energy used.
  • Saves data in MongoDB.

Database Structure

Each user document in MongoDB follows this structure:

{
    "_id": ObjectId("..."),
    "username": "user123",
    "password": "hashed_password",
    "projects": {
        "ProjectName": {
            "run1": {
                "timestamp": "2025-03-08T12:00:00Z",
                "duration": 3600,
                "energy": 500000,
                "energy_kwh": 0.138
            }
        }
    }
}

Notes

  • Make sure you log in before starting monitoring.
  • Ensure your GPU supports NVML.
  • Timing is handled automatically; no need for manual tracking.

License

This project is open-source. Feel free to modify and extend it!

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

energycnv-1.0.15.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

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

energycnv-1.0.15-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file energycnv-1.0.15.tar.gz.

File metadata

  • Download URL: energycnv-1.0.15.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for energycnv-1.0.15.tar.gz
Algorithm Hash digest
SHA256 f3b6aee166544f1f9e15f6f54ca7f138b2c64f3f06807f5a94df6bcfedbefed2
MD5 09f0721a34ac51815a76d9089e385a1c
BLAKE2b-256 b00f99ee447a12f1f7a62025a5bea88e2b661e9de0e1026c800a3685358ff6ae

See more details on using hashes here.

File details

Details for the file energycnv-1.0.15-py3-none-any.whl.

File metadata

  • Download URL: energycnv-1.0.15-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for energycnv-1.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 df3387a38a4f2381d42b6a10bf20e858096d257d880d85eba5c874e119d518cc
MD5 bfe10d7776d87b0152c2a663bba4a18f
BLAKE2b-256 ea131c85f2b43e11a79e0be9b5df8913e14ad192c9de88a89415e1c1fad84d77

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