Нужна помощь в анализе медленной загрузки (ASUS ROG X99, ACPI)

У меня достаточно высокопроизводительный компьютер (8-ядерный i7-6900K, Samsung SM961 1 ТБ NVMe, 32 ГБ ОЗУ), но у меня очень медленная загрузка.

$ systemd-analyze
Startup finished in 21.766s (firmware) + 5.769s (loader) + 16.878s (kernel) + 3.532s (userspace) = 47.947s

Я пока игнорирую прошивку и загрузчик. Часть пользовательского пространства занимает менее четырех секунд, что нормально, но ядру - 17 секунд!

У меня есть информация о загрузке здесь:

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

ОБНОВЛЕНИЕ 1: Я обновился до Ubuntu 17.10, но время загрузки примерно такое же. Пользовательское пространство сократилось до 2 с (впечатляет!), Но время ядра превышает 15 с.

Что я заметил в журнале dmesg, так это то, что есть несколько "скачков" вокруг некоторых сообщений ACPI:

[    0.166049] acpi PNP0A03:03: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    2.208064] acpi PNP0A03:03: _OSC: platform does not support [PCIeHotplug]
[    4.256069] acpi PNP0A03:03: _OSC: OS now controls [PME AER PCIeCapability]
[    4.256070] acpi PNP0A03:03: FADT indicates ASPM is unsupported, using BIOS configuration

...а также:

[    4.262024] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    6.304065] acpi PNP0A08:00: _OSC: platform does not support [PCIeHotplug]
[    8.352073] acpi PNP0A08:00: _OSC: OS now controls [PME AER PCIeCapability]
[    8.352074] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration

Конфигурация ACPI как-то связана с медленной загрузкой ядра?

ОБНОВЛЕНИЕ 2: Добавление acpi=off до параметров загрузки время ядра сокращено с 15 с до 7 с (из которых ~4 с, по-видимому, освобождается при монтировании EXT4-fs на моем диске nvme), поэтому ACPI определенно является временным вором (~8 с).

Однако я не хочу полностью отключать ACPI. Могу ли я попробовать другую конфигурацию, связанную с ACPI?

1 ответ

Та же проблема с X299, так что ответим через 6 лет :) https://xkcd.com/979/

Медленная загрузка вызвана некоторыми преднамеренными задержками, реализованными в прошивке DSDT. Каждый вызов _OSC задерживается на 1-2 секунды.

            Метод (_OSC, 4, NotSerialized) // _OSC: возможности операционной системы
            {
                CreateDWordField (Arg3, 0x00, CDW1)
                If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* Устройство моста хоста PCI */))
                {
                    CreateDWordField (Arg3, 0x04, CDW2)
                    Если ((Arg2 > 0x02))
                    {
                        CreateDWordField (Arg3, 0x08, CDW3)
                    }

                    SUPP = CDW2 /* \_SB_.PC00._OSC.CDW2 */
                    CTRL = CDW3 /* \_SB_.PC00._OSC.CDW3 */
                    Если ((AHPE || ((SUPP & 0x16) != 0x16)))
                    {
                        CTRL &= 0x1E
                        Спящий режим (0x03E8)
                    }

                    Если ((TBSE != 0x00))
                    {
                        CTRL &= 0x1E
                        Спящий режим (0x03E8)
                    }

Решение состоит в том, чтобы сократить задержки:

  • Извлеките DSDT:
    • sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.aml
  • Декомпилируйте и проанализируйте файл, чтобы адаптировать последующие команды:
    • iasl dsdt.aml
  • ЗаменятьSleep (0x03E8)(1с)[\x5B\x22\x0B\xE8\x03]сSleep (0x0064)(100 мс)[\x5B\x22\x0B\x64\x00]:
    • perl -pe 's#\x5B\x22\x0B\xE8\x03#\x5B\x22\x0B\x64\x00#g' dsdt.aml > dsdt2.aml
  • Увеличьте версию DSDT, чтобы она имела приоритет над встроенным файлом. ЗаменятьDefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I ", 0x01072009)сDefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I ", 0x01072010):
    • perl -pe 's#\x09\x20\x07\x01#\x10\x20\x07\x01#g' dsdt2.aml > dsdt3.aml
  • Установите файл:
    • sudo cp dsdt3.aml /boot/dsdt.aml
  • Установить/etc/grub.d/01_acpiиз https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1045690
    • chmod +x /etc/grub.d/01_acpi
  • Обновить харч:
    • sudo update-grub
Другие вопросы по тегам