Пытаюсь выяснить задержку входа в Windows 10; xperf показывает, что explorer.exe зависает на «Windows.Devices.Lights.dll».
Ситуация:
- Я загружаю свой ноутбук, вхожу в Windows, и все быстро загружается, как и должно быть.
- После того, как система проработает «некоторое время», в систему входит второй пользователь с быстрым переключением пользователей.
- Для второго пользователя система «зависает» на практически пустом рабочем столе в течение пяти минут, прежде чем все начинает работать. Когда рабочий стол «завис», на панели задач загружается кнопка «Пуск» и панель поиска, но нет значков программ, рабочий стол не отвечает, а кнопка/меню «Пуск» не отвечает.
Зависание не зависит от пользователя. У меня на ноутбуке пять пользователей, и любой из них может столкнуться с задержкой входа в систему. Даже моя собственная учетная запись, которая обычно работает нормально, столкнется с проблемой, если я не буду первым, кто войдет в систему и попытается войти в систему после того, как система проработает «некоторое время».
Я не уверен, как долго это «какое-то время». Если я попытаюсь воспроизвести эту проблему, перезагрузив компьютер, а затем войдя в систему с двумя пользователями подряд, оба входа будут работать нормально. (Это затрудняет устранение неполадок, например, отключение элементов и служб автозагрузки и перезагрузку для проверки.)
Первоначально я испытывал это в Windows 10 версии 1909, и оно сохранилось после обновления до 20H2. На самом деле у меня есть эта проблема на двух разных ноутбуках, одном Dell Precision M6700 и одном Dell Precision 7510. Между ними не так уж много общего в программном обеспечении, на 7510 мало что установлено, кроме Office / Acrobat / и пара игр Steam. У них аналогичное оборудование и настройки драйверов.
Пока второй пользователь завис, если я переключусь обратно на первого пользователя (где все работает нормально) и выполню «Анализ цепочки ожидания» на экземпляре explorer.exe второго (зависшего) пользователя, это покажет, что он ожидает sihost. Exe.
... В любом случае, я некоторое время «разбирался с этим», но вчера я запустил xperf, чтобы попытаться выяснить, что вызывает задержку.
Я провел три разных трассировки, и все они оказались поразительно похожими. Конечно же, представление «Задержка пользовательского интерфейса» показывает задержку «Модальный цикл COM» в explorer.exe на время зависания.
Анализатор производительности показывает задержку модального цикла COM (зеленый) на время зависания при входе в систему
Мне показалось странным, что зависание/задержка длится ровно 5 минут. Ну, оказывается, это не совсем ровно 5 минут. Трассировки показывают, что он постоянно зависает на 308 секунд (5 минут + 8 секунд).
В любом случае, я перешел к представлению «время жизни потоков» и вижу, что это идеально совпадает с потоком в explorer.exe, у которого есть модуль запуска потока «Windows.Devices.Lights.dll». Ряд других потоков не начнут выполнять свою работу до тех пор, пока этот поток не завершится.
Задержка модального цикла COM (зеленый вверху) и поток Windows.Devices.Lights.dll в explorer.exe (красный внизу) происходят одновременно и в течение одной и той же продолжительности.
...В любом случае, здесь я как бы дошёл до конца. Я не очень хорошо знаком с xperf. Есть ли способ покопаться дальше и увидеть, что здесь пытается сделать Explorer? Для чего вообще нужен «Windows.Devices.Lights.dll»? В его описании просто написано «Windows Runtime Lights DLL». Я представляю, что есть что-то, что я могу просто отключить, чтобы это поведение прекратилось. У меня возникает соблазн просто удалить/переименовать этот файл DLL и посмотреть, решит ли это проблему.
Любые идеи приветствуются...
[Изменить] Наткнулся на эту тему после публикации, по-видимому, она связана с USB-мышью Microsoft Pro IntelliMouse, которую я подключил к обеим системам. (Решение не предложено...)