суббота, 22 апреля 2017 г.

История одного расследования

Я хочу рассказать про одно расследование, другими словами и не назовешь. У меня имеется ноутбук-трансформер от HP  - TouchSmart tm2. Замечательный агрегат, надо сказать. Есть, конечно, одна особенность, немного умаляющая его ценность - ноут находится уже в довольно преклонном возрасте, трудясь на меня, если память мне не изменяет, с середины 2010 года. Правда, держится все еще молодцом. Понятно, что i3 не является образцом скоростного процессора, но я дал ему в помощь 8 гигов оперативки, так что он все еще в строю, так сказать.

Единственное, что, похоже, все-таки стало отказывать - батарея. Раньше ее хватало часов на пять, а при хорошем стечении обстоятельств, даже, на шесть. Но ресурс снижался, хотя долгое время обеспечивал сначала четыре часа, потом два с половиной. И вот дошло до того, что через полчаса работы от батареи, показывая что-то около 30% заряда, ноут стал отключаться. В остальном же, все довольно прилично выглядит и сейчас.

Недавно ноут пережил даже некоторое подобие апгрейда - ну, все ведь в курсе выхода в свет десятки от Microsoft. Изначально на трансформере стояла версия Pro замечательной Windows 7. Долгое время мне приходили всплывающие уведомления, уговаривавшие установить десятку, а когда я, наконец, согласился, еще столько же, если не дольше, приходили уговоры подождать, пока не будет готова версия, способная работать на этом железе.

И я терпеливо ждал. Нет, свой более современный планшет Acer я обновил принудительно - скачал на флешку программу апгрейда и обновил ОС. Но в этом случае решил не торопиться. Ну в самом деле, довольно возрастной агрегат, обладающий поворотным дисплеем, сканером отпечатков пальцев, стилусом, умеющий распознавать рукописный текст. Нет уж, пусть обновляют тогда, когда сочтут нужным и возможным.

И этот момент пришел, обновление прошло без сучка без задоринки. Все, что работало так и продолжало работать, что вызвало у меня чувство уважения и к производителю железа, и к производителю софта.

Я уже говорил, что единственное, что огорчало меня (кроме не самой большой производительности) - это выработка ресурса батареи. С покупкой новой я тянул - кризис, знаете ли, а покамест решил хоть как-то продлить время работы от аккумулятора, отключая сервисы, которыми не пользуюсь.

И тут я обратил внимание на некоторый факт: загрузка процессора, показываемая Диспетчером Задач, практически все время была в области 50%. Нет, она, конечно же, менялась, падала до 25, поднималась до 60, но все это происходило тогда, когда я считал, что копм, по сути простаивает.

Конечно, все мы знаем, что Windows может жить какой-то своей жизнью, решать какие-то свои задачи, с нами никак не связанные (по крайней мере, напрямую). Но, чаще всего, позанимавшись своими делами - проверив вирусы, обновившись, еще чего-нибудь поделав - Windows оставляет компьютер в покое. А тут загрузка процессора держалась постоянно - днями, неделями. Она просто никогда не опускалась ниже 20%. И это - при всем том, что я отключал какие-то службы, надеясь, как раз таки, разгрузить процессор и чуть-чуть оттянуть поход в магазин за новым аккумулятором.

В какой-то момент мне это надоело и я решил выделить время и разобраться с этим раздражающим меня поведением. И первым делом следовало проверить, что же именно загружало процессор больше всего. Тут никаких проблем: войдя в Панель Задач (или Task Manager, кому как больше нравится) отсортировал список по загрузке процессора. Результат (примерный) показан на рисунке:

И победитель.... WMI Provider Host!

Как видим, больше половины загрузки обеспечивается одним процессом - WMI Provider Host. Надо сказать, что я не часто сталкивался с ним, нет, я помнил, конечно, что это Windows Management Instrumentation и где-то в Панели Управления есть возможность что-то посмотреть по этой очень важной службе Windows.

Собственно, все совсем не сложно. Первым делом в Панели Управления открываем раздел Administrative Tools (Администрирование):


Далее, выбираем Computer Management


Когда нужная оснастка Панели Управления (речь об Управлении Компьютером) откроется, в дереве слева необходимо открыть ветку Services and Applications (Сервисы и Приложения), в которой можно увидеть строку WMI Control. Если на этой строке нажать правую кнопку мышки, то откроется контекстное меню, в котором надо выбрать пункт Properties (Свойства)


Немного притормозим. Объясню, зачем мне понадобились свойства WMI Control. Все дело в памяти. Это она виновата - выдала мне информацию о том, что в Windows XP служба WMI хранила журналы работы в папке %SystemRoot%\System32\Wbem\Logs. Папку эту я нашел, только вот она оказалась пуста. Память не отступалась: "Изменить или посмотреть путь хранения журналов можно в окне Свойств WMI на закладке Журналирование", - шептала она. Вот поэтому я и полез в свойства WMI - посмотреть, какой путь установлен для журналов службы. И вот, что я увидел:


"И что тут такого?" - спросите вы. А то, что вкладка Журналирование (Logging) отсутствует. Окно свойств должно было выглядеть примерно так:




Но оно так не выглядело. Так что память - это, конечно, хорошо, но, иногда, она подводит, причем, не из-за того, что что-то забылось, а как раз наоборот... Все, запутался, прекращаю философствовать.

И что же обычно делают люди, когда понимают, что память их подвела, и они чего-то не помнят, или же, напротив, помнят слишком много ненужной и устаревшей информации? Лично я не стыжусь признаться, что в такие моменты - "Гугл - наше все". И довольно быстро стало понятно, что с некоторых пор (а именно, с Windows Vista) журналы WMI можно посмотреть в Events View (Просмотр событий) в ветке Applications and Services Logs -> Microsoft -> Windows


Открыв список событий, я был довольно сильно удивлен - их было ну очень много:


Я специально обвел идентификатор процесса, который, по всей видимости, и приводил к появлению этого огромного количества сообщений об ошибках. Мне стало интересно, что это за процесс, ну а где проще всего это выяснить? Правильно, в Диспетчере задач.


На закладке Services указан нужный нам процесс. И первое, то приходит в голову - а что будет, если процесс остановить? Сказано - сделано, останавливаем...


Так, подождите, что же это такое? Сервис остановили, а он на это внимание не обратил?


И тут можно проводить тест на внимательность. Дело в том, что первоначально идентификатор заинтересовавшего меня процесса (hpqwmiex) был 5004, а теперь процесс имеет идентификатор 7044. Это может значить только одно - процесс остановился, как и было ему указано, но затем был снова запущен - какой-то другой процесс ответственен за повторный запуск, но вот какой? Если еще раз посмотреть внимательно на список сервисов, окружающих перезапустившийся процесс, можно обнаружить, что ближайшие соседи имеют отношение (как и сам виновник) к компании HP (я специально обвел их на рисунке внизу). Я стал отключать их, наблюдая, как это сказывается на загрузке процессора.


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


И вот тут загрузка упала до одного процента. Естественно было предположить, что один из этих двух сервисов и ответственен за ситуацию с увеличенной загрузкой и ошибками. И подозрения, прежде всего, пали на HP Wireless Assistant Service. Отключаем только его, остальные сервисы HP включаем:


И, да! Результат достигнут - загрузка процессора минимальна:


Конечно, вся эта замечательная картина продержится только до первой перезагрузки - во время старта ОС сервисы вновь запустятся и загрузка процессора вернется к 50%. Чтобы этого не произошло, надо заблокировать старт проблемного сервиса. Поэтому запускаем оснастку Сервисы Панели Управления:


Ищем нужный сервис и открываем окно его свойств:


В этом окне блокируем старт сервиса при загрузке системы:


И после перезагрузки получаем нормальный уровень потребления мощности процессора (естественно, при отключенном сервисе-возмутителе спокойствия):


Вот такая детективная история со счастливым концом. Что же произошло? Скорее всего, в Windows 10 что-то изменилось в системных компонентах, используемых сервисами планшета от HP. Поэтому, после обновления, работа конкретного сервиса (HP Wireless Assistant Service) была практически парализована. Ну и, в лучших традициях, проблема всплыла совершенно в другом месте, с симптомами, которые, казалось бы, никакого отношения к первопричине не имеют. И для того, чтобы это все выяснить, пришлось потратить достаточно много времени - вспоминать, гуглить, думать, пробовать...

К чему это я? А теперь представьте, что кто-то из моих друзей или знакомых адресовал бы мне такой вопрос по телефону с просьбой помочь и вылечить. Смог бы я? Наверное, да... при условии, что исследуемый образец попал бы ко мне в руки и мне был бы дан карт-бланш на эксперименты с ним. И не торопили бы, ко всему прочему. Но, обычно, всем надо здесь и сейчас, да и информация очень важная, вдруг потеряется. Именно поэтому, обычный совет, который можно получить от "айтишника" по телефону: "ну попробуй, перегрузи, может, заработает". И именно поэтому на форумах технической поддержки подобные вопросы остаются без ответа. Друзья уже все давно знают и не спрашивают, а остальные... ну, попробуйте, перегрузить...








Комментариев нет:

Отправить комментарий