690619:0846 239 #02
This commit is contained in:
@@ -83,10 +83,12 @@ export class VramMonitorService {
|
|||||||
this.logger.warn(
|
this.logger.warn(
|
||||||
`Failed to query Ollama /api/ps: ${err instanceof Error ? err.message : String(err)}`
|
`Failed to query Ollama /api/ps: ${err instanceof Error ? err.message : String(err)}`
|
||||||
);
|
);
|
||||||
|
// เปลี่ยนจาก pessimistic (assume all VRAM used) เป็น optimistic (assume no VRAM used)
|
||||||
|
// เพื่อป้องกัน false positive OOM Guard เมื่อ query ล้มเหลวแต่ไม่มี model load จริง
|
||||||
return {
|
return {
|
||||||
totalMb: this.totalVramMb,
|
totalMb: this.totalVramMb,
|
||||||
usedMb: this.totalVramMb, // บังคับให้ used = total เพื่อให้ available = 0
|
usedMb: 0, // สมมติว่าไม่มี model load เมื่อ query ล้มเหลว
|
||||||
availableMb: 0,
|
availableMb: this.totalVramMb,
|
||||||
querySuccess: false,
|
querySuccess: false,
|
||||||
mainModelVramMb: 0,
|
mainModelVramMb: 0,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -150,11 +150,13 @@ describe('VramMonitorService', () => {
|
|||||||
// 8192MB total - 1024MB used = 7168MB free > 4000MB
|
// 8192MB total - 1024MB used = 7168MB free > 4000MB
|
||||||
expect(status.hasCapacity).toBe(true);
|
expect(status.hasCapacity).toBe(true);
|
||||||
});
|
});
|
||||||
it('ควรคืน fallback (hasCapacity=false) เมื่อ /api/ps ล้มเหลว', async () => {
|
it('ควรคืน fallback optimistic (hasCapacity=true) เมื่อ /api/ps ล้มเหลว', async () => {
|
||||||
mockedAxios.get.mockRejectedValue(new Error('Network error'));
|
mockedAxios.get.mockRejectedValue(new Error('Network error'));
|
||||||
const status = await service.getVramStatus();
|
const status = await service.getVramStatus();
|
||||||
expect(status.hasCapacity).toBe(false);
|
// เปลี่ยนจาก pessimistic เป็น optimistic: สมมติว่าไม่มี model load เมื่อ query ล้มเหลว
|
||||||
expect(status.freeVramMb).toBe(0);
|
expect(status.hasCapacity).toBe(true);
|
||||||
|
expect(status.freeVramMb).toBe(8192); // total VRAM ทั้งหมด (8192MB default)
|
||||||
|
expect(status.usedVramMb).toBe(0);
|
||||||
expect(status.loadedModels).toEqual([]);
|
expect(status.loadedModels).toEqual([]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { Loader2 } from 'lucide-react';
|
|||||||
|
|
||||||
export default function AuditLogsPage() {
|
export default function AuditLogsPage() {
|
||||||
const { data: logs, isLoading } = useAuditLogs();
|
const { data: logs, isLoading } = useAuditLogs();
|
||||||
|
const logList = Array.isArray(logs) ? logs : [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
@@ -22,10 +23,10 @@ export default function AuditLogsPage() {
|
|||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
{!logs || logs.length === 0 ? (
|
{logList.length === 0 ? (
|
||||||
<div className="text-center text-muted-foreground py-10">No logs found</div>
|
<div className="text-center text-muted-foreground py-10">No logs found</div>
|
||||||
) : (
|
) : (
|
||||||
logs.map((log: import('@/lib/services/audit-log.service').AuditLog) => (
|
logList.map((log: import('@/lib/services/audit-log.service').AuditLog) => (
|
||||||
<Card key={log.publicId} className="p-4">
|
<Card key={log.publicId} className="p-4">
|
||||||
<div className="flex items-start justify-between">
|
<div className="flex items-start justify-between">
|
||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
|
|||||||
+3
-1
@@ -40,4 +40,6 @@ def get_vram_headroom() -> VramHeadroom:
|
|||||||
return VramHeadroom(total_vram_mb, used_mb, available_mb, True)
|
return VramHeadroom(total_vram_mb, used_mb, available_mb, True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Failed to query Ollama VRAM: {str(e)}")
|
logger.warning(f"Failed to query Ollama VRAM: {str(e)}")
|
||||||
return VramHeadroom(total_vram_mb, total_vram_mb, 0.0, False)
|
# เปลี่ยนจาก pessimistic (assume all VRAM used) เป็น optimistic (assume no VRAM used)
|
||||||
|
# เพื่อป้องกัน false positive OOM Guard เมื่อ query ล้มเหลวแต่ไม่มี model load จริง
|
||||||
|
return VramHeadroom(total_vram_mb, 0.0, total_vram_mb, False)
|
||||||
|
|||||||
Reference in New Issue
Block a user