Время на прочтение4 мин
Количество просмотров44K
Краткое содержание: история в картинках, как я «улучшал» Task Manager в Windows Server 2012
Преамбула
Началось всё с того, что я в тестовых целях (выяснить, есть ли принципиальное различие), поставил Windows Server 2012. Для тех, кто не знает, это такая Windows 8, только дороже. Ну, а ещё, от него можно оторвать GUI и поставить всякие разные роли.
Ну так вот, одна из наиболее приятных вещей в Windows 8 для меня — новый Таск Менеджер, и красивый и удобный. Какое же было моё удивление, когда я открыл его в WinServer 2012 и не увидел некоторых данных.
Вот пара картинок для понятности.
Windows 8:
Windows Server 2012
Как видно, не хватает пары вкладок, кроме того, отсутствуют столбцы с диском и сетью. Диск ещё отсутствут на вкладке Performance, но это хотя бы можно включить командой:
diskperf -y
Вооружившись гуглом, я выяснил, что проблема в следующем:
This is because disk metrics are disabled by default on Windows Server 2012 because of significant performance impact, however, it is enabled in Windows 8.Use Resource Monitor to gauge Disk and Network IO usage. — Syed Yusuf from Microsoft R&D
(тут подробнее)
Что в переводе на русский звучит как «слишком большая нагрузка на диск, поэтому мы это убрали».
Так и представляю картину: серверная, все бегают в мыле, сервер не отвечает, ужасающая нагрузка. И скромный админ в углу: «я случайно открыл таск менеджер на сервере вместо своего нетбука, я больше не буууду!».
То есть, по мнению Microsoft на могучих серверах это вызывает огромную нагрузку, но при этом на планшетах совершенно не вызывает проблем, поэтому там уберём, тут включим. При том, что на серверах таск менеджер запускается раз в полгода, как раз, чтобы посмотреть на проблемы с производительностью, а нам убирают данную возможность по какой-то странной причине.
В общем, меня это не устроило, и я начал исследовать проблему.
Версия 1. Реестр
Зная Microsoft и то, что всё настраивается в реестре, я начал копать taskmgr.exe с целью найти возможные ключи. Единственный подходящий ключ обнаружился в
HKLM\ System\CurrentControlSet\Services\Partmgr, EnableCounterForIoctl
Но как я уже выяснил раньше, этот ключ включается командой diskperf и интереса не представляет.
Версия 2. Неужели действительно проверка на тип системы?
Совершенно не веря, что такое может быть (Microsoft обычно просто выпиливает лишние файлы), я решил проверить, а что будет, если сказать Таск Менеджеру, что он на самом деле на клиентской системе.
Чтобы проверить версию системы из своего приложения, нужно вызвать функцию GetVersionEx. Вернётся структура OSVERSIONINFOEX, где в поле dwProductType будет указано, сервеная или клиентская версия системы.
При этом, GetVersionEx вызывает RtlGetNtProductType, которая в регистре ecx возвращает 1 для клиентской и 3 для серверной. С неё-то и начнём.
Отладчиками под Windows я пользовался мало, поэтому выбрал единственный, с которым умею обращаться в данном случае, WinDbg (прямая ссылка на не самую свежую версию). Для него есть замечательная команда, которой можно сделать автоматический брекпоинт с заменой:
bp ntdll!RtlGetNtProductType "as /x ReturnValue rcx; gu; ed ReturnValue 1; g"
(т.е. открываем наш taskmgr.exe, выполняем команду, запускаем выполнение).
И… идея сработала. Все вкладки появились, да ещё и полностью рабочие. Т.е. функционально всё присутствует, а отключено только по политическим мотивам (могли бы по тем же мотивам их просто спрятать по умолчанию).
Соответственно, нужно копать дальше в данном направлении. Ставим бряк на ntdll!RtlGetNtProductType и смотрим по Call Stack, когда нас вызовет реальный taskmgr, а не инициализационные куски. Выглядит это примерно так:
Идём по стектрейсу ставим брекпоинт на TaskMgr (или доходим вручную) и видим следующий код:
Это проверка кода возврата, тут нам делать нечего, идём чуть дальше:
Вот он, самый сок!
Сравнивается регистр на 1 и на 3, и в зависимости от ситуации идёт переход на нужную ветку.
Ставим al в 1 и наблюдаем что всё успешно работает. Половина пути пройдена. Нужно думать над решениями, как это всё оформить на постоянной основе.
- Можно сделать скрипт для WInDbg, который всё будет делать сам. Неспортивно
- Пропатчить память перед запуском TaskMgr. Вариант пришлось отбросить, потому что я не знаю как это сделать, а разбираться долго.
- Пропатчить сам taskmgr.exe. Самый простой вариант, только сломаем целостность файла и система может периодически его возвращать к старой версии. Но решил, что с этим можно прожить и стал думать над этим вариантом
Итак, нам нужно заменить данный код. Способов заменить его множество: сравнить al не с 1, а с 3, заменить jne, на je, изменить адрес джампа. В общем, я выбрал самый дубовый способ, заменить jne на пару nop’ов. Так что в результате, будет бессмысленное сравнение, затем прыжок куда надо. Делается это просто. Запоминаем нужную последовательность байт: 8a84244a0100003с01, находим её в вашем любимом Hex-редакторе и меняем на что надо. В данном случае 750c на 9090.
Сохраняем и…
Выясням, что мы сломали цифровую подпись файла (ну, кто бы сомневался). Значит её надо убить. Вариантов много, но мы на хабре, поэтому воспользуемся программой design от хабраюзера DnV.
Запускаем… и ничего. Те же проблемы с повреждённой подписью. Откуда он её берёт? Не буду утомлять рассказом про то, как я пытался с этим разобраться, подписывал файл самостоятельно, готов был бросить всё это дело, а оказалось…
(это скриншот из программы Stud_PE).
Заценили шутку от Microsoft? Целостность файла проверяется флагом в самом файле. Тайный смысл этого мне не понять, если только защита от глупых вирусов.
Как я дошёл до этого флага, сам не понимаю, но в общем, снимаем его, сохраняем, и… всё работает!
После этого заменяем оригинальный (не забывая раздать себе права на это действие), и пользуемся продвинутым Таск Менеджером.
Ну и бонусом пишем статью на хабр Надеюсь, что вам она была интересна.
Если кто захочет повторить в образовательных целях, то для проверки корректности результата вот вам файл.
UPDATE 08.10.2018
Пользователь AJlex обновил Taskmgr
Reading Time: 2 minutes
I’m the kind of guy that ALWAYS has task manager open. I’m serious, ask anyone I work with — I sometimes even have a whole screen for Task Manager and Resource Monitor (Maybe that’s why I like SCOM so much?). Though, I’ve noticed a couple of times on Windows 8, Windows 8.1, Server 2012, Server 2012 R2 that when I open task manager the stats just freeze. The system is fine, everything is normal but the stats just freeze — like this.
They never do anything else, and just stay at that initial opening mark. So frustrating! I’ve SFC’d, I’ve rebuilt my performance library, I’ve copied new bits for taskmgr.exe, everything! It turns out for some reason sometimes the view speed gets set to pause. I never would have though of that, but somehow it just happens (though, I’ve never seen it happen in any OS earlier than Windows 8/Server 2012).
Here’s how you fix it. Go into View –> Update speed and notice it’s set to pause. So strange.
Go ahead and set it to normal and you’re back in business!
I hope I’ve made your day, at least a little bit easier.
Thanks,
The Windows Server operating system is one of the most common platforms for organizing server environments with GUI. It provides ample opportunities for managing resources and ensuring stable operation of the server. However, as with any operating system, sometimes complications arise that can make monitoring and managing resources difficult. One of these difficulties may be the lack of visible CPU load in the task manager, even when the dedicated server is actively running. In this article, we will look at why this can happen and offer a solution to this situation, which most often occurs on Windows Server 2019-2022.
Why is there no load in the task manager?
The lack of visible CPU load in the task manager can be a concern for server administrators. In this case, the server may work normally, but display zero CPU load. This situation can arise for several reasons.
- Some update. Perhaps some OS update can/could cause the load to be displayed incorrectly in the task manager. In this case, it is recommended to update the system or roll back the latest updates.
- Errors with monitoring through third-party software. Incorrect monitoring programs or the operating features of their tools can lead to incorrect display of CPU load data.
Resolution of the situation.
To resolve the no-load issue in Windows Server 2019 Task Manager, you can use the following steps:
1. Monitoring Check. Make sure the monitoring tools you use are configured correctly. Review your resource monitoring configuration to ensure it reflects your actual workload.
2. Using the additional HWiNFO tool. If after completing the above steps the load is still not displayed correctly, you can use the HWiNFO tool. This is a free application that provides detailed information about your computer’s hardware and resources. Run HWiNFO and this may help restore normal load display in Task Manager. Once the load starts to display correctly, you can uninstall the program if it is no longer needed. You can download the program from the link: https://www.hwinfo.com/download/. You need to install the program and set the following settings in it.
3. Update drivers and software. Before doing anything else, make sure that all drivers and software on the server are updated to the latest versions. This may resolve the situation if it is due to incompatibility or outdated components. This situation was described on the Microsoft forum.
Results
The lack of visible load in the Windows Server Task Manager can be caused by various factors, including software errors, drivers, and monitoring. The solution to this situation involves updating drivers and software, setting up monitoring and, in some cases, using a tool such as HWiNFO to restore the correct load mapping. It’s important to remember that a lack of visible load in Task Manager doesn’t always mean there’s a problem with the server, and in most cases it can be fixed with relatively simple configuration and maintenance techniques.
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
Server 2012 Зависает, в течение суток в какой-то момент перестает на что-то реагировать, хотя мышь двигается06.02.2016, 14:15. Показов 8857. Ответов 11 Уважаемые Гуру! Ну как то так вообщем. Я программист, так что сильно не бейте. Заинтересован решить проблему, т.к. мне отдают его под нужные мне сервера (web, mysql и т.п.) Добавлено через 5 часов 40 минут
0 |
IT_Exp Эксперт 34794 / 4073 / 2104 Регистрация: 17.06.2006 Сообщений: 32,602 Блог |
06.02.2016, 14:15 |
Ответы с готовыми решениями: Иногда мышь перестает реагировать на действия Мышь то перестает реагировать, то бегает сама по экрану, прокручивает страницу, кнопки сами нажимаются :((( Зависает компьютер, двигается мышь 11 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
06.02.2016, 16:36 [ТС] |
|
Информация по логическим и физическим дискам — во вложении Миниатюры
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,759 Записей в блоге: 16 |
|
10.02.2016, 12:01 |
|
Что написано в журнале событий?
0 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
10.02.2016, 15:26 [ТС] |
|
Журнал пустой, устанавливал не я. Сисадмин говорил , что все родное. Близкие проблемы обсуждались [сторонний форум] , [сторонний форум] . Тесты памяти и дисков результата не дали. Сейчас запретил доступ по mstsc — посмотрю останутся ли сбои. Производительность поставил на максимум и отключил гашение экрана. Теперь при зависании — экран виден, диспетчер задач работает, но остальные программы подвисают, скажем google chrome и прочие. Т.е. клики мышкой на значках запущенный программ (у меня был запущен chrome, диспетчер задач) — эффекта не дают. Добавлено через 11 минут
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,759 Записей в блоге: 16 |
|
10.02.2016, 16:10 |
|
Сообщение от АТерентьев Журнал пустой Прямо совсем пустой? Сообщение от АТерентьев Теперь при зависании — экран виден, диспетчер задач работает Каков результат загрузки ЦП и ОЗУ на вкладке «Быстродействие»? Сообщение от АТерентьев программы подвисают, скажем google chrome и прочие. А «что делает» на сервере Хром?
0 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
10.02.2016, 16:25 [ТС] |
|
1. Не совсем пустой, пришлю, когда у сервера окажусь. Сервер дома на кухне крутится, от сети отключил пока.
0 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
10.02.2016, 19:29 [ТС] |
|
Память и ЦП через сутки после перезагрузки. Миниатюры
0 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
10.02.2016, 19:55 [ТС] |
|
По логам.
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,759 Записей в блоге: 16 |
|
11.02.2016, 06:59 |
|
Замеры нагрузки были сделаны в момент зависания сервера?
0 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
11.02.2016, 09:10 [ТС] |
|
1. Замеры — в период нормальной работы, но как оказалось сервер завис примерно через час. Т.е. сутки + 1 час. 2) Судя по виду виснет процесс explorer.exe http://forum.oszone.net/post-2430743.html Добавлено через 6 минут
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,759 Записей в блоге: 16 |
|
11.02.2016, 09:31 |
|
Сообщение от АТерентьев Замеры — в период нормальной работы, но как оказалось сервер завис примерно через час. Ну для начала ограничьте доступ к серверу от сына, потом нужно сделать замер нагрузки ОЗУ и ЦП именно при зависании.
0 |
25 / 24 / 18 Регистрация: 16.10.2009 Сообщений: 1,162 |
|
11.02.2016, 09:53 [ТС] |
|
1. При зависании — как измерить температуру? Если в течение 24-х часов температура стабильная, а через 15 минут сервер виснет — маловероятно, что дело в этом. Хотя и возможно. Пока не завис — смотрим в Aida64 2. Насчет ограничения — это ошибочное мнение. Он просто предлагает мне посмотреть ссылки, которые дал Google . Я ему, он мне. Не раз было, что решение находил именно он. Днем мы на работе, вечером пробуем
0 |
Подвисает «Диспетчер задач»
Модераторы: Trinity admin`s, Free-lance moderator`s
-
MAA
- Advanced member
- Сообщения: 149
- Зарегистрирован: 25 ноя 2002, 13:09
- Откуда: Новосибирск
Подвисает «Диспетчер задач»
Имеется сервер на Intel SE7520BD2, Win Server 2003 SP2
Запущенный Диспетчер задач периодически на несколько секунд как бы «подвисает» — данные на нем перестают обновляться, мышкой окно не двигается. С загрузкой CPU это не связано.
Переставлял систему с нуля — все тоже самое.
Что это может быть?
-
a_shats
- Advanced member
- Сообщения: 5010
- Зарегистрирован: 27 авг 2002, 10:55
- Откуда: Москва
- Контактная информация:
Сообщение
a_shats » 20 дек 2007, 16:02
Какая-то софтина имеет приоритет Realtime ?
И — в логах ОС, материнки по этому поводу нет чего-нибудь ?
-
MAA
- Advanced member
- Сообщения: 149
- Зарегистрирован: 25 ноя 2002, 13:09
- Откуда: Новосибирск
Сообщение
MAA » 20 дек 2007, 16:15
с приоритем Realtime ничего нет.
в логах ОС в эти моменты ошибок или предупреждений нет.
насчет логов материнки ничего сказать не могу. их можно посмотреть, не перегружая сервер и не устанавливая монструозных программ?
-
a_shats
- Advanced member
- Сообщения: 5010
- Зарегистрирован: 27 авг 2002, 10:55
- Откуда: Москва
- Контактная информация:
Сообщение
a_shats » 20 дек 2007, 16:21
Нет, нельзя без перезагрузки. Можно посмотреть, загрузившись с прилагаемого к материнке диска хотя бы.
А насчет «монструозных программ» — это Вы про ISM ?
-
MAA
- Advanced member
- Сообщения: 149
- Зарегистрирован: 25 ноя 2002, 13:09
- Откуда: Новосибирск
Сообщение
MAA » 20 дек 2007, 16:24
да, именно про ISM
Вернуться в «Серверы — ПО, Windows система, приложения.»
Перейти
- Серверы
- ↳ Серверы — Конфигурирование
- ↳ Конфигурации сервера для 1С
- ↳ Серверы — Решение проблем
- ↳ Серверы — ПО, Unix подобные системы
- ↳ Серверы — ПО, Windows система, приложения.
- ↳ Серверы — ПО, Базы Данных и их использование
- ↳ Серверы — FAQ
- Дисковые массивы, RAID, SCSI, SAS, SATA, FC
- ↳ Массивы — RAID технологии.
- ↳ Массивы — Технические вопросы, решение проблем.
- ↳ Массивы — FAQ
- Майнинг, плоттинг, фарминг (Добыча криптовалют)
- ↳ Proof Of Work
- ↳ Proof Of Space
- Кластеры — вычислительные и отказоустойчивые ( SMP, vSMP, NUMA, GRID , NAS, SAN)
- ↳ Кластеры, Аппаратная часть
- ↳ Deep Learning и AI
- ↳ Кластеры, Программное обеспечение
- ↳ Кластеры, параллельные файловые системы
- Медиа технологии, и цифровое ТВ, IPTV, DVB
- ↳ Станции видеомонтажа, графические системы, рендеринг.
- ↳ Видеонаблюдение
- ↳ Компоненты Digital TV решений
- ↳ Студийные системы, производство ТВ, Кино и рекламы
- Инфраструктурное ПО и его лицензирование
- ↳ Виртуализация
- ↳ Облачные технологии
- ↳ Резервное копирования / Защита / Сохранение данных
- Сетевые решения
- ↳ Сети — Вопросы конфигурирования сети
- ↳ Сети — Технические вопросы, решение проблем
- Общие вопросы
- ↳ Обсуждение общих вопросов
- ↳ Приколы нашего IT городка
- ↳ Регистрация на форуме