From 2ce726d16cd4f13afe4584a61b83293a2f651e27 Mon Sep 17 00:00:00 2001 From: alikia2x Date: Sat, 25 Jan 2025 23:25:11 +0800 Subject: [PATCH] update: scheduler can now prevent selected tasks from running under high load --- bun.lockb | Bin 388747 -> 389495 bytes package.json | 2 ++ src/electron/backend/scheduler.ts | 40 +++++++++++++++++++++++++++--- src/electron/index.ts | 2 +- 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/bun.lockb b/bun.lockb index a2869d86199d25d7fac00aa922efe49963423356..32bf4d543f6c506286c6cf1eb9f1dc8ddb0971d3 100755 GIT binary patch delta 69990 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

*g;i&GL%;?WI}ar+WEK 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 W+;Dxh^-8M5HFIt49hNxJuKxiMsseKW diff --git a/package.json b/package.json index 286e904..a9607d3 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@alikia/random-key": "npm:@jsr/alikia__random-key", "@electron/remote": "^2.1.2", "@hono/node-server": "^1.13.7", + "@types/node-os-utils": "^1.3.4", "@unly/universal-language-detector": "^2.0.3", "better-sqlite3": "^11.6.0", "dayjs": "^1.11.13", @@ -41,6 +42,7 @@ "image-size": "^1.1.1", "jotai": "^2.11.0", "memory-cache": "^0.2.0", + "node-os-utils": "^1.3.7", "pino": "^9.6.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/src/electron/backend/scheduler.ts b/src/electron/backend/scheduler.ts index 1344e7c..d15e52d 100644 --- a/src/electron/backend/scheduler.ts +++ b/src/electron/backend/scheduler.ts @@ -1,3 +1,5 @@ +import osu from "node-os-utils"; + type TaskId = string; type TaskFunction = () => void; @@ -9,6 +11,7 @@ interface Task { nextRun?: number; isPaused: boolean; delayUntil?: number; + requiredSystemState: SystemState; } export interface TaskStatus { @@ -17,15 +20,27 @@ export interface TaskStatus { nextRun?: string; } +type SystemState = "ANY" | "LOW_POWER" | "IDLE"; + export class Scheduler { private tasks: Map = new Map(); private timer: NodeJS.Timeout | null = null; + private monitorTimer: NodeJS.Timeout | null = null; + private cpuUsage: number = 0; + constructor(private readonly minTickInterval: number = 500) { this.start(); } private start(): void { this.scheduleNextTick(); + this.monitorTimer = setInterval(() => this.monitor(), 1000); + } + + private monitor(): void { + osu.cpu.usage().then((cpuPercentage) => { + this.cpuUsage = cpuPercentage / 100; + }) } private scheduleNextTick(): void { @@ -66,7 +81,17 @@ export class Scheduler { return; } - const isTaskReadyForIntervalRun = task.interval && task.nextRun && now >= task.nextRun; + const taskRequiredLowPower = task.requiredSystemState === "LOW_POWER"; + const cpuUsage = this.cpuUsage; + const isSystemLowPower = cpuUsage < 0.75; + const isTaskReadyForLowPowerRun = taskRequiredLowPower ? isSystemLowPower : true; + const reachedTaskNextRun = task.interval && task.nextRun && now >= task.nextRun; + const isTaskReadyForIntervalRun = reachedTaskNextRun && isTaskReadyForLowPowerRun; + + if (!isTaskReadyForLowPowerRun) { + this.delayTask(task.id, 1000) + } + if (isTaskReadyForIntervalRun) { task.func(); task.lastRun = now; @@ -100,15 +125,17 @@ export class Scheduler { * @param id A unique string identifier for the task. * @param func The function to be executed by the task. * @param interval The interval (in milliseconds) between task executions. + * @param requiredSystemState The required system state for the task to run. */ - addTask(id: TaskId, func: TaskFunction, interval?: number): void { + addTask(id: TaskId, func: TaskFunction, interval?: number, requiredSystemState: SystemState = "ANY"): void { this.tasks.set(id, { id, func, interval, isPaused: false, lastRun: undefined, - nextRun: interval ? Date.now() + interval : undefined + nextRun: interval ? Date.now() + interval : undefined, + requiredSystemState: requiredSystemState, }); this.scheduleNextTick(); @@ -172,6 +199,9 @@ export class Scheduler { const task = this.tasks.get(id); if (task) { task.delayUntil = Date.now() + delayMs; + if (task.nextRun) { + task.nextRun += delayMs; + } } this.scheduleNextTick(); @@ -215,5 +245,9 @@ export class Scheduler { clearTimeout(this.timer); this.timer = null; } + if (this.monitorTimer) { + clearTimeout(this.monitorTimer); + this.monitorTimer = null; + } } } diff --git a/src/electron/index.ts b/src/electron/index.ts index cff1b44..1490d38 100644 --- a/src/electron/index.ts +++ b/src/electron/index.ts @@ -112,7 +112,7 @@ app.on("ready", () => { initDatabase().then((db) => { scheduler.addTask("screenshot", takeScreenshot, 2000); scheduler.addTask("check-encoding", checkFramesForEncoding, 5000); - scheduler.addTask("process-encoding", processEncodingTasks, 10000); + scheduler.addTask("process-encoding", processEncodingTasks, 10000, "LOW_POWER"); scheduler.addTask("delete-screenshots", deleteUnnecessaryScreenshots, 20000); dbConnection = db; cache.put("server:dbConnection", dbConnection);