sync corp
This commit is contained in:
76
Ramses/home/testdistribute.js
Normal file
76
Ramses/home/testdistribute.js
Normal file
@@ -0,0 +1,76 @@
|
||||
import { sortJsonArrayByKey } from "Library.js";
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function main(ns) {
|
||||
ns.tail();
|
||||
ns.disableLog("ALL");
|
||||
const sScript = ns.args[0]; // script
|
||||
let nThreads = ns.args[1]; // threads
|
||||
const sTarget = ns.args[2]; // target server
|
||||
const bRepeat = ns.args[3]; // should this script loop
|
||||
const nMsecDelay = ns.args[4]; // MsecDelay
|
||||
|
||||
const sWeakenScript = "RMweaken.js";
|
||||
const sGrowScript = "RMgrow.js";
|
||||
const sHackScript = "RMhack.js";
|
||||
|
||||
const sListName = "serverList.txt";
|
||||
const sWorkerList = "WorkerList.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.tprint(aSortedList);
|
||||
ns.print(sScript);
|
||||
ns.print(nThreads);
|
||||
ns.print(sTarget);
|
||||
|
||||
const nScriptSize = ns.getScriptRam(sScript, "home");
|
||||
let nTotalSize = nScriptSize * nThreads;
|
||||
|
||||
ns.print("nScriptSize = " + nScriptSize);
|
||||
ns.print("nTotalSize = " + nTotalSize);
|
||||
|
||||
// get sorted list of most cores servers
|
||||
/*
|
||||
aSortedList.forEach((entry) => {
|
||||
if (entry.rootAccess && entry.maxRam >= 1 && entry.serverCores > 1) {
|
||||
// if cores equal to previous entry put into same array?
|
||||
}
|
||||
}) */
|
||||
// get total free RAM per number of cores
|
||||
// calculate effect of cores on each server with cores > 1
|
||||
// update nThreads
|
||||
// run weaken/grow on core servers until cores = 1
|
||||
|
||||
// get sorted list of biggest RAM servers
|
||||
// get total free RAM on core 1 servers
|
||||
// run remaining weaken/grow
|
||||
// run hack untill RAM on cores 1 servers run out
|
||||
// run remaining hacks on smallest to biggest core servers
|
||||
|
||||
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, sTarget, bRepeat, nMsecDelay);
|
||||
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, sTarget, bRepeat, nMsecDelay);
|
||||
nThreads -= nThreadsDist;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
for (i = 0; ; i++) {
|
||||
let sHost = "";
|
||||
ns.exec(sScript, sHost, nThreads, sTarget, bRepeat, nMsecDelay);
|
||||
} */
|
||||
}
|
||||
Reference in New Issue
Block a user