Dicas de solução de problemas para Suspender para RAM

2

Estou procurando orientação sobre as opções de linha de comando do kernel e / ou configurações de BIOS para um sistema Supermicro X10DAL-i (com CPUs Xeon duais) para uma suspensão adequada para RAM nos kernels recentes do Linux. Atualmente estou executando este kernel:

Linux 4.17.2-1-ARCH #1 SMP PREEMPT Sat Jun 16 11:08:59 UTC 2018 x86_64 GNU/Linux

Nos meus outros computadores, o suspend-to-RAM "simplesmente funciona" com o Linux. No entanto, neste sistema, não voltaria após ser suspenso durante a noite. Meu palpite é que o sistema entrou em um estado de suspensão que é "muito profundo". Eu não estou usando hibernar ou suspender híbrido. Eu só quero suspender para a RAM.

Em um teste anterior de suspensão, o sistema foi retomado após alguns minutos de suspensão. Tudo o que tive que fazer foi pressionar qualquer tecla do teclado. Mas depois de ser suspenso durante a noite, não foi responsivo. Eu brevemente apertei o botão de energia. Em resposta a isso, os fãs ligaram e achei que o sistema poderia ser retomado, mas isso não aconteceu. Não consegui acessá-lo via console ou SSH.

A única diferença entre este sistema e meus outros sistemas que irão suspender e retomar é a placa-mãe (e ela tem mais RAM). Em todos os meus sistemas, estou usando systemd, systemd-boot e UEFI. Eu estou executando o KDE. Eu tenho uma GPU nvidia com o driver proprietário. Meu outro sistema com o mesmo GPU e driver suspende e recomeça corretamente.

Testei a suspensão neste sistema usando a opção de menu do KDE (suspender) e com systemd suspend . Como mencionei, esses testes curtos pareceram funcionar. Mas não seria retomada de uma suspensão durante a noite.

O BIOS exibe a marca American Megatrends Inc. Eu vejo opções para alterar o estado da CPU P, o estado do HWPM da CPU e o estado da CPU C junto com outras opções. Não estou familiarizado com nenhuma dessas opções e, atualmente, elas estão todas configuradas para valores padrão (isto é, a configuração "Power Technology" substituída é definida como "Energy Efficient", que aparentemente gerencia todas essas configurações automaticamente.)

Minha pergunta é quais configurações devo tentar suspender para ram trabalhando nas versões recentes do Linux?

Aqui estão as entradas finais do log, quando o sistema entrou no modo suspender para o modo ram:

Jun 26 23:20:26 X10DALi systemd[1]: Starting system activity accounting tool...
Jun 26 23:20:26 X10DALi systemd[1]: Started system activity accounting tool.
Jun 26 23:30:26 X10DALi systemd[1]: Starting system activity accounting tool...
Jun 26 23:30:26 X10DALi systemd[1]: Started system activity accounting tool.
Jun 26 23:32:16 X10DALi NetworkManager[997]: <info>  [1530070336.6408] manager: sleep: sleep requested (sleeping: no  enabled: yes)
Jun 26 23:32:16 X10DALi NetworkManager[997]: <info>  [1530070336.6413] manager: NetworkManager state is now ASLEEP
Jun 26 23:32:17 X10DALi systemd[1]: Reached target Sleep.
Jun 26 23:32:17 X10DALi systemd[1]: Starting Suspend...
Jun 26 23:32:17 X10DALi systemd-sleep[10662]: Suspending system...
Jun 26 23:32:17 X10DALi kernel: PM: suspend entry (deep)

Estou curioso sobre a linha com "systemd-sleep" porque os únicos 4 estados de economia de energia que eu estou familiarizado são:

  • suspender (que é o que eu usei)
  • hibernar
  • sono híbrido
  • suspend-then-hibernate

Não há entradas no diário para esta inicialização após o acima. Eu tive que reiniciar o sistema (reset de energia) para que ele "acordasse".

Isso pode ser relevante:

Eu tenho o pacote [upower][1] installed (Versão: 0.99.7-1). (Ele foi instalado como uma dependência do kdelibs.) Eu não alterei nenhuma configuração em /etc/UPower/UPower.conf e, como esse é um sistema de desktop, não tenho certeza se isso é relevante.

cat / sys / power / disk

[platform] shutdown reboot suspend test_resume 

cat / sys / power / state

freeze mem disk

cat / proc / acpi / wakeup

Device  S-state   Status   Sysfs node
IP2P      S3    *disabled
EHC1      S4    *enabled   pci:0000:00:1d.0
EHC2      S4    *enabled   pci:0000:00:1a.0
RP01      S4    *disabled  pci:0000:00:1c.0
PXSX      S4    *disabled
RP02      S4    *disabled
PXSX      S4    *disabled
RP03      S4    *disabled  pci:0000:00:1c.2
PXSX      S4    *enabled   pci:0000:04:00.0
RP04      S4    *disabled  pci:0000:00:1c.3
PXSX      S4    *enabled   pci:0000:05:00.0
RP05      S4    *disabled
PXSX      S4    *disabled
RP06      S4    *disabled
PXSX      S4    *disabled
RP07      S4    *disabled
PXSX      S4    *disabled
RP08      S4    *disabled
PXSX      S4    *disabled
BR1A      S4    *disabled  pci:0000:00:01.0
PXSX      S4    *disabled
BR1B      S4    *disabled
PXSX      S4    *disabled
BR2A      S4    *disabled
PXSX      S4    *disabled
BR2B      S4    *disabled
PXSX      S4    *disabled
BR2C      S4    *disabled
PXSX      S4    *disabled
BR2D      S4    *disabled
PXSX      S4    *disabled
BR3A      S4    *disabled  pci:0000:00:03.0
PXSX      S4    *disabled
BR3B      S4    *disabled
PXSX      S4    *disabled
BR3C      S4    *disabled
PXSX      S4    *disabled
BR3D      S4    *disabled
PXSX      S4    *disabled
XHCI      S4    *enabled   pci:0000:00:14.0
QRP0      S4    *disabled
PXSX      S4    *disabled
QR1A      S4    *disabled
PXSX      S4    *disabled
QR1B      S4    *disabled
PXSX      S4    *disabled
QR2A      S4    *disabled  pci:0000:80:02.0
PXSX      S4    *disabled
QR2B      S4    *disabled
PXSX      S4    *disabled
QR2C      S4    *disabled
PXSX      S4    *disabled
QR2D      S4    *disabled  pci:0000:80:02.3
PXSX      S4    *disabled
QR3A      S4    *disabled
PXSX      S4    *disabled
QR3B      S4    *disabled
PXSX      S4    *disabled
QR3C      S4    *disabled
PXSX      S4    *disabled
QR3D      S4    *disabled
PXSX      S4    *disabled
RRP0      S4    *disabled
PXSX      S4    *disabled
RR1A      S4    *disabled
PXSX      S4    *disabled
RR1B      S4    *disabled
PXSX      S4    *disabled
RR2A      S4    *disabled
PXSX      S4    *disabled
RR2B      S4    *disabled
PXSX      S4    *disabled
RR2C      S4    *disabled
PXSX      S4    *disabled
RR2D      S4    *disabled
PXSX      S4    *disabled
RR3A      S4    *disabled
PXSX      S4    *disabled
RR3B      S4    *disabled
PXSX      S4    *disabled
RR3C      S4    *disabled
PXSX      S4    *disabled
RR3D      S4    *disabled
PXSX      S4    *disabled
SRP0      S4    *disabled
PXSX      S4    *disabled
SR1A      S4    *disabled
PXSX      S4    *disabled
SR1B      S4    *disabled
PXSX      S4    *disabled
SR2A      S4    *disabled
PXSX      S4    *disabled
SR2B      S4    *disabled
PXSX      S4    *disabled
SR2C      S4    *disabled
PXSX      S4    *disabled
SR2D      S4    *disabled
PXSX      S4    *disabled
SR3A      S4    *disabled
PXSX      S4    *disabled
SR3B      S4    *disabled
PXSX      S4    *disabled
SR3C      S4    *disabled
PXSX      S4    *disabled
SR3D      S4    *disabled
PXSX      S4    *disabled

Eu não tenho um arquivo /etc/systemd/sleep.conf (ou qualquer arquivo sleep.conf.d).

UPDATE: estou adicionando mais informações:

dmesg | grep idle

[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370452778343963 ns
[    0.000000]  RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484882848 ns
[    0.019999] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x1fa2b80c9f8, max_idle_ns: 440795260495 ns
[    0.064738] process: using mwait in idle threads
[    1.178343] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns
[    1.180025] cpuidle: using governor ladder
[    1.180037] cpuidle: using governor menu
[   17.698747] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[   18.097294] intel_idle: MWAIT substates: 0x2120
[   18.097295] intel_idle: v0.4.1 model 0x4F
[   18.099136] intel_idle: lapic_timer_reliable_states 0xffffffff
[   19.090095] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa3704c1a9, max_idle_ns: 440795296692 ns

CPU: 2x CPU Intel (R) Xeon (R) E5-2630 v4 @ 2.20GHz

A Supermicro sugeriu essas configurações da BIOS:

Advanced Power Management Configuration ->  Power Technology Select Custom to customize system power settings
CPU C State Control:  choose the options are C0/1 state, C2 state, C6 (non-Retention) state, and C6 (Retention) state.
    
por MountainX 27.06.2018 / 19:38

1 resposta

1

Eu tive que limitar os estados C da CPU para o nível C2, a fim de obter o meu sistema para retomar de suspensão para ram. Essa é a versão geral.

Especificamente, em relação ao Supermicro X10DAL com Xeon E5-2630 v4, certifique-se de estar executando o Supermicro BIOS 3.0a ou posterior. Inicialize no BIOS e vá para Avançado > Configuração da CPU > Configuração Avançada de Gerenciamento de Energia. Defina a tecnologia de energia como personalizada. Definir o controle de estado da CPU C para C2.

Meu sistema agora suspenderá e retomará o uso de systemd suspend ou dos comandos DE suspender.

    
por 02.07.2018 / 21:34