Доброго дня!
Заметил что диспетчер задач ошибочно показывает сколько тратятся ресурсов на приложения. Разность в 4-5 раза примерно :%:
Я сложил всю память что на 1-м фото и не как не сходится с результатом на втором фото(Windows 10 x64 pro 22H2). Мне нужно следить сколько расходует ресурсов приложение там скорость чтения/записи диска, сколько процентов ЦПУ, сколько ОЗУ, сколько видеопамяти. Примеров на просторах предостаточно, но все они с какими то ошибочными результатами (psutil, wmi)! Я запустил тестор задав ему расход и запустил анализ и тут что то пошло не так..
А теперь я вообще не пойму как понять верно ли выдает результат.. Подскажите какие есть надежные компоненты под Python которые предоставляют точные показатели расхода ресурсов пк?
Снимок11.PNG Снимок12.PNG
Как так вышло что сама система вшиндувс 10 от мокрыйсофт не понимает этого?
ИИ говорит:
Асинхронные операции ввода-вывода:
Многие современные системы и программы используют асинхронные операции ввода-вывода, которые позволяют процессам не блокироваться на операциях чтения/записи. Это может приводить к тому, что фактические операции на диске выполняются в другое время или в параллельном потоке, что не всегда отслеживается правильно.
Такие инструменты, как psutil и WMI, могут не улавливать полную нагрузку от асинхронных операций, так как они ориентируются на моментальные снимки текущей активности.
больше у него нет ответов.
Я слышал про буферизацию чтения/записи на windows 10 но все равно не понятно как это может идти в обход контроля?
Всякий раз когда просто хочу насладится кодингом какой либо задачи - обязательно будут тьма подводных камней и пока не расщепишь все варианты решения общая задача не сдвинется. тупо потерял сутки на анализ программы на затраты ресуров.. :angry:
Цитата: feron от 06.10.24, 13:49:24Мне нужно следить сколько расходует ресурсов приложение там скорость чтения/записи диска, сколько процентов ЦПУ, сколько ОЗУ, сколько видеопамяти.
Process Explorer (https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer)
Цитата: mikor от 06.10.24, 19:53:04Process Explorer
Мне для Python надо я думал это было понятно из
Цитата: feron от 06.10.24, 13:49:24(psutil, wmi)
И да я смотрел через него - он ошибочно показывает иногда.
Тут точнее Process Hacker.
Снимок11.PNG
Process Explorer показывает 290 МБ вот и где правда ?
Тоже самое , диспечер одно, а другие проги другой размер. там есть вариант в биах и байтах у разных прог, но все же сомнительно. просто оценка разная.
Поставь прогу мемредукт, очищает памят от ненужных процессов.
https://github.com/henrypp
Тут не только в памяти, больше всего расхождения в скорости чтении/записи программой на дисках.
С процессором - тут более менее но тоже бывает аж 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 ?
Итог: Используем метод kernel32.OpenProcess - точные данные с Process Explorer, Process Hacker
Компонент kernel32 настолько мощный что я смог управлять расходом ресурсов стороннего приложения(kernel32.SetInformationJobObject) и устанавливать планки. Например не использовать память больше 2 ГБ или не использовать все ядра а только одно и только не больше 20%. Вся прелесть еще в том что все дочерние процессы унаследовали ограничение - и в сумме не превысили планку на примере памяти.
(и еще нашел это - https://docs.python.org/3.10/library/resource.html#resource.RLIMIT_AS)
Обалдеть -> внедрение инородного кода в стороннее приложение средствами этого компонента.