diff --git a/src/lib/CpuTab.svelte b/src/lib/CpuTab.svelte index 5bf6692..1af59fc 100644 --- a/src/lib/CpuTab.svelte +++ b/src/lib/CpuTab.svelte @@ -2,7 +2,7 @@ import { cpuPercentage } from './activities.js'

Engine

-

CPU Load: {$cpuPercentage}%

+

Load: {$cpuPercentage}%

WebVM is powered by CheerpX, a x86 virtualization engine in WebAssembly

CheerpX can run securely run unmodified x86 binaries and libraries in the browser

For more information: https://cheerpx.io

diff --git a/src/lib/WebVM.svelte b/src/lib/WebVM.svelte index ec03cec..e968775 100644 --- a/src/lib/WebVM.svelte +++ b/src/lib/WebVM.svelte @@ -6,12 +6,14 @@ import '@xterm/xterm/css/xterm.css' import '@fortawesome/fontawesome-free/css/all.min.css' import { networkInterface, startLogin } from '$lib/network.js' - import { cpuActivity, diskActivity } from '$lib/activities.js' + import { cpuActivity, diskActivity, cpuPercentage } from '$lib/activities.js' import { introMessage, errorMessage } from '$lib/messages.js' export let configObj = null; export let processCallback = null; export let cacheId = null; + export let cpuActivityEvents = []; + export let activityEventsInterval = 0; var term = null; var cx = null; @@ -36,6 +38,61 @@ for(var i=0;i 0)debugger; + totalActiveTime += (e.t - lastActiveTime); + } + cpuPercentage.set(Math.ceil((totalActiveTime / 10000) * 100)); + } function hddCallback(state) { diskActivity.set(state != "ready"); @@ -43,6 +100,15 @@ function cpuCallback(state) { cpuActivity.set(state != "ready"); + var curTime = Date.now(); + var limitTime = curTime - 10000; + expireEvents(cpuActivityEvents, curTime, limitTime); + cpuActivityEvents.push({t: curTime, state: state}); + computeCpuActivity(curTime, limitTime); + // Start an interval timer to cleanup old samples when no further activity is received + if(activityEventsInterval != 0) + clearInterval(activityEventsInterval); + activityEventsInterval = setInterval(cleanupEvents, 2000); } async function initTerminal() {