cleaning up my stuff a bit

This commit is contained in:
2024-10-14 15:49:08 +02:00
parent 2647d16396
commit 3b27212f9a
46 changed files with 191 additions and 1936 deletions

View File

@@ -279,8 +279,8 @@ export function listWorkServers(ns) {
if (entry.rootAccess && entry.maxRam >= 1) {
let sServerName = entry.serverName.padEnd(nServerColumnWidth, ' ');
let nFreeRAM = entry.maxRam - ns.getServerUsedRam(entry.serverName);
let sFreeRAM = Math.floor(nFreeRAM).toLocaleString("en-US").padStart(nValueColumnWidth, ' ');
let sMaxRam = entry.maxRam.toLocaleString("en-US").padStart(nValueColumnWidth, ' ');
let sFreeRAM = ns.formatRam(nFreeRAM).padStart(nValueColumnWidth, ' ');
let sMaxRam = ns.formatRam(entry.maxRam).padStart(nValueColumnWidth, ' ');
let sCores = entry.serverCores.toLocaleString("en-US").padStart(nCoresWidth, ' ');
ns.printRaw(`${sServerName}${sFreeRAM} / ${sMaxRam}${sCores}`);
nTotalWorkerRAM += entry.maxRam;
@@ -292,10 +292,10 @@ export function listWorkServers(ns) {
}
export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
if (typeof (array) === "string") {
array = JSON.parse(array);
}
//ns.tprint(typeof(array));
return array.sort((a, b) => {
const xPrimary = a[primaryKey];
const yPrimary = b[primaryKey];
@@ -333,3 +333,43 @@ export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
}
}
/** @param {NS} ns */
export async function distributeScript(ns, sScript, nThreads, ...args) {
ns.tail();
ns.disableLog("ALL");
const sListName = "serverList.txt";
if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; };
let sServerList = ns.read(sListName);
let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
ns.print(sScript);
ns.print(nThreads);
ns.print(...args);
const nScriptSize = ns.getScriptRam(sScript, "home");
let nTotalSize = nScriptSize * nThreads;
ns.print("nScriptSize = " + nScriptSize);
ns.print("nTotalSize = " + nTotalSize);
aSortedList.forEach((entry) => {
let sHost = entry.serverName;
ns.print("sHost = " + sHost)
ns.scp(sScript, sHost);
let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
ns.exec(sScript, sHost, nThreads, ...args);
nThreads = 0;
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
}
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) {
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
ns.print("room for : " + nThreadsDist + " scripts");
ns.exec(sScript, sHost, nThreadsDist, ...args);
nThreads -= nThreadsDist;
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
}
});
}