ui: show last cleanup freed amounts on transcode Ramdisk/NVMe tags
Parses the last 'Ramdisk freed' and 'SSD freed' values from the transcode management log and displays them as small ↓XMB annotations inside each tag. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
3b645b2108
commit
55e817d234
@@ -715,6 +715,21 @@ function vv_transcode_sessions(): array {
|
|||||||
// Ramdisk disk usage
|
// Ramdisk disk usage
|
||||||
$rd = vv_df('/mnt/ramdisk_transcodes');
|
$rd = vv_df('/mnt/ramdisk_transcodes');
|
||||||
|
|
||||||
|
// Last cleanup values from transcode management log
|
||||||
|
$lastRdFreed = null;
|
||||||
|
$lastSsdFreed = null;
|
||||||
|
$logFile = '/var/log/varaverk/Orchestrators/transcode_management.log';
|
||||||
|
if (file_exists($logFile)) {
|
||||||
|
$lines = file($logFile, FILE_IGNORE_NEW_LINES) ?: [];
|
||||||
|
foreach (array_reverse($lines) as $line) {
|
||||||
|
if ($lastRdFreed === null && preg_match('/Ramdisk freed:\s*(\S+)/u', $line, $m))
|
||||||
|
$lastRdFreed = $m[1];
|
||||||
|
if ($lastSsdFreed === null && preg_match('/SSD freed:\s*(\S+)/u', $line, $m))
|
||||||
|
$lastSsdFreed = $m[1];
|
||||||
|
if ($lastRdFreed !== null && $lastSsdFreed !== null) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'available' => true,
|
'available' => true,
|
||||||
'current_target' => $target,
|
'current_target' => $target,
|
||||||
@@ -726,5 +741,7 @@ function vv_transcode_sessions(): array {
|
|||||||
'ssd_sessions' => $ssdSessions,
|
'ssd_sessions' => $ssdSessions,
|
||||||
'ramdisk' => $rd,
|
'ramdisk' => $rd,
|
||||||
'ssd' => $ssd,
|
'ssd' => $ssd,
|
||||||
|
'last_rd_freed' => $lastRdFreed,
|
||||||
|
'last_ssd_freed' => $lastSsdFreed,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1343,13 +1343,17 @@ function vvPollMonitor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const nvmeColor = ssd.available ? '#4caf50' : '#f44336';
|
const nvmeColor = ssd.available ? '#4caf50' : '#f44336';
|
||||||
|
const rdFreed = tc.last_rd_freed ?? null;
|
||||||
|
const ssdFreed = tc.last_ssd_freed ?? null;
|
||||||
|
const rdCleanTip = rdFreed ? `<span style="font-size:9px;color:#555;margin-left:4px;">↓${rdFreed}</span>` : '';
|
||||||
|
const ssdCleanTip = ssdFreed ? `<span style="font-size:9px;color:#555;margin-left:4px;">↓${ssdFreed}</span>` : '';
|
||||||
document.getElementById('vv-transcode-body').innerHTML =
|
document.getElementById('vv-transcode-body').innerHTML =
|
||||||
`<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;">
|
`<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;">
|
||||||
<div style="display:flex;gap:6px;align-items:center;">
|
<div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap;">
|
||||||
<span style="background:${locColor}22;border:1px solid ${locColor};color:${locColor};
|
<span style="display:inline-flex;align-items:center;background:${locColor}22;border:1px solid ${locColor};color:${locColor};
|
||||||
padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;">● ${loc}</span>
|
padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;">● ${loc}${rdCleanTip}</span>
|
||||||
<span style="background:${nvmeColor}22;border:1px solid ${nvmeColor};color:${nvmeColor};
|
<span style="display:inline-flex;align-items:center;background:${nvmeColor}22;border:1px solid ${nvmeColor};color:${nvmeColor};
|
||||||
padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;">● NVMe</span>
|
padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;">● NVMe${ssdCleanTip}</span>
|
||||||
</div>
|
</div>
|
||||||
<span style="font-size:10px;color:#555;">Flips: ${tc.flip_count_hour ?? 0}/hr · ${flipStr}</span>
|
<span style="font-size:10px;color:#555;">Flips: ${tc.flip_count_hour ?? 0}/hr · ${flipStr}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user