- {(safeVMData.reduce((sum, vm) => sum + (vm.maxmem || 0), 0) / 1024 ** 3).toFixed(1)} GB
+
+ {totalAllocatedMemoryGB} GB
-
Allocated RAM
+ {isMemoryOvercommit ? (
+
+
+ Overcommit: Excede memoria física ({physicalMemoryGB} GB)
+
+ ) : (
+
Allocated RAM
+ )}
@@ -339,13 +373,13 @@ export function VirtualMachines() {
className="p-6 rounded-lg border border-border bg-card/50 hover:bg-card/80 transition-colors cursor-pointer"
onClick={() => handleVMClick(vm)}
>
-
+
-
-
-
- {vm.name}
-
+
+
+
+ {vm.name}
+
{typeBadge.label}
@@ -353,12 +387,13 @@ export function VirtualMachines() {
-
-
- {getStatusIcon(vm.status)}
- {vm.status.toUpperCase()}
-
-
+
+ {getStatusIcon(vm.status)}
+ {vm.status.toUpperCase()}
+
@@ -376,7 +411,7 @@ export function VirtualMachines() {
-
+
Disk I/O
@@ -390,7 +425,7 @@ export function VirtualMachines() {
-
+
Network I/O
@@ -427,15 +462,17 @@ export function VirtualMachines() {
>
-
-
- {selectedVM?.name}
+
+
+
+ {selectedVM?.name}
+
{selectedVM && (
-
-
+
+
{getTypeBadge(selectedVM.type).label}
-
+
{selectedVM.status.toUpperCase()}
@@ -446,7 +483,6 @@ export function VirtualMachines() {
{selectedVM && (
<>
- {/* Basic Information */}
Basic Information
@@ -456,22 +492,10 @@ export function VirtualMachines() {
Name
{selectedVM.name}
-
-
Type
-
- {getTypeBadge(selectedVM.type).label}
-
-
-
-
Status
-
- {selectedVM.status.toUpperCase()}
-
-
CPU Usage
Uptime
{formatUptime(selectedVM.uptime)}
+
+
Disk I/O
+
+
+ ↓ {formatBytes(selectedVM.diskread)}
+
+
+ ↑ {formatBytes(selectedVM.diskwrite)}
+
+
+
+
+
Network I/O
+
+
+ ↓ {formatBytes(selectedVM.netin)}
+
+
+ ↑ {formatBytes(selectedVM.netout)}
+
+
+