Вопрос или проблема
Использую Mint 14. Иногда я могу приостановить работу компьютера нормально, но после того, как он работает некоторое время, он больше не переходит в режим ожидания. Он просыпается через секунду или около того без внешних сигналов.
Думаю, что я отслеживаю что-то, что мне не нужно отслеживать:
>cat /proc/acpi/wakeup
Device S-state Status Sysfs node
LID S4 *enabled
SLPB S3 *enabled
IGBE S4 *enabled pci:0000:00:19.0
EXP3 S4 *disabled
XHCI S3 *enabled pci:0000:00:14.0
EHC1 S3 *enabled pci:0000:00:1d.0
EHC2 S3 *enabled pci:0000:00:1a.0
HDEF S4 *disabled pci:0000:00:1b.0
Эти устройства довольно загадочны. Хотя было бы интересно узнать, что это за устройства, мне на самом деле важно только то, какое из них вызывает пробуждение компьютера (чтобы я мог отключить мониторинг этого устройства). Существует ли где-то журнал, который отслеживает события ACPI и может подсказать, какое устройство разбудило мой компьютер?
Все записи журнала во время событий ACPI фиксируются здесь:
/var/log/acpid.log
Откройте терминал и наберите:
tail -f /var/log/acpi.log
это покажет вам содержимое файла журнала ACPI.
надеюсь, это поможет.
Рассмотрите возможность использования sudo acpi_listen
Он содержится в пакете acpid
, который вы можете захотеть удалить после отладки. Я не уверен, использует ли/нуждается ли в нем Mint, и он может мешать другим системам энергосбережения, например, в systemd
.
acpitool -e
также полезен, вы можете увидеть вещи, которые могут вызывать события.
Некоторые события acpi находятся здесь (linux mint 18 sarah)
grep -i acpi /var/log/kern.log |head
На ПК с процессорами x86 BIOS записывает в DMI, какое событие вызвало включение ПК. DMI (Desktop Management Interface) — это таблица, которая описывает аппаратные компоненты системы, но также содержит временные данные, такие как то, что вызвало пробуждение ПК. Запустите эту команду в командной строке:
sudo dmidecode -t system
На моем текущем ПК вывод выглядит так:
# dmidecode 3.4
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: To Be Filled By O.E.M.
Product Name: To Be Filled By O.E.M.
Version: To Be Filled By O.E.M.
Serial Number: To Be Filled By O.E.M.
UUID: 03000200-0400-0500-0006-000700080009
Wake-up Type: Power Switch
SKU Number: To Be Filled By O.E.M.
Family: To Be Filled By O.E.M.
Handle 0x0009, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected
Ищите строку, которая начинается с Wake-up Type
. В данном случае ПК был включен нажатием кнопки питания.
Обратите внимание, что, к сожалению, dmidecode
может не работать на всех ПК. Таблицы DMI также могут быть неполными или даже неправильными, и вы можете всегда получать “Power Switch” в качестве типа пробуждения независимо от того, что на самом деле разбудило ПК.
Ответ или решение
Вопрос о том, где можно найти лог событий ACPI, весьма актуален для управления энергосбережением и устранения неполадок при переходе компьютера в режим сна. В данном конкретном случае пользователь замечает, что на Linux Mint 14 его система иногда не может корректно выйти в режим сна, а после включения компьютер просыпается примерно через секунду без видимых причин.
Теория
ACPI (Расширенный интерфейс конфигурации и питания) — это стандарт, который позволяет операционной системе управлять энергопотреблением компьютера и некоторыми аспектами его работы. ACPI события могут включать включение и выключение питания, переход в спящий режим, контроль за состоянием батареи и многое другое.
В системе Linux, причины пробуждения от режима сна могут варьироваться от аппаратных сигналов (например, клавиатура или мышь) до сетевых подключений и сигналов от других устройств. Чтобы эффективно управлять этими событиями и диагностировать проблемы, следует обратиться к лог-файлам и утилитам, которые отлавливают эти события.
Пример
У вас есть несколько вариантов для анализа ACPI событий, которые могут помочь идентифицировать причину пробуждения компьютера.
-
Лог-файл ACPI: В большинстве систем события ACPI записываются в файл
/var/log/acpid.log
. Для отслеживания свежих событий в реальном времени можно использовать команду:sudo tail -f /var/log/acpid.log
Это позволит вам наблюдать за изменениями в логах по мере их появления, чтобы выявить какие события происходят незадолго до пробуждения системы.
-
Утилита acpi_listen: Данная утилита может быть использована для мониторинга ACPI-событий в реальном времени:
sudo acpi_listen
Она показывать вам какие события ACPI зарегистрированы вплоть до уровня конкретного сигнала от устройства.
-
Использование dmidecode: На x86 ПК можно воспользоваться утилитой
dmidecode
, чтобы получить данные о том, что именно инициировало пробуждение системы:sudo dmidecode -t system
В результате выполнения этой команды будет предоставлен вывод, в котором вы можете найти строку, начинающуюся с "Wake-up Type", в которой указано какое событие инициировало пробуждение. Однако стоит отметить, что данная информация может быть неточной или некорректной в некоторых системах, так как зависит от добросовестности производителей в заполнении DMI таблиц.
-
Фильтрация ядра через kern.log: Скрипты и сообщения от ядра, касающиеся ACPI, могут быть найдены при помощи фрагмента кода:
grep -i acpi /var/log/kern.log | head
Эта команда отфильтрует записи ядра, которые упоминают ACPI, и может предоставить некоторую полезную информацию относительно проблем, с которыми сталкивается ваша система.
Применение
Исходя из вышеприведенной информации, можно сделать следующие шаги для диагностики проблемы:
- Проверьте
/var/log/acpid.log
: Постарайтесь поймать момент, когда система выходит из сна. Это может указать на конкретное событие или устройство, спровоцировавшее пробуждение. - Используйте
acpi_listen
: Запустите эту утилиту перед тем, как попытаться отправить машину в спящий режим. Это поможет определить активные сигналы ACPI. - Проверьте
dmidecode
и вывод kern.log: Возможно, вы выявите дополнительные подсказки о специфике оборудования или неправильных настройках конфигурации системы.
Заключение
Диагностика ACPI-событий требует некоторой прозорливости в работе с логами и утилитами Linux. Правильная интерпретация данных из журналов поможет выявить корень проблемы и создать более стабильную и эффективную систему энергосбережения. Хотя система может предоставлять устаревшую или недостоверную информацию, использование нескольких методов в комплексе обычно приводит к результату.