diff --git a/Merge/back_rhj/app/__pycache__/__init__.cpython-310.pyc b/Merge/back_rhj/app/__pycache__/__init__.cpython-310.pyc
index bc775fd..08f5017 100644
--- a/Merge/back_rhj/app/__pycache__/__init__.cpython-310.pyc
+++ b/Merge/back_rhj/app/__pycache__/__init__.cpython-310.pyc
Binary files differ
diff --git a/Merge/back_rhj/app/__pycache__/routes.cpython-310.pyc b/Merge/back_rhj/app/__pycache__/routes.cpython-310.pyc
index f5aa9b3..46bb4b4 100644
--- a/Merge/back_rhj/app/__pycache__/routes.cpython-310.pyc
+++ b/Merge/back_rhj/app/__pycache__/routes.cpython-310.pyc
Binary files differ
diff --git a/Merge/back_rhj/app/models/__pycache__/gpu_usage.cpython-310.pyc b/Merge/back_rhj/app/models/__pycache__/gpu_usage.cpython-310.pyc
new file mode 100644
index 0000000..79f092a
--- /dev/null
+++ b/Merge/back_rhj/app/models/__pycache__/gpu_usage.cpython-310.pyc
Binary files differ
diff --git a/Merge/back_rhj/app/models/gpu_usage.py b/Merge/back_rhj/app/models/gpu_usage.py
new file mode 100644
index 0000000..0ac5cfa
--- /dev/null
+++ b/Merge/back_rhj/app/models/gpu_usage.py
@@ -0,0 +1,18 @@
+from sqlalchemy import Column, Integer, DECIMAL, TIMESTAMP, text
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.sql import func
+
+Base = declarative_base()
+
+class GpuUsage(Base):
+    __tablename__ = 'gpu_usage'
+    __table_args__ = {
+        'mysql_engine': 'InnoDB',
+        'mysql_charset': 'utf8mb4',
+        'comment': 'GPU 使用情况表'
+    }
+    
+    gpu_id = Column(Integer, primary_key=True, nullable=False, comment='GPU 编号')
+    gpu_usage = Column(DECIMAL(5, 2), nullable=False, comment='GPU 使用率，单位：百分比')
+    gpu_memory_usage = Column(Integer, nullable=False, comment='GPU 内存用量，单位：MB')
+    created_at = Column(TIMESTAMP, nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='记录时间戳')
diff --git a/Merge/back_rhj/app/models/recall/__pycache__/swing_recall.cpython-310.pyc b/Merge/back_rhj/app/models/recall/__pycache__/swing_recall.cpython-310.pyc
index 5cd2aee..f50ef90 100644
--- a/Merge/back_rhj/app/models/recall/__pycache__/swing_recall.cpython-310.pyc
+++ b/Merge/back_rhj/app/models/recall/__pycache__/swing_recall.cpython-310.pyc
Binary files differ
diff --git a/Merge/back_rhj/app/routes.py b/Merge/back_rhj/app/routes.py
index 6f159ca..0b60624 100644
--- a/Merge/back_rhj/app/routes.py
+++ b/Merge/back_rhj/app/routes.py
@@ -2,6 +2,7 @@
 from .functions.FAuth import FAuth
 from app.services.recommendation_service import RecommendationService
 from app.utils.graph_build import build_user_post_graph
+from app.utils.gpuwriter import GpuWriter
 from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker
 from config import Config
@@ -409,3 +410,37 @@
             'success': False, 
             'message': f'推荐获取失败: {str(e)}'
         }), 500
+
+@main.route('/gpu-usage', methods=['GET'])
+@token_required
+def get_gpu_usage(current_user):
+    """获取最新GPU使用情况接口"""
+    try:
+        limit = request.args.get('limit', 100, type=int)
+        
+        # 限制最大获取条数
+        if limit > 1000:
+            limit = 1000
+            
+        print(f"获取最新 {limit} 条GPU使用记录")
+        
+        # 创建GpuWriter实例并获取数据
+        gpu_writer = GpuWriter(Config.SQLURL)
+        gpu_records = gpu_writer.get_latest_gpu_usage(limit)
+        
+        return jsonify({
+            'success': True,
+            'data': {
+                'records': gpu_records,
+                'count': len(gpu_records),
+                'limit': limit
+            },
+            'message': 'GPU使用情况获取成功'
+        }), 200
+        
+    except Exception as e:
+        print(f"获取GPU使用情况错误: {str(e)}")
+        return jsonify({
+            'success': False, 
+            'message': f'获取GPU使用情况失败: {str(e)}'
+        }), 500
diff --git a/Merge/back_rhj/app/services/__pycache__/lightgcn_scorer.cpython-310.pyc b/Merge/back_rhj/app/services/__pycache__/lightgcn_scorer.cpython-310.pyc
index 495528d..c98aaf5 100644
--- a/Merge/back_rhj/app/services/__pycache__/lightgcn_scorer.cpython-310.pyc
+++ b/Merge/back_rhj/app/services/__pycache__/lightgcn_scorer.cpython-310.pyc
Binary files differ
diff --git a/Merge/back_rhj/app/services/__pycache__/recommendation_service.cpython-310.pyc b/Merge/back_rhj/app/services/__pycache__/recommendation_service.cpython-310.pyc
index 88ab960..1424b42 100644
--- a/Merge/back_rhj/app/services/__pycache__/recommendation_service.cpython-310.pyc
+++ b/Merge/back_rhj/app/services/__pycache__/recommendation_service.cpython-310.pyc
Binary files differ
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()
