新增 显存占用显示功能;
This commit is contained in:
60
main.js
60
main.js
@@ -44,7 +44,7 @@ function createWindow() {
|
||||
// 隐藏窗口标题栏和任务栏显示
|
||||
titleBarStyle: 'hidden',
|
||||
// 隐藏窗口在Alt+Tab切换中显示
|
||||
hiddenInMissionControl: true
|
||||
hiddenInMissionControl: true,
|
||||
})
|
||||
|
||||
// 加载应用的index.html
|
||||
@@ -264,33 +264,43 @@ function startGpuMonitoring() {
|
||||
// 每秒获取一次GPU信息
|
||||
gpuMonitorInterval = setInterval(async () => {
|
||||
try {
|
||||
// 获取GPU信息
|
||||
const graphicsData = await si.graphics()
|
||||
// 尝试使用nvidia-smi命令获取GPU信息
|
||||
const { exec } = require('child_process')
|
||||
exec('nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv,noheader,nounits', (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.error('执行nvidia-smi时出错:', error)
|
||||
return
|
||||
}
|
||||
|
||||
// 过滤掉虚拟GPU设备(如OrayIddDriver等)
|
||||
const physicalGpus = graphicsData.controllers.filter(controller => {
|
||||
// 忽略虚拟GPU和软件渲染器
|
||||
const isVirtual = controller.model.includes('Oray') || controller.model.includes('Virtual') || controller.model.includes('Software') || controller.vendor.includes('Oray') || (controller.vram === 0 && !controller.memoryTotal)
|
||||
return !isVirtual
|
||||
if (stderr) {
|
||||
console.error('nvidia-smi stderr:', stderr)
|
||||
return
|
||||
}
|
||||
|
||||
// 解析输出
|
||||
const data = stdout
|
||||
.trim()
|
||||
.split(',')
|
||||
.map(item => parseInt(item.trim()))
|
||||
if (data.length >= 3) {
|
||||
const gpuInfo = [
|
||||
{
|
||||
name: 'NVIDIA GPU',
|
||||
utilizationGpu: data[0],
|
||||
memoryUsed: data[1],
|
||||
memoryTotal: data[2],
|
||||
vram: data[2],
|
||||
},
|
||||
]
|
||||
|
||||
// 发送GPU信息到渲染进程
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
mainWindow.webContents.send('gpu-info', gpuInfo)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// 提取显存信息
|
||||
const gpuInfo = physicalGpus.map(controller => ({
|
||||
name: controller.model,
|
||||
memoryUsed: controller.memoryUsed,
|
||||
memoryTotal: controller.memoryTotal,
|
||||
memoryFree: controller.memoryFree,
|
||||
utilizationGpu: controller.utilizationGpu,
|
||||
temperature: controller.temperatureGpu,
|
||||
vram: controller.vram,
|
||||
}))
|
||||
|
||||
// 发送GPU信息到渲染进程
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
mainWindow.webContents.send('gpu-info', gpuInfo)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取GPU信息时出错:', error)
|
||||
}
|
||||
}, 1000) // 每秒更新一次
|
||||
}, 200) // 每秒更新一次
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user