Некоторые проблемы современных ноутбуков

Аппаратная виртуализация в процессорах Intel

В старших моделях процессоров Intel Core 2 (T7xxx, T8xxx, T9xxx, P8xxx, P9xxx) есть поддержка аппаратной виртуализации (VT-x, Vanderpool, Intel Virtualization Technology, VMX). В частности, эта поддержка необходима для запуска 64-разрядных гостевых систем (gust systems) в виртуальных машинах (VM) как в 32-разрядных, так и в 64-разрядных хостовых системах. Аппаратная виртуализация необходима, поскольку в процессорах Intel нет аппаратного ограничения длинных сегментов (long segments), и для защиты своей памяти менеджер виртуальных машин (VMM) вынужден использовать аппаратную виртуализацию. В 64-разрядных процессорах AMD этого ограничения нет, поэтому в использоване аппаратной виртуализации не требуется.

Большинство моделей ноутбуков (не только Acer) зачем-то блокирует в BIOS использование аппаратной виртуализации. Хотя на сайтах производителей и в ответах технических служб утверждается, что виртуализация "не поддерживается" в BIOS, на самом деле все ровно наоборот: BIOS знает о существовании этой возможности, и намеренно блокирует ее установкой в 0 разряда 2 (маска 4, режим "VMX outside SMX") регистра MSR 0x3A (IA32_FEATURE_CONTROL), отвечающего за разрешенные возможности процессора, одновременно устанавливаея в 1 разряд 0 (маска 1, "Lock"), что не позволяет впоследствии программно изменить состояние этого MSR.

Проверить состояние битов разрешения и блокировки можно утилитой Securable. В разделе Hardware Virtualization отображается состояние описанных битов MSR 0x3A: "On" - виртуализация включена, "Off" - отключена, "Locked" - изменение MSR заблокировано. Соответственно, типичное для ноутбуков сочетание "Off / Locked" означает невозможность использования 64-разрядных гостевых систем.

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

Если бы BIOS вообще не трогал этого регистра - любой виртуализатор (VMware, Xen, VBox) мог бы самостоятельно включить аппаратную поддержку установкой разряда 2, и успешно запустить 64-разрядную VM.

Иногда производители оправдывают такой подход тем, что якобы "не тестировали эту возможность, и предпочли ее заблокировать". Однако, ни один производитель компьютеров не проводит на своих продуктах тестирования всех возможностей аппаратуры. Встречаются и объяснения вроде "это же ноутбук, он для игр и типовой офисной работы", что тоже очень странно, ибо сейчас многие мощные ноутбуки по всем характеристикам перекрывают настольный компьютер 2-3-летнего возраста, а средние модели вплотную к этому приближаются, и существует стойкая тенденция к замене настольных компьютеров на ноутбуки.

В ряде ноутбуков Dell и Lenovo BIOS Setup поддерживает переключение режима виртуализации. В некоторых других (Acer Aspire 4920/5920, Asus M50/M51/G90) она включена, в большинстве же - отключена и заблокирована.

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

Если вы владеете техникой дизассемблирования - можно попытаться изучить прошивку BIOS, если удастся ее распаковать (проще всего это сделать в случае Phoenix BIOS). Чаще всего BIOS блокирует виртуализацию не безусловно, а в зависимости от состояния определенной ячейки в NVRAM, и есть возможность найти эту ячейку, как описано здесь.

Если для BIOS имеются средства упаковки, то проще всего найти код, устанавливающий блокировку, и исправить его. Вот так выглядит фрагмент функции, устанавливающей биты в MSR 0x3A, в прошивке 1.42 для Acer Aspire 7720G:

    cmp [ebp+EnableVmx], 1
    jnz LockMsr
    push 0x3a ; MSR_IA32_FEATURE_CONTROL
    call __readmsr
    push edx
    or eax, 4 ; VMX outside SMX enabled
    push eax
    push 0x3a ; MSR_IA32_FEATURE_CONTROL
    call __writemsr
    add esp, 10h
LockMsr:
    <код установки бита блокировки>

Код работы с MSR можно найти по байтам 0F 32 (rdmsr) и 0F 30 (wrmsr). Поскольку таких команд может быть много, а перекрестные ссылки в модульных BIOS искать сложно, пробуйте шаблоны 3A * 0F 32, 3A * 0F 30, 3A * E8, где "*" - произвольные байты, числом от нуля до 10-20.

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

В последнее время все чаще используется EFI BIOS, поддерживающий изменяемые конфигурационные переменные (Variables). Здесь описано включение виртуализации средствами EFI на Intel Mac Mini.

Высокочастотный свист (писк)

Тихий тонкий свист/писк на высокой (16-20 кГц) часоте присущ многим современным устройствам, поскольку в них широко используются преобразователи напряжения с широтно-импульсной модуляцией (ШИМ). При правильном подборе частоты, диапазона модуляции, индуктивности дросселя и его конструктивного исполнения звуковые колебания излучаются только в ультразвуковой области, неслышимой для человека. При ошибках в расчетах и монтаже дроссель преобразователя может начать излучать в доступном для слуха диапазоне.

Большинство людей, особенно среднего и пожилого возраста, либо не слышит колебаний с частотой выше 15-16 кГц, либо слышит их очень слабо, вдобавок в помещении даже средней зашумленности (офис, рабочий кабинет на несколько человек) преобладают более громкие звуки, поэтому многие пользователи не ощущают свиста, даже если он есть. Но при работе в тишине (жилое помещение, индивидуальный кабинет со звукоизоляцией и т.п.) постоянный высокочастотный звук, даже очень тихий, может приводить к утомлению, раздражительности и головной боли.

В ноутбуках на процессорах Core 2 Duo подобный свист возникает при переключениях процессора в режимы пониженного энергопотребления, когда процессор начинает потреблять энергию более редкими, чем обычно, импульсами, отчего частота ШИМ в преобразователе снижается до звуковой. Если процессор загружен работой, свист не слышен. Также свиста может не быть при работе под ОС, отличными от Vista - например, Windows XP в стандартной комплектации "не знает" о новых возможностях процессоров и не использует их.

В большинстве случаев свист можно устранить изменением политики энергопотребления процессора. Один из методов решения проблемы описан на русском языке здесь. Английский оригинал - тут.

Ошибки драйверов iaStor/iaStorV

В ноутбуках, содержащих дисковые контроллеры Intel ICH7/8/9 (например, платформа Santa Rosa, чипсет Intel PM965/GM965), работающий в режиме AHCI, периодически может наблюдаться "залипание" системы примерно на минуту, в течение которого непрерывно светится индикатор обращения к жесткому диску. После того, как индикатор гаснет, система либо возвращается к нормальной работе, либо зависает. В системном журнале при этом появляется запись о событии от имени службы iaStor или iaStorV (это драйверы контроллера), примерно такого вида: "The device, \Device\Ide\iaStor0, did not respond within the timeout period." (устройство не ответило в течение заданного времени).

При работе контроллера в режиме IDE проблемы не возникает, но в этом режиме не поддерживается очередь команд (NCQ), поэтому быстродействие диска на случайных запросах заметно снижается.

Проблема вызвана использованием относительно нового режима Link Power Management (LPM), реализованного в ICH7/8/9, и позволяющего управлять энергопотреблением интерфейса между контроллером и диском. Некоторые SATA-диски некорректно сообщают о множестве поддерживаемых ими функций, и контроллер пытается использовать команды LPM, которых диск не понимает, отчего и возникает ошибка, либо диск поддерживает операцию, но отрабатывает ее неправильно. Например, так ведет себя мой WD3200BEVT.

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

Режим LPM для каждого из портов контроллера управляется переменной LPM, которая находится в ветке реестра HKLM\SYSTEM\CurrentControlSet\Services\iaStor\Parameters\Port<n>, где <n> - номер порта, начиная с нуля. Проблему можно устранить запретом LPM, изменив значение LPM с 1 на 0, как описано здесь, и перегрузить систему. Если не помогло - можно удалить ключи Port<n> полностью.

Сильный нагрев жесткого диска

Несмотря на низкие напряжения питания и специальные меры по снижению энергопотребления, современные ноутбуки достаточно сильно нагреваются в процессе работы. Владельцы нередко опасаются возможности перегрева микросхем процессора, видеоадаптера или памяти, однако это крайне маловероятно, ибо отводу тепла от этих микросхем в ноутбуках уделено наибольшее внимание, нагреваются они максимум до 80-90 градусов, и могут без вреда для себя переносить температуру до 110-120 градусов, поэтому самое страшное, что может случиться при перегреве - это появление ошибки или зависание.

Гораздо хуже обстоит дело с жесткими дисками, которые, как правило, размещены далеко от вентилятора охлаждения, и при этом вставлены в металлический кожух, способный лишь пассивно рассеивать тепло через шасси ноутбука. Во многих ноутбуках жесткий диск даже в режиме полного простоя системы нагревается до 45-50 градусов, а под нагрузкой (например, в режиме дефрагментации) - до 60-70 градусов. Максимальная температура окружающей среды, при которой диски могут работать нормально, обычно указывается в районе 50-60 градусов. С повышением температуры быстро растет вероятность отказа диска.

Поэтому важно следить за температурой жесткого диска, а если он работает "на грани" - рекомендуется ставить ноутбук на охлаждающую подставку с вентиляторами. Существует множество программ для слежения за температурой диска через S.M.A.R.T. - например, CrystalDiskInfo (поддерживает русский язык), SpeedFan (только английский), или любой другой программой, умеющей извлекать атрибуты S.M.A.R.T. Все подобные программы нужно запускать с правами администратора, иначе они не смогут получить значения атрибутов у диска.

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

31.07.08
Евгений Музыченко

На главную