Точный контроль использования ресурсов приложением.

Автор feron, 06.10.24, 13:49:24

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

feron

Доброго дня!

Заметил что диспетчер задач ошибочно показывает сколько тратятся ресурсов на приложения. Разность в 4-5 раза примерно  :%:
Я сложил всю память что на 1-м фото и не как не сходится с результатом на втором фото(Windows 10 x64 pro 22H2). Мне нужно следить сколько расходует ресурсов приложение там скорость чтения/записи диска, сколько процентов ЦПУ, сколько ОЗУ, сколько видеопамяти. Примеров на просторах предостаточно, но все они с какими то ошибочными результатами (psutil, wmi)! Я запустил тестор задав ему расход и запустил анализ и тут что то пошло не так..
А теперь я вообще не пойму как понять верно ли выдает результат.. Подскажите какие есть надежные компоненты под Python которые предоставляют точные показатели расхода ресурсов пк?

Снимок11.PNG Снимок12.PNG

feron

#1
Как так вышло что сама система вшиндувс 10 от мокрыйсофт не понимает этого?

ИИ говорит:
  Асинхронные операции ввода-вывода:
Многие современные системы и программы используют асинхронные операции ввода-вывода, которые позволяют процессам не блокироваться на операциях чтения/записи. Это может приводить к тому, что фактические операции на диске выполняются в другое время или в параллельном потоке, что не всегда отслеживается правильно.
Такие инструменты, как psutil и WMI, могут не улавливать полную нагрузку от асинхронных операций, так как они ориентируются на моментальные снимки текущей активности.
больше у него нет ответов.

Я слышал про буферизацию чтения/записи на windows 10 но все равно не понятно как это может идти в обход контроля?

feron

Всякий раз когда просто хочу насладится кодингом какой либо задачи - обязательно будут тьма подводных камней и пока не расщепишь все варианты решения общая задача не сдвинется.  тупо потерял сутки на анализ программы на затраты ресуров..  :angry:

mikor

Цитата: feron от 06.10.24, 13:49:24Мне нужно следить сколько расходует ресурсов приложение там скорость чтения/записи диска, сколько процентов ЦПУ, сколько ОЗУ, сколько видеопамяти.
Process Explorer
+ Благодарностей: 1

feron

Цитата: mikor от 06.10.24, 19:53:04Process Explorer

Мне для Python надо я думал это было понятно из

Цитата: feron от 06.10.24, 13:49:24(psutil, wmi)

И да я смотрел через него - он ошибочно показывает иногда.
Тут точнее Process Hacker.

Снимок11.PNG

feron

Process Explorer показывает 290 МБ вот и где правда ?

Toptotal

Тоже самое , диспечер одно, а другие проги другой размер. там есть вариант в биах и байтах у разных прог, но все же сомнительно. просто оценка разная.

Toptotal

Поставь прогу мемредукт, очищает памят от ненужных процессов.
https://github.com/henrypp
+ Благодарностей: 1

feron

#8
Тут не только в памяти, больше всего расхождения в скорости чтении/записи программой на дисках.
С процессором - тут более менее но тоже бывает аж 40% расхождения.

Цитата: Toptotal от 06.10.24, 21:08:19Тоже самое , диспечер одно, а другие проги другой размер. там есть вариант в биах и байтах у разных прог, но все же сомнительно. просто оценка разная.

Так у вас windows 7.1 может быть из за этого?

итак:
Process Hacker поддерживал командную строку и получил отпечаток исходников в
https://github.com/winsiderss/systeminformer

Process Explorer не поддерживает командную строку но построен на них что можно через командую строку использовать
https://learn.microsoft.com/ru-ru/sysinternals/downloads/listdlls
https://learn.microsoft.com/ru-ru/sysinternals/downloads/handle

мб есть что то готовое для Python ?

feron

#9
Итог: Используем метод kernel32.OpenProcess - точные данные с Process Explorer, Process Hacker

Компонент kernel32 настолько мощный что я смог управлять расходом ресурсов стороннего приложения(kernel32.SetInformationJobObject) и устанавливать планки.  Например не использовать память больше 2 ГБ или не использовать все ядра а только одно и только не больше 20%. Вся прелесть еще в том что все дочерние процессы унаследовали ограничение - и в сумме не превысили планку на примере памяти.
(и еще нашел это - https://docs.python.org/3.10/library/resource.html#resource.RLIMIT_AS)

feron

Обалдеть -> внедрение инородного кода в стороннее приложение средствами этого компонента.