add gpuusage的逻辑
Change-Id: Ie1634a7d58ab94b05a3ebd7de87d362ca9be2286
diff --git a/Merge/back_rhj/app/utils/__pycache__/gpuwriter.cpython-310.pyc b/Merge/back_rhj/app/utils/__pycache__/gpuwriter.cpython-310.pyc
new file mode 100644
index 0000000..f86da67
--- /dev/null
+++ b/Merge/back_rhj/app/utils/__pycache__/gpuwriter.cpython-310.pyc
Binary files differ
diff --git a/Merge/back_rhj/app/utils/gpuwriter.py b/Merge/back_rhj/app/utils/gpuwriter.py
new file mode 100644
index 0000000..1e521f3
--- /dev/null
+++ b/Merge/back_rhj/app/utils/gpuwriter.py
@@ -0,0 +1,68 @@
+from sqlalchemy.orm import sessionmaker
+from sqlalchemy import create_engine
+from app.models.gpu_usage import GpuUsage
+import logging
+
+class GpuWriter:
+ def __init__(self, database_url):
+ """
+ 初始化 GpuWriter
+ :param database_url: 数据库连接URL
+ """
+ self.engine = create_engine(database_url)
+ self.Session = sessionmaker(bind=self.engine)
+
+ def write_gpu_usage(self, gpu_id, gpu_usage, gpu_memory_usage):
+ """
+ 写入GPU使用情况到数据库
+ :param gpu_id: GPU编号
+ :param gpu_usage: GPU使用率(百分比)
+ :param gpu_memory_usage: GPU内存用量(MB)
+ :return: bool 是否写入成功
+ """
+ session = self.Session()
+ try:
+ gpu_record = GpuUsage(
+ gpu_id=gpu_id,
+ gpu_usage=gpu_usage,
+ gpu_memory_usage=gpu_memory_usage
+ )
+ session.add(gpu_record)
+ session.commit()
+ return True
+ except Exception as e:
+ session.rollback()
+ logging.error(f"写入GPU使用情况失败: {e}")
+ return False
+ finally:
+ session.close()
+
+ def get_latest_gpu_usage(self, limit=100):
+ """
+ 获取最新的GPU使用情况记录
+ :param limit: 获取记录条数,默认100条
+ :return: list 包含GPU使用记录的字典列表
+ """
+ session = self.Session()
+ try:
+ records = session.query(GpuUsage)\
+ .order_by(GpuUsage.timestamp.desc())\
+ .limit(limit)\
+ .all()
+
+ result = []
+ for record in records:
+ result.append({
+ 'id': record.id,
+ 'gpu_id': record.gpu_id,
+ 'gpu_usage': record.gpu_usage,
+ 'gpu_memory_usage': record.gpu_memory_usage,
+ 'timestamp': record.timestamp.isoformat() if record.timestamp else None
+ })
+
+ return result
+ except Exception as e:
+ logging.error(f"获取GPU使用情况失败: {e}")
+ return []
+ finally:
+ session.close()