This commit is contained in:
yeyang
2022-12-03 19:51:49 +08:00
parent 198598f927
commit c1b7448260
3 changed files with 71 additions and 23 deletions

View File

@@ -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 {
<div class='word mount'>${i.mount}</div>
<div class='progress'>
<div class='word'>${CPU.getfilesize(i.used)} / ${CPU.getfilesize(i.size)}</div>
<div class='current' style=width:${Math.round(i.use)}%></div>
<div class='current' style=width:${Math.ceil(i.use)}%></div>
</div>
<div>${Math.round(i.use)}%</div>
<div>${Math.ceil(i.use)}%</div>
</li>`
}
if (HardDisk) HardDisk = `<div class="box memory"><ul>${HardDisk}</ul></div>`
@@ -124,6 +127,15 @@ export class example extends plugin {
<p>↑${network.tx_sec}/s ↓${network.rx_sec}/s</p>
</div>`
}
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: 取插件包

View File

@@ -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 `<li class="li">
<div class="cpu">
<div class="left">
<div class="left-circle" ${GPUstyle[0]}>
</div>
</div>
<div class="right">
<div class="right-circle" ${GPUstyle[1]}>
</div>
</div>
<div class="inner">
${utilizationGpu}%
</div>
</div>
<article>
<p>GPU</p>
<p>${vendor} ${temperatureGpu} ${powerDraw}</p>
<p>总共 ${(memoryTotal / 1024).toFixed(2)}G</p>
<p>已用 ${(memoryUsed / 1024).toFixed(2)}G</p>
</article>
</li>`
}
}
export default new OSUtils();

View File

@@ -66,6 +66,7 @@
<p>空闲 {{freemem}}</p>
</article>
</li>
{{@GPU}}
<li class="li">
<div class="cpu">
<div class="left">