feat: Add GPU monitoring settings redirection (#11103)

This commit is contained in:
ssongliu 2025-11-27 17:57:25 +08:00 committed by GitHub
parent e89311d5d4
commit bbc14bb723
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 27 additions and 14 deletions

View file

@ -635,21 +635,18 @@ func saveXPUDataToDB() {
} }
} }
func loadGPUInfoInt(val string) int { func loadGPUInfoInt(val string) int {
valItem := strings.ReplaceAll(val, "MiB", "") val = strings.TrimSuffix(val, "%")
valItem = strings.ReplaceAll(valItem, "C", "") val = strings.TrimSpace(val)
valItem = strings.ReplaceAll(valItem, "%", "") data, _ := strconv.Atoi(val)
valItem = strings.TrimSpace(valItem)
data, _ := strconv.Atoi(valItem)
return data return data
} }
func loadGPUInfoFloat(val string) float64 { func loadGPUInfoFloat(val string) float64 {
valItem := strings.ReplaceAll(val, "W", "") val = strings.TrimSpace(val)
valItem = strings.ReplaceAll(valItem, "MB", "") suffixes := []string{"W", "MB", "MiB", "°C", "C", "%"}
valItem = strings.ReplaceAll(valItem, "MiB", "") for _, suffix := range suffixes {
valItem = strings.ReplaceAll(valItem, "C", "") val = strings.TrimSuffix(val, suffix)
valItem = strings.ReplaceAll(valItem, "°C", "") }
valItem = strings.ReplaceAll(valItem, "%", "") val = strings.TrimSpace(val)
valItem = strings.TrimSpace(valItem) data, _ := strconv.ParseFloat(val, 64)
data, _ := strconv.ParseFloat(valItem, 64)
return data return data
} }

View file

@ -1210,6 +1210,7 @@ const message = {
defaultIO: 'Default Disk', defaultIO: 'Default Disk',
defaultIOHelper: 'Default disk option displayed in monitoring and overview interfaces', defaultIOHelper: 'Default disk option displayed in monitoring and overview interfaces',
cleanMonitor: 'Clear Monitoring Records', cleanMonitor: 'Clear Monitoring Records',
cleanHelper: 'This operation will clear all monitoring records including GPU. Continue?',
avgLoad: 'Load average', avgLoad: 'Load average',
loadDetail: 'Load detail', loadDetail: 'Load detail',

View file

@ -1218,6 +1218,7 @@ const message = {
defaultIO: 'Disco Predeterminado', defaultIO: 'Disco Predeterminado',
defaultIOHelper: 'Opción de disco predeterminada mostrada en las interfaces de monitoreo y resumen', defaultIOHelper: 'Opción de disco predeterminada mostrada en las interfaces de monitoreo y resumen',
cleanMonitor: 'Limpiar Registros de Monitoreo', cleanMonitor: 'Limpiar Registros de Monitoreo',
cleanHelper: 'Esta operación borrará todos los registros de monitoreo, incluidos los de GPU. ¿Continuar?',
avgLoad: 'Carga promedio', avgLoad: 'Carga promedio',
loadDetail: 'Detalle de carga', loadDetail: 'Detalle de carga',

View file

@ -1174,6 +1174,7 @@ const message = {
defaultIO: 'デフォルトディスク', defaultIO: 'デフォルトディスク',
defaultIOHelper: '監視および概要インターフェースに表示されるデフォルトのディスクオプション', defaultIOHelper: '監視および概要インターフェースに表示されるデフォルトのディスクオプション',
cleanMonitor: '監視記録をクリア', cleanMonitor: '監視記録をクリア',
cleanHelper: 'この操作によりGPUを含むすべての監視記録がクリアされます続行しますか',
avgLoad: 'ロード平均', avgLoad: 'ロード平均',
loadDetail: '詳細を読み込みます', loadDetail: '詳細を読み込みます',

View file

@ -1166,6 +1166,7 @@ const message = {
defaultIO: '기본 디스크', defaultIO: '기본 디스크',
defaultIOHelper: '모니터링 개요 인터페이스에 표시되는 기본 디스크 옵션', defaultIOHelper: '모니터링 개요 인터페이스에 표시되는 기본 디스크 옵션',
cleanMonitor: '모니터링 기록 지우기', cleanMonitor: '모니터링 기록 지우기',
cleanHelper: ' 작업은 GPU를 포함한 모든 모니터링 기록을 지웁니다. 계속하시겠습니까?',
avgLoad: '평균 부하', avgLoad: '평균 부하',
loadDetail: '부하 세부사항', loadDetail: '부하 세부사항',

View file

@ -1204,6 +1204,7 @@ const message = {
defaultIO: 'Cakera Lalai', defaultIO: 'Cakera Lalai',
defaultIOHelper: 'Pilihan cakera lalai yang dipaparkan dalam antara muka pemantauan dan gambaran keseluruhan', defaultIOHelper: 'Pilihan cakera lalai yang dipaparkan dalam antara muka pemantauan dan gambaran keseluruhan',
cleanMonitor: 'Kosongkan Rekod Pemantauan', cleanMonitor: 'Kosongkan Rekod Pemantauan',
cleanHelper: 'Operasi ini akan membersihkan semua rekod pemantauan termasuk GPU. Teruskan?',
avgLoad: 'Purata beban', avgLoad: 'Purata beban',
loadDetail: 'Butiran beban', loadDetail: 'Butiran beban',

View file

@ -1198,6 +1198,7 @@ const message = {
defaultIO: 'Disco Padrão', defaultIO: 'Disco Padrão',
defaultIOHelper: 'Opção de disco padrão exibida nas interfaces de monitoramento e visão geral', defaultIOHelper: 'Opção de disco padrão exibida nas interfaces de monitoramento e visão geral',
cleanMonitor: 'Limpar Registros de Monitoramento', cleanMonitor: 'Limpar Registros de Monitoramento',
cleanHelper: 'Esta operação limpará todos os registros de monitoramento, incluindo GPU. Continuar?',
avgLoad: 'Média de carga', avgLoad: 'Média de carga',
loadDetail: 'Detalhes da carga', loadDetail: 'Detalhes da carga',

View file

@ -1200,6 +1200,7 @@ const message = {
defaultIO: 'Диск по Умолчанию', defaultIO: 'Диск по Умолчанию',
defaultIOHelper: 'Опция диска по умолчанию, отображаемая в интерфейсах мониторинга и обзора', defaultIOHelper: 'Опция диска по умолчанию, отображаемая в интерфейсах мониторинга и обзора',
cleanMonitor: 'Очистить Записи Мониторинга', cleanMonitor: 'Очистить Записи Мониторинга',
cleanHelper: 'Эта операция очистит все записи мониторинга, включая GPU. Продолжить?',
avgLoad: 'Средняя нагрузка', avgLoad: 'Средняя нагрузка',
loadDetail: 'Детали нагрузки', loadDetail: 'Детали нагрузки',

View file

@ -1225,6 +1225,7 @@ const message = {
defaultIO: 'Varsayılan Disk', defaultIO: 'Varsayılan Disk',
defaultIOHelper: 'İzleme ve genel bakış arayüzlerinde görüntülenen varsayılan disk seçeneği', defaultIOHelper: 'İzleme ve genel bakış arayüzlerinde görüntülenen varsayılan disk seçeneği',
cleanMonitor: 'İzleme Kayıtlarını Temizle', cleanMonitor: 'İzleme Kayıtlarını Temizle',
cleanHelper: 'Bu işlem GPU dahil tüm izleme kayıtlarını temizleyecektir. Devam etmek istiyor musunuz?',
avgLoad: 'Ortalama yük', avgLoad: 'Ortalama yük',
loadDetail: 'Yük detayı', loadDetail: 'Yük detayı',

View file

@ -1145,6 +1145,7 @@ const message = {
defaultIO: '預設磁碟', defaultIO: '預設磁碟',
defaultIOHelper: '預設監控和概覽介面顯示的磁碟選項', defaultIOHelper: '預設監控和概覽介面顯示的磁碟選項',
cleanMonitor: '清空監控記錄', cleanMonitor: '清空監控記錄',
cleanHelper: '該操作將清空包括 GPU 在內的所有監控記錄是否繼續',
avgLoad: '平均負載', avgLoad: '平均負載',
loadDetail: '負載詳情', loadDetail: '負載詳情',

View file

@ -1151,6 +1151,7 @@ const message = {
defaultIO: '默认磁盘', defaultIO: '默认磁盘',
defaultIOHelper: '默认监控和概览界面显示的磁盘选项', defaultIOHelper: '默认监控和概览界面显示的磁盘选项',
cleanMonitor: '清空监控记录', cleanMonitor: '清空监控记录',
cleanHelper: '该操作将清空包括 GPU 在内的所有监控记录是否继续',
avgLoad: '平均负载', avgLoad: '平均负载',
loadDetail: '负载详情', loadDetail: '负载详情',

View file

@ -27,6 +27,7 @@
<el-option v-for="item in options" :key="item" :label="item" :value="item" /> <el-option v-for="item in options" :key="item" :label="item" :value="item" />
</el-select> </el-select>
<TableRefresh class="float-right" @search="search()" /> <TableRefresh class="float-right" @search="search()" />
<el-button icon="Setting" class="float-right mr-2" @click="quickJump()" />
</div> </div>
</el-card> </el-card>
</div> </div>
@ -154,6 +155,7 @@ import { GlobalStore } from '@/store';
import { shortcuts } from '@/utils/shortcuts'; import { shortcuts } from '@/utils/shortcuts';
import { Host } from '@/api/interface/host'; import { Host } from '@/api/interface/host';
import i18n from '@/lang'; import i18n from '@/lang';
import { routerToName } from '@/utils/router';
const globalStore = GlobalStore(); const globalStore = GlobalStore();
@ -292,6 +294,10 @@ function initPowerCharts(baseDate: any, items: any) {
}; };
} }
const quickJump = () => {
routerToName('HostMonitorSetting');
};
function initXpuPowerCharts(baseDate: any, items: any) { function initXpuPowerCharts(baseDate: any, items: any) {
let list = items.map(function (item: any) { let list = items.map(function (item: any) {
return { value: Number(item.used.toFixed(2)), data: item }; return { value: Number(item.used.toFixed(2)), data: item };

View file

@ -142,7 +142,7 @@ const onChangeIO = () => {
}; };
const onClean = async () => { const onClean = async () => {
ElMessageBox.confirm(i18n.global.t('commons.msg.clean'), i18n.global.t('monitor.cleanMonitor'), { ElMessageBox.confirm(i18n.global.t('monitor.cleanHelper'), i18n.global.t('monitor.cleanMonitor'), {
confirmButtonText: i18n.global.t('commons.button.confirm'), confirmButtonText: i18n.global.t('commons.button.confirm'),
cancelButtonText: i18n.global.t('commons.button.cancel'), cancelButtonText: i18n.global.t('commons.button.cancel'),
type: 'info', type: 'info',