Pārlūkot izejas kodu

Add disk latency statistics

Alessandro Pignotti 9 mēneši atpakaļ
vecāks
revīzija
9858b64752
3 mainītis faili ar 20 papildinājumiem un 1 dzēšanām
  1. 4 0
      src/lib/DiskTab.svelte
  2. 15 1
      src/lib/WebVM.svelte
  3. 1 0
      src/lib/activities.js

+ 4 - 0
src/lib/DiskTab.svelte

@@ -1,4 +1,8 @@
+<script>
+	import { diskLatency } from './activities.js'
+</script>
 <h1 class="text-lg font-bold">Disk</h1>
+<p><span class="font-bold">Backend latency: </span>{$diskLatency}ms</p>
 <p>WebVM runs on top of a complete Linux distribution</p>
 <p>Filesystems up to 2GB are supported and data is downloaded completely on-demand</p>
 <p>The WebVM cloud backend uses WebSockets and a it's distributed via a global CDN to minimize download latency</p>

+ 15 - 1
src/lib/WebVM.svelte

@@ -6,13 +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, cpuPercentage } from '$lib/activities.js'
+	import { cpuActivity, diskActivity, cpuPercentage, diskLatency } 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 diskLatencies = [];
 	export let activityEventsInterval = 0;
 
 	var term = null;
@@ -97,6 +98,18 @@
 	{
 		diskActivity.set(state != "ready");
 	}
+	function latencyCallback(latency)
+	{
+		diskLatencies.push(latency);
+		if(diskLatencies.length > 30)
+			diskLatencies.shift();
+		// Average the latency over at most 30 blocks
+		var total = 0;
+		for(var i=0;i<diskLatencies.length;i++)
+			total += diskLatencies[i];
+		var avg = total / diskLatencies.length;
+		diskLatency.set(Math.ceil(avg));
+	}
 	function cpuCallback(state)
 	{
 		cpuActivity.set(state != "ready");
@@ -222,6 +235,7 @@
 		}
 		cx.registerCallback("cpuActivity", cpuCallback);
 		cx.registerCallback("diskActivity", hddCallback);
+		cx.registerCallback("diskLatency", latencyCallback);
 		cx.registerCallback("processCreated", handleProcessCreated);
 		term.scrollToBottom();
 		cxReadFunc = cx.setCustomConsole(writeData, term.cols, term.rows);

+ 1 - 0
src/lib/activities.js

@@ -3,3 +3,4 @@ import { writable } from 'svelte/store';
 export const cpuActivity = writable(false);
 export const diskActivity = writable(false);
 export const cpuPercentage = writable(0);
+export const diskLatency = writable(0);