From 178093861b89258e74d88a6e7ba9a587f2cb717f Mon Sep 17 00:00:00 2001
From: 2vg <mail@ni-vg.com>
Date: Fri, 27 Jul 2018 17:31:19 +0900
Subject: [PATCH] memory usage excludes buffer and cache.

---
 package.json                |  2 +-
 src/daemons/server-stats.ts | 68 +++++++++++++++++++++++++++----------
 2 files changed, 52 insertions(+), 18 deletions(-)

diff --git a/package.json b/package.json
index c903966781..4202c592ef 100644
--- a/package.json
+++ b/package.json
@@ -159,7 +159,6 @@
 		"nprogress": "0.2.0",
 		"object-assign-deep": "0.4.0",
 		"on-build-webpack": "0.1.0",
-		"os-utils": "0.0.14",
 		"parse5": "5.0.0",
 		"portscanner": "2.2.0",
 		"progress-bar-webpack-plugin": "1.11.0",
@@ -187,6 +186,7 @@
 		"stylus": "0.54.5",
 		"stylus-loader": "3.0.2",
 		"summaly": "2.0.6",
+		"systeminformation": "3.42.4",
 		"syuilo-password-strength": "0.0.1",
 		"textarea-caret": "3.1.0",
 		"tmp": "0.0.33",
diff --git a/src/daemons/server-stats.ts b/src/daemons/server-stats.ts
index 5c793c6624..a3351ac32f 100644
--- a/src/daemons/server-stats.ts
+++ b/src/daemons/server-stats.ts
@@ -1,5 +1,5 @@
 import * as os from 'os';
-const osUtils = require('os-utils');
+const sysUtils = require('systeminformation');
 import * as diskusage from 'diskusage';
 import Xev from 'xev';
 
@@ -18,25 +18,59 @@ export default function() {
 	});
 
 	async function tick() {
-		osUtils.cpuUsage((cpuUsage: number) => {
-			const disk = diskusage.checkSync(os.platform() == 'win32' ? 'c:' : '/');
-			const stats = {
-				cpu_usage: cpuUsage,
-				mem: {
-					total: os.totalmem(),
-					free: os.freemem()
-				},
-				disk,
-				os_uptime: os.uptime(),
-				process_uptime: process.uptime()
-			};
-			ev.emit('serverStats', stats);
-			log.push(stats);
-			if (log.length > 50) log.shift();
-		});
+		const cpu      = await cpuUsage();
+		const freemem  = await freeMem();
+		const totalmem = await totalMem();
+		const disk     = diskusage.checkSync(os.platform() == 'win32' ? 'c:' : '/');
+
+		const stats = {
+			cpu_usage: cpu,
+			mem: {
+				total: totalmem,
+				free: freemem
+			},
+			disk,
+			os_uptime: os.uptime(),
+			process_uptime: process.uptime()
+		};
+		ev.emit('serverStats', stats);
+		log.push(stats);
 	}
 
 	tick();
 
 	setInterval(tick, interval);
 }
+
+// CPU STAT
+async function cpuUsage() {
+  try {
+    const data = await sysUtils.currentLoad();
+    return Math.floor(data.currentload);
+  }
+  catch(error) {
+    console.error(error);
+  }
+}
+
+// MEMORY(excl buffer + cache) STAT 
+async function freeMem() {
+  try {
+    const data = await sysUtils.mem();
+    return data.active;
+  }
+  catch(error) {
+    console.error(error);
+  }
+}
+
+// TOTAL MEMORY STAT
+async function totalMem() {
+  try {
+    const data = await sysUtils.mem();
+    return data.total;
+  }
+  catch(error) {
+    console.error(error);
+  }
+}
\ No newline at end of file