add cpu usage
This commit is contained in:
parent
854ac6d5f1
commit
0da62dad82
@ -24,7 +24,6 @@
|
|||||||
<title>OpenWebRX | Open Source SDR Web App for Everyone!</title>
|
<title>OpenWebRX | Open Source SDR Web App for Everyone!</title>
|
||||||
<!-- <script type="text/javascript">
|
<!-- <script type="text/javascript">
|
||||||
//Global variables
|
//Global variables
|
||||||
var audio_buffering_fill_to=%[AUDIO_BUFSIZE];
|
|
||||||
var server_enable_digimodes=%[DIGIMODES_ENABLE];
|
var server_enable_digimodes=%[DIGIMODES_ENABLE];
|
||||||
var mathbox_waterfall_frequency_resolution=%[MATHBOX_WATERFALL_FRES];
|
var mathbox_waterfall_frequency_resolution=%[MATHBOX_WATERFALL_FRES];
|
||||||
var mathbox_waterfall_history_length=%[MATHBOX_WATERFALL_THIST];
|
var mathbox_waterfall_history_length=%[MATHBOX_WATERFALL_THIST];
|
||||||
|
@ -1185,8 +1185,12 @@ function on_ws_recv(evt)
|
|||||||
case "smeter":
|
case "smeter":
|
||||||
setSmeterAbsoluteValue(json.value);
|
setSmeterAbsoluteValue(json.value);
|
||||||
break;
|
break;
|
||||||
|
case "cpuusage":
|
||||||
|
var server_cpu_usage = json.value;
|
||||||
|
progressbar_set(e("openwebrx-bar-server-cpu"),server_cpu_usage/100,"Server CPU [" + server_cpu_usage + "%]",server_cpu_usage>85);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
console.warn('received message of unknown type', json);
|
console.warn('received message of unknown type: ' + json.type);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// don't lose exception
|
// don't lose exception
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import mimetypes
|
import mimetypes
|
||||||
from owrx.websocket import WebSocketConnection
|
from owrx.websocket import WebSocketConnection
|
||||||
from owrx.config import PropertyManager
|
from owrx.config import PropertyManager
|
||||||
from owrx.source import SpectrumThread, DspManager
|
from owrx.source import SpectrumThread, DspManager, CpuUsageThread
|
||||||
import json
|
import json
|
||||||
|
|
||||||
class Controller(object):
|
class Controller(object):
|
||||||
@ -55,6 +55,8 @@ class SpectrumForwarder(object):
|
|||||||
self.conn.send(bytes([0x02]) + data)
|
self.conn.send(bytes([0x02]) + data)
|
||||||
def write_s_meter_level(self, level):
|
def write_s_meter_level(self, level):
|
||||||
self.conn.send({"type":"smeter","value":level})
|
self.conn.send({"type":"smeter","value":level})
|
||||||
|
def write_cpu_usage(self, usage):
|
||||||
|
self.conn.send({"type":"cpuusage","value":usage})
|
||||||
|
|
||||||
class WebSocketMessageHandler(object):
|
class WebSocketMessageHandler(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -78,6 +80,7 @@ class WebSocketMessageHandler(object):
|
|||||||
|
|
||||||
self.forwarder = SpectrumForwarder(conn)
|
self.forwarder = SpectrumForwarder(conn)
|
||||||
SpectrumThread.getSharedInstance().add_client(self.forwarder)
|
SpectrumThread.getSharedInstance().add_client(self.forwarder)
|
||||||
|
CpuUsageThread.getSharedInstance().add_client(self.forwarder)
|
||||||
|
|
||||||
self.dsp = DspManager(self.forwarder)
|
self.dsp = DspManager(self.forwarder)
|
||||||
|
|
||||||
@ -101,6 +104,7 @@ class WebSocketMessageHandler(object):
|
|||||||
def handleClose(self, conn):
|
def handleClose(self, conn):
|
||||||
if self.forwarder:
|
if self.forwarder:
|
||||||
SpectrumThread.getSharedInstance().remove_client(self.forwarder)
|
SpectrumThread.getSharedInstance().remove_client(self.forwarder)
|
||||||
|
CpuUsageThread.getSharedInstance().remove_client(self.forwarder)
|
||||||
if self.dsp:
|
if self.dsp:
|
||||||
self.dsp.stop()
|
self.dsp.stop()
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import subprocess
|
|||||||
from owrx.config import PropertyManager
|
from owrx.config import PropertyManager
|
||||||
import threading
|
import threading
|
||||||
import csdr
|
import csdr
|
||||||
|
import time
|
||||||
|
|
||||||
class RtlNmuxSource(object):
|
class RtlNmuxSource(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -157,3 +158,62 @@ class DspManager(object):
|
|||||||
|
|
||||||
def setProperty(self, prop, value):
|
def setProperty(self, prop, value):
|
||||||
self.localProps.getProperty(prop).setValue(value)
|
self.localProps.getProperty(prop).setValue(value)
|
||||||
|
|
||||||
|
class CpuUsageThread(threading.Thread):
|
||||||
|
sharedInstance = None
|
||||||
|
@staticmethod
|
||||||
|
def getSharedInstance():
|
||||||
|
if CpuUsageThread.sharedInstance is None:
|
||||||
|
CpuUsageThread.sharedInstance = CpuUsageThread()
|
||||||
|
CpuUsageThread.sharedInstance.start()
|
||||||
|
return CpuUsageThread.sharedInstance
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.clients = []
|
||||||
|
self.doRun = True
|
||||||
|
self.last_worktime = 0
|
||||||
|
self.last_idletime = 0
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while self.doRun:
|
||||||
|
time.sleep(3)
|
||||||
|
try:
|
||||||
|
cpu_usage = self.get_cpu_usage()
|
||||||
|
except:
|
||||||
|
cpu_usage = 0
|
||||||
|
for c in self.clients:
|
||||||
|
c.write_cpu_usage(cpu_usage)
|
||||||
|
print("cpu usage thread shut down")
|
||||||
|
|
||||||
|
def get_cpu_usage(self):
|
||||||
|
try:
|
||||||
|
f = open("/proc/stat","r")
|
||||||
|
except:
|
||||||
|
return 0 #Workaround, possibly we're on a Mac
|
||||||
|
line = ""
|
||||||
|
while not "cpu " in line: line=f.readline()
|
||||||
|
f.close()
|
||||||
|
spl = line.split(" ")
|
||||||
|
worktime = int(spl[2]) + int(spl[3]) + int(spl[4])
|
||||||
|
idletime = int(spl[5])
|
||||||
|
dworktime = (worktime - self.last_worktime)
|
||||||
|
didletime = (idletime - self.last_idletime)
|
||||||
|
rate = float(dworktime) / (didletime+dworktime)
|
||||||
|
self.last_worktime = worktime
|
||||||
|
self.last_idletime = idletime
|
||||||
|
if (self.last_worktime==0): return 0
|
||||||
|
return rate
|
||||||
|
|
||||||
|
def add_client(self, c):
|
||||||
|
self.clients.append(c)
|
||||||
|
|
||||||
|
def remove_client(self, c):
|
||||||
|
self.clients.remove(c)
|
||||||
|
if not self.clients:
|
||||||
|
self.shutdown()
|
||||||
|
|
||||||
|
def shutdown(self):
|
||||||
|
print("shutting down cpu usage thread")
|
||||||
|
CpuUsageThread.sharedInstance = None
|
||||||
|
self.doRun = False
|
||||||
|
Loading…
Reference in New Issue
Block a user