Warning: session_start(): open(/var/lib/php/sessions/sess_kprsoh1d0qe77ljd5stp9due8d, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
sclass Process {
S processID, name, commandLine;
long residentSize;
double cpuUsage; // percent per core
sS _fieldOrder = "processID name commandLine residentSize cpuUsage";
}
cm ProcessList > DynObjectTable {
switchable bool showTiming;
switchable double interval = 3.0;
switchable double firstInterval = 1.0;
switchable bool sortBySize;
start {
dontPersist();
itemToMap = func(Process p) -> Map { humanizeKeys(
applyFunctionToMapValue('cpuUsage, f iround_spacePercentSign,
applyFunctionToMapValue('residentSize, f str_toM,
objectToMap_honorFieldOrder(p)))) };
actualUpdate(); // to make sort keys work
dm_doEvery(firstInterval, interval, r actualUpdate);
dm_reloadOnFieldChange interval();
dm_reloadOnFieldChange sortBySize();
}
visualize {
JComponent c = centerAndSouthWithMargins(super.visualize(),
dm_calculatedRightAlignedLabel(() -> "Updated every " + (interval == 1 ? "second" : formatDouble(interval, 1) + " seconds")));
addRowSorter_desc(table, sortBySize ? 3 : 4); // Resident Size / CPU
var cmp = alphaNumComparator_skipCommas();
rowSorter_setComparators(table, 3, cmp, 2, cmp, 4, cmp);
swing { ((DefaultRowSorter) table.getRowSorter()).sort(); }
tablePopupMenuItem(table(), "Kill!", rThread { killProcess(selected().processID) });
ret c;
}
void actualUpdate enter {
L list = timedIf(showTiming, func -> L { oshi_listProcesses_withoutOpenFiles() });
setData(map(list, func(OSProcess p) -> Process {
nu(Process,
processID := str(p.getProcessID()),
name := p.getName(),
commandLine := p.getCommandLine(),
residentSize := p.getResidentSetSize(),
cpuUsage := oshi_calcProcessCPUUsage_v2(p))
}));
}
}