1

Я ищу инструмент для отслеживания использования GDI, чтобы получать оповещения, когда он приближается к максимальному. Это на Windows XP SP3.

В качестве фона, вот некоторые связанные страницы / приложения, которые не совсем соответствуют требованиям:

На этом есть ветка по адресу http://forum.sysinternals.com/topic13580.html, но реального ответа нет.

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

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

У них нет итогов GDI:
* Process Explorer
* Системный обозреватель

У них нет GDI:
* PsTools
* Process Viewer
* список заданий
* Диспетчер задач

2 ответа2

4

Существует инструмент с графическим интерфейсом / командной строкой, который называется GDIView. Инструмент может сделать дамп в текстовый файл или CSV. Он имеет статистику по каждому процессу, поэтому вам нужно будет обработать вывод (powershell мог бы обработать это), а затем предупредить, если общее количество превысит ваши пределы.

2

Пожалуйста, смотрите ответ @ uSlackr для правильного ответа GDIView и его ссылку. Я добавляю второй ответ, чтобы поделиться сценарием Cygwin bash, который я написал вокруг него, чтобы отслеживать итоги и выдавать оповещения, когда он превышает определенную сумму в случае, если это полезно для других.
Этот сценарий отображает общее время и GDI каждые ВНУТРЕННИЕ (по умолчанию 120) секунд. Если общее количество GDI превышает GDILIMIT (по умолчанию 10000), оно вызывает окно сообщения, а также отражает 15 лучших пользователей GDI, чтобы вы могли видеть, кто находится в контакте. Спасибо @uSlackr!

#! /bin/bash

INTERVAL=120
GDILIMIT=10000

for (( ; ; ))
do
/c/apps/gdiview/GDIView.exe /stab `cygpath -w $TMP/gdiview.txt`
gdi=`awk '{ SUM += $3} END { print SUM }' < $TMP/gdiview.txt`
echo -e `date +%H:%M` $gdi "\033]2;$(basename $0) $gdi\007"
if [ "$gdi" -gt "$GDILIMIT" ] 
then
  head -15 $TMP/gdiview.txt
  msg $USER "GDI is $gdi"
fi
sleep $INTERVAL
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .