nikeshn commited on
Commit
4bcb970
·
verified ·
1 Parent(s): 18f3a52

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -6
app.py CHANGED
@@ -1376,14 +1376,30 @@ async def restart_space(request: Request):
1376
  # ---- Status endpoint (no auth needed — for frontend health checks) ----
1377
  @app.get("/status")
1378
  async def get_status():
1379
- import psutil
 
1380
  try:
1381
- mem = psutil.virtual_memory()
1382
- mem_used_mb = round((mem.total - mem.available) / 1024 / 1024)
1383
- mem_total_mb = round(mem.total / 1024 / 1024)
1384
- mem_pct = round(mem.percent)
 
 
 
 
 
1385
  except:
1386
- mem_used_mb = mem_total_mb = mem_pct = 0
 
 
 
 
 
 
 
 
 
 
1387
 
1388
  kb_files = glob.glob(os.path.join(KNOWLEDGE_DIR, "*.txt"))
1389
  chunks = vectorstore.index.ntotal if vectorstore else 0
 
1376
  # ---- Status endpoint (no auth needed — for frontend health checks) ----
1377
  @app.get("/status")
1378
  async def get_status():
1379
+ # Read container-level memory from /sys/fs/cgroup (accurate for HF Spaces)
1380
+ # psutil reads the host machine memory which is misleading on shared containers
1381
  try:
1382
+ # cgroup v2 (HF Spaces uses this)
1383
+ with open('/sys/fs/cgroup/memory.current') as f:
1384
+ mem_used_bytes = int(f.read().strip())
1385
+ with open('/sys/fs/cgroup/memory.max') as f:
1386
+ val = f.read().strip()
1387
+ mem_total_bytes = int(val) if val != 'max' else 16 * 1024**3 # 16GB default
1388
+ mem_used_mb = round(mem_used_bytes / 1024 / 1024)
1389
+ mem_total_mb = round(mem_total_bytes / 1024 / 1024)
1390
+ mem_pct = round(mem_used_bytes / mem_total_bytes * 100)
1391
  except:
1392
+ # Fallback: try cgroup v1
1393
+ try:
1394
+ with open('/sys/fs/cgroup/memory/memory.usage_in_bytes') as f:
1395
+ mem_used_bytes = int(f.read().strip())
1396
+ with open('/sys/fs/cgroup/memory/memory.limit_in_bytes') as f:
1397
+ mem_total_bytes = int(f.read().strip())
1398
+ mem_used_mb = round(mem_used_bytes / 1024 / 1024)
1399
+ mem_total_mb = round(mem_total_bytes / 1024 / 1024)
1400
+ mem_pct = round(mem_used_bytes / mem_total_bytes * 100)
1401
+ except:
1402
+ mem_used_mb = mem_total_mb = mem_pct = 0
1403
 
1404
  kb_files = glob.glob(os.path.join(KNOWLEDGE_DIR, "*.txt"))
1405
  chunks = vectorstore.index.ntotal if vectorstore else 0