Как мне создать способ, которым склонны к CGROUP, чтобы захватить процессору и использование памяти в моем приложении?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как мне создать способ, которым склонны к CGROUP, чтобы захватить процессору и использование памяти в моем приложении?

Сообщение Anonymous »

Все, что я хочу сделать, это иметь способ, которым склонны к CGROUP, захват процессора и использования памяти в моем приложении C#. Было очень трудно попытаться выяснить это. Я запускаю приложения C# на .NET 8.0 и .NET 9.0, но этот конкретный пример приведен с .NET 9.0. Stats выводила. Проблема в том, что Iresourcemonitor теперь помечен как устаревший. Это было так просто: < /p>

Код: Выделить всё

// Monitor is IResourceMonitor and gets registered in DI
var utilization = monitor.GetUtilization(TimeSpan.FromSeconds(3));
var resources = utilization.SystemResources;
// Use various properties from utilization and resources for CPU and memory usage
< /code>
Но iresourcemonitor < /code> снижается этим сообщением: < /p>

extobs0001: интерфейс 'microsoft.extensions.diagnostics.resourcemonitoring.iresourcenitor' Рассмотрим использование мониторинга ресурсов наблюдаемых инструментов. '

, будучи незнакомым с сбором показателей и всеми связанными соглашениями об именовании, я пытался исследовать и использовать System.diagnostics.metrics 
, но это не работает для меня:
using MeterListener listener = new();

listener.InstrumentPublished = (instrument, l) =>
l.EnableMeasurementEvents(instrument);
};

listener.SetMeasurementEventCallback((instrument, value, tags, state) =>
{
Console.WriteLine($"[LONG] {instrument.Name} = {value} {instrument.Unit}");
});

listener.SetMeasurementEventCallback((instrument, value, tags, state) =>
{
Console.WriteLine($"[DOUBLE] {instrument.Name} = {value:F2} {instrument.Unit}");
});

listener.SetMeasurementEventCallback((instrument, value, tags, state) =>
{
Console.WriteLine($"[INT] {instrument.Name} = {value:F2} {instrument.Unit}");
});

listener.SetMeasurementEventCallback((instrument, value, tags, state) =>
{
Console.WriteLine($"[DECIMAL] {instrument.Name} = {value:F2} {instrument.Unit}");
});

listener.Start();

Console.WriteLine("Listening for metrics... Press Ctrl+C to exit.");

List memory = [];

while (true)
{
var array = new byte[1024];

var index = Random.Shared.Next(array.Length);

array[index] = (byte)Random.Shared.Next(0, 255); // Touch memory to make sure it's being used

Console.WriteLine(array[index]);

memory.Add(array); // Keep adding memory

await Task.Delay(TimeSpan.FromSeconds(3));
}
< /code>
Я пробовал это в Windows и Linux (и в контейнере Linux), и обратные вызовы никогда не вызываются, даже если я вижу, что все события измерения включены. Все, что я хочу сделать, это получить использование ЦП и памяти, и кажется, что это сложнее или более вовлечено, чем я думал. (т.е. я не хочу писать и поддерживать код, который сам запрашивает и обрабатывает значения из файловой системы cgroup)

Подробнее здесь: https://stackoverflow.com/questions/796 ... hin-my-app
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»