Я работаю с сервисом C#, которая использует библиотеку Librehardwaremonitorlib для сбора аппаратных метрик, включая данные о энергопотреблении графического процессора. Тем не менее, я столкнулся с проблемой с датчиком мощности, соответствующим пакету графического процессора, который всегда возвращает значение 0,0 в службе, даже если тот же код работает нормально в приложении консоли. < /P>
В приложении консоли датчик мощности с именем пакета GPU обнаружен и возвращает правильное значение мощности. Однако в службе, хотя датчик присутствует (в соответствии с журналами), он не вводит условие, которое проверяет этот датчик и никогда не получает значение, отличное от 0,0. < /P>
Используемый код одинаков в обоих приложениях (консоль и сервис), и все остальные датчики работают правильно, что делает это поведение необъяснимым. В частности, датчик мощности GPU не функционирует, как ожидалось в службе, тогда как он работает нормально в приложении консоли, где он получает правильные значения. Вывод: < /p>
using LibreHardwareMonitor.Hardware;
using System;
namespace prueba
{
internal class Program
{
static void Main(string[] args)
{
float gpuLoad = 0.0f, gpuVramUsed = 0.0f, gpuVramTotal = 0.0f;
float gpuClock = 0.0f, gpuPower = 0.0f, gpuTemp = 0.0f;
Computer computer = new Computer
{
IsGpuEnabled = true
};
computer.Open();
foreach (IHardware hardware in computer.Hardware)
{
if (hardware.HardwareType == HardwareType.GpuNvidia || hardware.HardwareType == HardwareType.GpuAmd)
{
Console.WriteLine($"GPU detectada: {hardware.Name}");
Console.WriteLine("Sensores disponibles:");
hardware.Update(); // Actualiza los sensores antes de leerlos
foreach (ISensor sensor in hardware.Sensors)
{
Console.WriteLine($"- Nombre: {sensor.Name}, Tipo: {sensor.SensorType}, Valor: {sensor.Value}");
// Carga de la GPU
if (sensor.SensorType == SensorType.Load && sensor.Name.Contains("GPU Core"))
{
gpuLoad = sensor.Value ?? 0.0f;
}
// VRAM usada
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Used"))
{
gpuVramUsed = sensor.Value ?? 0.0f;
}
// VRAM total
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Total"))
{
gpuVramTotal = sensor.Value ?? 0.0f;
}
// Reloj de la GPU
if (sensor.SensorType == SensorType.Clock && sensor.Name.Contains("GPU Core"))
{
gpuClock = sensor.Value ?? 0.0f;
}
// Potencia de la GPU
if (sensor.SensorType == SensorType.Power && sensor.Name.Contains("GPU Package"))
{
gpuPower = sensor.Value ?? 0.0f;
}
// Temperatura de la GPU
if (sensor.SensorType == SensorType.Temperature && sensor.Name.Contains("GPU Core"))
{
gpuTemp = sensor.Value ?? 0.0f;
}
}
// Imprime los valores extraídos
Console.WriteLine("\nValores extraídos:");
Console.WriteLine($"- Carga de la GPU: {gpuLoad}%");
Console.WriteLine($"- VRAM Usada: {gpuVramUsed} MB");
Console.WriteLine($"- VRAM Total: {gpuVramTotal} MB");
Console.WriteLine($"- Reloj de la GPU: {gpuClock} MHz");
Console.WriteLine($"- Potencia de la GPU: {gpuPower} W");
Console.WriteLine($"- Temperatura de la GPU: {gpuTemp} °C");
}
}
computer.Close();
Console.WriteLine("\nProceso completado.");
}
}
}
< /code>
Консоль: < /p>
nombre: пакет GPU, Tipo: Power, Valor: 39,817 < /li>
Potencia de la GPU: 39,817 w < /li>
< /ul>
Сервисный код -> < /p>
static (float temperature, float tdp, float gpuLoad, float gpuVramUsed, float gpuVramTotal, float gpuClock, float gpuPower, float gpuTemp) GetHardwareInfo(Computer computer)
{
float temperature = 0.0f;
float tdp = 0.0f;
float gpuLoad = 0.0f;
float gpuVramUsed = 0.0f;
float gpuVramTotal = 0.0f;
float gpuClock = 0.0f;
float gpuPower = 0.0f;
float gpuTemp = 0.0f;
foreach (IHardware hardware in computer.Hardware)
{
hardware.Update(); // Actualiza los sensores
//sensores de CPU
if (hardware.HardwareType == HardwareType.Cpu)
{
foreach (ISensor sensor in hardware.Sensors)
{
Logger.Log($"Sensor detectado CPU: {sensor.Name} ({sensor.SensorType}) - Valor: {sensor.Value}\n");
// Buscamos el sensor de temperatura de la CPU
if (sensor.SensorType == SensorType.Temperature)
{
temperature = sensor.Value ?? 0.0f;
}
// Buscamos el sensor de TDP de la CPU
if (sensor.SensorType == SensorType.Power && sensor.Name.Contains("Package"))
{
tdp = sensor.Value ?? 0.0f;
}
}
}
//sensores de GPU
if (hardware.HardwareType == HardwareType.GpuNvidia || hardware.HardwareType == HardwareType.GpuAmd)
{
foreach (ISensor sensor in hardware.Sensors)
{
Logger.Log($"Sensor detectado GPU: {sensor.Name} ({sensor.SensorType}) - Valor: {sensor.Value}\n");
// Carga de la GPU
if (sensor.SensorType == SensorType.Load && sensor.Name.Contains("GPU Core"))
{
gpuLoad = sensor.Value ?? 0.0f;
}
// VRAM usada
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Used"))
{
gpuVramUsed = sensor.Value ?? 0.0f;
}
// VRAM total
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Total"))
{
gpuVramTotal = sensor.Value ?? 0.0f;
}
// Reloj de la GPU
if (sensor.SensorType == SensorType.Clock && sensor.Name.Contains("GPU Core"))
{
gpuClock = sensor.Value ?? 0.0f;
}
// Potencia de la GPU
if (sensor.SensorType == SensorType.Power && sensor.Name.Equals("GPU Package"))
{
gpuPower = sensor.Value ?? 0.0f;
}
// Temperatura de la GPU
if (sensor.SensorType == SensorType.Temperature && sensor.Name.Contains("GPU Core"))
{
gpuTemp = sensor.Value ?? 0.0f;
}
}
}
}
return (temperature, tdp, gpuLoad, gpuVramUsed, gpuVramTotal, gpuClock, gpuPower, gpuTemp);
}
< /code>
Чтение из моего файла журнала:
2025-02-07 11:57:27-Enviando Datos: 54 | 61,6 | 20 | 1833 | 12288 | 975,00 | 0,0 | 53 < /p>
Посмотрим, знает ли кто -нибудь, почему это происходит, и может мне помочь. Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/794 ... monitorlib
Проблемы с датчиком типовой силы для графического процессора в Librehardwaremonitorlib ⇐ C#
Место общения программистов C#
1738937033
Anonymous
Я работаю с сервисом C#, которая использует библиотеку Librehardwaremonitorlib для сбора аппаратных метрик, включая данные о энергопотреблении графического процессора. Тем не менее, я столкнулся с проблемой с датчиком мощности, соответствующим пакету графического процессора, который всегда возвращает значение 0,0 в службе, даже если тот же код работает нормально в приложении консоли. < /P>
В приложении консоли датчик мощности с именем пакета GPU обнаружен и возвращает правильное значение мощности. Однако в службе, хотя датчик присутствует (в соответствии с журналами), он не вводит условие, которое проверяет этот датчик и никогда не получает значение, отличное от 0,0. < /P>
Используемый код одинаков в обоих приложениях (консоль и сервис), и все остальные датчики работают правильно, что делает это поведение необъяснимым. В частности, датчик мощности GPU не функционирует, как ожидалось в службе, тогда как он работает нормально в приложении консоли, где он получает правильные значения. Вывод: < /p>
using LibreHardwareMonitor.Hardware;
using System;
namespace prueba
{
internal class Program
{
static void Main(string[] args)
{
float gpuLoad = 0.0f, gpuVramUsed = 0.0f, gpuVramTotal = 0.0f;
float gpuClock = 0.0f, gpuPower = 0.0f, gpuTemp = 0.0f;
Computer computer = new Computer
{
IsGpuEnabled = true
};
computer.Open();
foreach (IHardware hardware in computer.Hardware)
{
if (hardware.HardwareType == HardwareType.GpuNvidia || hardware.HardwareType == HardwareType.GpuAmd)
{
Console.WriteLine($"GPU detectada: {hardware.Name}");
Console.WriteLine("Sensores disponibles:");
hardware.Update(); // Actualiza los sensores antes de leerlos
foreach (ISensor sensor in hardware.Sensors)
{
Console.WriteLine($"- Nombre: {sensor.Name}, Tipo: {sensor.SensorType}, Valor: {sensor.Value}");
// Carga de la GPU
if (sensor.SensorType == SensorType.Load && sensor.Name.Contains("GPU Core"))
{
gpuLoad = sensor.Value ?? 0.0f;
}
// VRAM usada
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Used"))
{
gpuVramUsed = sensor.Value ?? 0.0f;
}
// VRAM total
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Total"))
{
gpuVramTotal = sensor.Value ?? 0.0f;
}
// Reloj de la GPU
if (sensor.SensorType == SensorType.Clock && sensor.Name.Contains("GPU Core"))
{
gpuClock = sensor.Value ?? 0.0f;
}
// Potencia de la GPU
if (sensor.SensorType == SensorType.Power && sensor.Name.Contains("GPU Package"))
{
gpuPower = sensor.Value ?? 0.0f;
}
// Temperatura de la GPU
if (sensor.SensorType == SensorType.Temperature && sensor.Name.Contains("GPU Core"))
{
gpuTemp = sensor.Value ?? 0.0f;
}
}
// Imprime los valores extraídos
Console.WriteLine("\nValores extraídos:");
Console.WriteLine($"- Carga de la GPU: {gpuLoad}%");
Console.WriteLine($"- VRAM Usada: {gpuVramUsed} MB");
Console.WriteLine($"- VRAM Total: {gpuVramTotal} MB");
Console.WriteLine($"- Reloj de la GPU: {gpuClock} MHz");
Console.WriteLine($"- Potencia de la GPU: {gpuPower} W");
Console.WriteLine($"- Temperatura de la GPU: {gpuTemp} °C");
}
}
computer.Close();
Console.WriteLine("\nProceso completado.");
}
}
}
< /code>
Консоль: < /p>
nombre: пакет GPU, Tipo: Power, Valor: 39,817 < /li>
Potencia de la GPU: 39,817 w < /li>
< /ul>
Сервисный код -> < /p>
static (float temperature, float tdp, float gpuLoad, float gpuVramUsed, float gpuVramTotal, float gpuClock, float gpuPower, float gpuTemp) GetHardwareInfo(Computer computer)
{
float temperature = 0.0f;
float tdp = 0.0f;
float gpuLoad = 0.0f;
float gpuVramUsed = 0.0f;
float gpuVramTotal = 0.0f;
float gpuClock = 0.0f;
float gpuPower = 0.0f;
float gpuTemp = 0.0f;
foreach (IHardware hardware in computer.Hardware)
{
hardware.Update(); // Actualiza los sensores
//sensores de CPU
if (hardware.HardwareType == HardwareType.Cpu)
{
foreach (ISensor sensor in hardware.Sensors)
{
Logger.Log($"Sensor detectado CPU: {sensor.Name} ({sensor.SensorType}) - Valor: {sensor.Value}\n");
// Buscamos el sensor de temperatura de la CPU
if (sensor.SensorType == SensorType.Temperature)
{
temperature = sensor.Value ?? 0.0f;
}
// Buscamos el sensor de TDP de la CPU
if (sensor.SensorType == SensorType.Power && sensor.Name.Contains("Package"))
{
tdp = sensor.Value ?? 0.0f;
}
}
}
//sensores de GPU
if (hardware.HardwareType == HardwareType.GpuNvidia || hardware.HardwareType == HardwareType.GpuAmd)
{
foreach (ISensor sensor in hardware.Sensors)
{
Logger.Log($"Sensor detectado GPU: {sensor.Name} ({sensor.SensorType}) - Valor: {sensor.Value}\n");
// Carga de la GPU
if (sensor.SensorType == SensorType.Load && sensor.Name.Contains("GPU Core"))
{
gpuLoad = sensor.Value ?? 0.0f;
}
// VRAM usada
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Used"))
{
gpuVramUsed = sensor.Value ?? 0.0f;
}
// VRAM total
if (sensor.SensorType == SensorType.SmallData && sensor.Name.Contains("GPU Memory Total"))
{
gpuVramTotal = sensor.Value ?? 0.0f;
}
// Reloj de la GPU
if (sensor.SensorType == SensorType.Clock && sensor.Name.Contains("GPU Core"))
{
gpuClock = sensor.Value ?? 0.0f;
}
// Potencia de la GPU
if (sensor.SensorType == SensorType.Power && sensor.Name.Equals("GPU Package"))
{
gpuPower = sensor.Value ?? 0.0f;
}
// Temperatura de la GPU
if (sensor.SensorType == SensorType.Temperature && sensor.Name.Contains("GPU Core"))
{
gpuTemp = sensor.Value ?? 0.0f;
}
}
}
}
return (temperature, tdp, gpuLoad, gpuVramUsed, gpuVramTotal, gpuClock, gpuPower, gpuTemp);
}
< /code>
Чтение из моего файла журнала:
2025-02-07 11:57:27-Enviando Datos: 54 | 61,6 | 20 | 1833 | 12288 | 975,00 | 0,0 | 53 < /p>
Посмотрим, знает ли кто -нибудь, почему это происходит, и может мне помочь. Большое спасибо!
Подробнее здесь: [url]https://stackoverflow.com/questions/79420825/problems-with-the-sensor-of-type-power-for-gpu-in-librehardwaremonitorlib[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия