fix ram miscalc

This commit is contained in:
Olivier Gagnon 2021-10-27 18:55:06 -04:00
parent 4ce0b59310
commit 8ab9a27966
4 changed files with 8 additions and 6 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -114,13 +114,14 @@ function NetscriptFunctions(workerScript: WorkerScript): NS {
threads = 1; threads = 1;
} }
workerScript.dynamicRamUsage += ramCost * threads; workerScript.dynamicRamUsage += ramCost;
if (workerScript.dynamicRamUsage > 1.01 * workerScript.ramUsage) { if (workerScript.dynamicRamUsage > 1.01 * workerScript.ramUsage) {
throw makeRuntimeRejectMsg( throw makeRuntimeRejectMsg(
workerScript, workerScript,
`Dynamic RAM usage calculated to be greater than initial RAM usage on fn: ${fnName}. `Dynamic RAM usage calculated to be greater than initial RAM usage on fn: ${fnName}.
This is probably because you somehow circumvented the static RAM calculation. This is probably because you somehow circumvented the static RAM calculation.
Threads: ${threads}
Dynamic RAM Usage: ${numeralWrapper.formatRAM(workerScript.dynamicRamUsage)} Dynamic RAM Usage: ${numeralWrapper.formatRAM(workerScript.dynamicRamUsage)}
Static RAM Usage: ${numeralWrapper.formatRAM(workerScript.ramUsage)} Static RAM Usage: ${numeralWrapper.formatRAM(workerScript.ramUsage)}

@ -477,7 +477,8 @@ function createAndAddWorkerScript(runningScriptObj: RunningScript, server: BaseS
} else { } else {
runningScriptObj.threads = 1; runningScriptObj.threads = 1;
} }
const ramUsage = roundToTwo(getRamUsageFromRunningScript(runningScriptObj) * threads); const oneRamUsage = getRamUsageFromRunningScript(runningScriptObj);
const ramUsage = roundToTwo(oneRamUsage * threads);
const ramAvailable = server.maxRam - server.ramUsed; const ramAvailable = server.maxRam - server.ramUsed;
if (ramUsage > ramAvailable) { if (ramUsage > ramAvailable) {
dialogBoxCreate( dialogBoxCreate(
@ -502,7 +503,7 @@ function createAndAddWorkerScript(runningScriptObj: RunningScript, server: BaseS
// Create the WorkerScript. NOTE: WorkerScript ctor will set the underlying // Create the WorkerScript. NOTE: WorkerScript ctor will set the underlying
// RunningScript's PID as well // RunningScript's PID as well
const s = new WorkerScript(runningScriptObj, pid, NetscriptFunctions); const s = new WorkerScript(runningScriptObj, pid, NetscriptFunctions);
s.ramUsage = ramUsage; s.ramUsage = oneRamUsage;
// Add the WorkerScript to the global pool // Add the WorkerScript to the global pool
workerScripts.set(pid, s); workerScripts.set(pid, s);