GPU
+${vendor} ${temperatureGpu} ${powerDraw}
+总共 ${(memoryTotal / 1024).toFixed(2)}G
+已用 ${(memoryUsed / 1024).toFixed(2)}G
+diff --git a/apps/state.js b/apps/state.js index 77e5283..7a26ea9 100644 --- a/apps/state.js +++ b/apps/state.js @@ -21,11 +21,14 @@ export class example extends plugin { }) this.interval_key = 'yenai:state:interval' + this.isGPU = false } async init() { si.networkStats() + if ((await si.graphics()).controllers.find(item => item.memoryUsed && item.memoryFree && item.utilizationGpu)) { + this.isGPU = true + } } - async execSync(cmd) { return new Promise((resolve, reject) => { child_process.exec(cmd, (error, stdout, stderr) => { @@ -57,13 +60,13 @@ export class example extends plugin { let Usingmemory = CPU.getfilesize((os.totalmem() - os.freemem())) //nodejs占用 let nodeoccupy = CPU.getmemory(); - let node = Circle(nodeoccupy.occupy) + let node = CPU.Circle(nodeoccupy.occupy) let [node_leftCircle, node_rightCircle] = node //cpu - let cpu = Circle(cpu_info) + let cpu = CPU.Circle(cpu_info) let [cpu_leftCircle, cpu_rightCircle] = cpu //ram - let ram = Circle(MemUsage) + let ram = CPU.Circle(MemUsage) let [ram_leftCircle, ram_rightCircle] = ram //最大mhz // let maxspeed = CPU.getmaxspeed() @@ -106,9 +109,9 @@ export class example extends plugin {
↑${network.tx_sec}/s ↓${network.rx_sec}/s
` } + let GPU = '' + //GPU + try { + if (await redis.get('yenai:isGPU') == '1') { + GPU = await CPU.getGPU() + } + } catch (err) { + console.log(err); + } //FastFetch let FastFetch = "" if (/pro/.test(e.msg)) { @@ -201,6 +213,8 @@ export class example extends plugin { networkhtml, //FastFetch FastFetch, + //GPU + GPU } //渲染图片 await render('state/state', { @@ -234,22 +248,7 @@ function Formatting(time, repair) { } -/** - * @description: 圆形进度条渲染 - * @param {Number} res 百分比小数 - * @return {*} css样式 - */ -function Circle(res) { - let num = (res * 360).toFixed(0) - let leftCircle = `style=transform:rotate(-180deg)`; - let rightCircle; - if (num > 180) { - leftCircle = `style=transform:rotate(${num}deg)` - } else { - rightCircle = `style=transform:rotate(-${180 - num}deg)`; - } - return [leftCircle, rightCircle] -} + /** * @description: 取插件包 diff --git a/model/CPU.js b/model/CPU.js index 16bfea0..1104e1b 100644 --- a/model/CPU.js +++ b/model/CPU.js @@ -7,7 +7,6 @@ class OSUtils { constructor() { this.cpuUsageMSDefault = 1000; // CPU 利用率默认时间段 } - /** * 获取某时间段 CPU 利用率 * @param { Number } Options.ms [时间段,默认是 1000ms,即 1 秒钟] @@ -103,5 +102,54 @@ class OSUtils { let occupy = (memory.rss / (os.totalmem() - os.freemem())).toFixed(2) return { rss, heapTotal, heapUsed, occupy } } + /** + * @description: 圆形进度条渲染 + * @param {Number} res 百分比小数 + * @return {*} css样式 + */ + Circle(res) { + let num = (res * 360).toFixed(0) + let leftCircle = `style=transform:rotate(-180deg)`; + let rightCircle; + if (num > 180) { + leftCircle = `style=transform:rotate(${num}deg)` + } else { + rightCircle = `style=transform:rotate(-${180 - num}deg)`; + } + return [leftCircle, rightCircle] + } + + /**获取GPU */ + async getGPU() { + let graphics = (await si.graphics()).controllers.find(item => item.memoryUsed && item.memoryFree && item.utilizationGpu) + console.log(graphics); + let { vendor, temperatureGpu, utilizationGpu, memoryTotal, memoryUsed, powerDraw } = graphics + let GPUstyle = this.Circle(utilizationGpu / 100) + temperatureGpu = temperatureGpu ? temperatureGpu + '℃' : '' + powerDraw = powerDraw ? powerDraw + "W" : "" + return `GPU
+${vendor} ${temperatureGpu} ${powerDraw}
+总共 ${(memoryTotal / 1024).toFixed(2)}G
+已用 ${(memoryUsed / 1024).toFixed(2)}G
+空闲 {{freemem}}
+ {{@GPU}}