- Add database migrations (006-028) for face recognition, identity, file_uuid - Add test scripts for ASR, face, search, processing - Add portal frontend (Tauri) - Add config, benchmark, and monitoring utilities - Add model checkpoints and pretrained model references
129 lines
4.3 KiB
Python
129 lines
4.3 KiB
Python
#!/opt/homebrew/bin/python3.11
|
||
"""
|
||
快速状态检查
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import time
|
||
import psutil
|
||
from datetime import datetime
|
||
|
||
|
||
def quick_check():
|
||
print("=" * 60)
|
||
print("快速状态检查")
|
||
print(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||
print("=" * 60)
|
||
|
||
# 系统负载
|
||
load = os.getloadavg()
|
||
cpu = psutil.cpu_percent(interval=1)
|
||
mem = psutil.virtual_memory()
|
||
|
||
print(f"\n📊 系统状态:")
|
||
print(f" 负载: {load[0]:.2f} (1min), {load[1]:.2f} (5min), {load[2]:.2f} (15min)")
|
||
print(f" CPU: {cpu:.1f}%")
|
||
print(
|
||
f" 内存: {mem.percent:.1f}% ({mem.used / (1024**3):.1f}GB / {mem.total / (1024**3):.1f}GB)"
|
||
)
|
||
|
||
# 检查处理器进程
|
||
print(f"\n🔍 处理器进程:")
|
||
|
||
processor_counts = {}
|
||
high_cpu_processes = []
|
||
|
||
for proc in psutil.process_iter(["pid", "name", "cmdline", "cpu_percent"]):
|
||
try:
|
||
cmdline = " ".join(proc.info["cmdline"]) if proc.info["cmdline"] else ""
|
||
cpu = proc.info.get("cpu_percent", 0)
|
||
|
||
# 检查各种处理器
|
||
if "asr_processor" in cmdline:
|
||
processor_counts["asr"] = processor_counts.get("asr", 0) + 1
|
||
if cpu > 50:
|
||
high_cpu_processes.append(f"ASR PID {proc.pid}: {cpu:.1f}%")
|
||
elif "cut_processor" in cmdline:
|
||
processor_counts["cut"] = processor_counts.get("cut", 0) + 1
|
||
if cpu > 50:
|
||
high_cpu_processes.append(f"CUT PID {proc.pid}: {cpu:.1f}%")
|
||
elif "ocr_processor" in cmdline:
|
||
processor_counts["ocr"] = processor_counts.get("ocr", 0) + 1
|
||
elif "yolo_processor" in cmdline:
|
||
processor_counts["yolo"] = processor_counts.get("yolo", 0) + 1
|
||
elif "face_processor" in cmdline:
|
||
processor_counts["face"] = processor_counts.get("face", 0) + 1
|
||
elif "pose_processor" in cmdline:
|
||
processor_counts["pose"] = processor_counts.get("pose", 0) + 1
|
||
|
||
except (psutil.NoSuchProcess, psutil.AccessDenied):
|
||
continue
|
||
|
||
# 显示处理器计数
|
||
for proc_type, count in processor_counts.items():
|
||
print(f" {proc_type.upper()}: {count} 个进程")
|
||
|
||
# 显示高CPU进程
|
||
if high_cpu_processes:
|
||
print(f"\n⚠️ 高CPU进程:")
|
||
for proc_info in high_cpu_processes[:5]: # 只显示前5个
|
||
print(f" {proc_info}")
|
||
if len(high_cpu_processes) > 5:
|
||
print(f" ... 还有 {len(high_cpu_processes) - 5} 个高CPU进程")
|
||
|
||
# 检查输出目录
|
||
output_dir = "/Users/accusys/momentry/output"
|
||
if os.path.exists(output_dir):
|
||
asr_files = len(
|
||
[f for f in os.listdir(output_dir) if "_asr_" in f and f.endswith(".json")]
|
||
)
|
||
cut_files = len(
|
||
[f for f in os.listdir(output_dir) if "_cut_" in f and f.endswith(".json")]
|
||
)
|
||
|
||
print(f"\n📁 输出文件:")
|
||
print(f" ASR文件: {asr_files} 个")
|
||
print(f" CUT文件: {cut_files} 个")
|
||
|
||
# 状态总结
|
||
print(f"\n📈 状态总结:")
|
||
|
||
if load[0] > 8:
|
||
print(f" ⚠️ 系统负载很高 ({load[0]:.2f})")
|
||
if processor_counts.get("asr", 0) > 0 or processor_counts.get("cut", 0) > 0:
|
||
print(f" 可能原因: ASR/CUT 视频处理中")
|
||
elif load[0] > 4:
|
||
print(f" ℹ️ 系统负载中等 ({load[0]:.2f})")
|
||
else:
|
||
print(f" ✅ 系统负载正常 ({load[0]:.2f})")
|
||
|
||
if mem.percent > 90:
|
||
print(f" ⚠️ 内存使用率很高 ({mem.percent:.1f}%)")
|
||
elif mem.percent > 80:
|
||
print(f" ℹ️ 内存使用率较高 ({mem.percent:.1f}%)")
|
||
else:
|
||
print(f" ✅ 内存使用率正常 ({mem.percent:.1f}%)")
|
||
|
||
# 建议
|
||
print(f"\n💡 建议:")
|
||
if processor_counts.get("asr", 0) > 0 or processor_counts.get("cut", 0) > 0:
|
||
print(f" 1. ASR/CUT 处理进行中,建议等待完成")
|
||
print(f" 2. 处理完成后系统负载会恢复正常")
|
||
else:
|
||
print(f" 1. 没有运行中的处理器,可以继续下一步工作")
|
||
|
||
print(f"\n⏱️ 检查完成")
|
||
print("=" * 60)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
try:
|
||
quick_check()
|
||
except KeyboardInterrupt:
|
||
print(f"\n检查被中断")
|
||
sys.exit(0)
|
||
except Exception as e:
|
||
print(f"\n错误: {e}")
|
||
sys.exit(1)
|