A máquina congela quando atinge o espaço de troca sob carga pesada

3

Eu encontrei várias falhas na minha máquina. Enquanto isso, posso reproduzi-lo quando inicio um programa que preenche toda a memória. Depois que o sistema começa a gravar no arquivo de troca, o sistema congela e eu tenho que reinicializar.

No diário, não vejo informações de log úteis antes da falha, por exemplo:

Mar 23 19:12:01 classen systemd[1]: Starting Cleanup of Temporary Directories...
Mar 23 19:12:01 classen systemd[1]: Started Cleanup of Temporary Directories.
Mar 23 19:12:08 classen wpa_supplicant[757]: wlp3s0: WPA: Group rekeying completed with ...
-- Reboot --
Mar 23 19:17:03 classen systemd-journald[380]: Runtime journal (/run/log/journal/) is 8.0M, max 796.6M, 788.6M free.

Na verdade, não sei como solucionar o problema. Espero que alguém tenha visto algo semelhante e possa me apontar na direção certa. O estranho é que depois de trabalhar por um tempo, meu sistema é capaz de trocar em algum grau (pelo menos, top mostrou que parte do espaço de swap estava ocupado). Os congelamentos acontecem apenas sob carga pesada no arquivo de troca.

Aqui está minha configuração:

$ lsblk

NAME                    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                       8:0    0 238.5G  0 disk  
├─sda1                    8:1    0   512M  0 part  /boot
└─sda2                    8:2    0   238G  0 part  
  └─MyStorage           254:0    0   238G  0 crypt 
    ├─MyStorage-swapvol 254:1    0    16G  0 lvm   [SWAP]
    └─MyStorage-rootvol 254:2    0   222G  0 lvm   /
sdb                       8:16   0 931.5G  0 disk  
└─sdb1                    8:17   0 931.5G  0 part  
sr0                      11:0    1  1024M  0 rom   

Parte relevante de /etc/fstab :

/dev/mapper/MyStorage-rootvol   /    btrfs   rw,noatime,ssd,autodefrag,compress=lzo,space_cache      0 0
/dev/mapper/MyStorage-swapvol none   swap    defaults        0 0

UUID=63A7-3F81          /boot        vfat    rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro    0 2

$ swapon --summary

Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   16777212    0   -1

Estou executando o Arch Linux com um kernel 4.4.5:

$ uname -a
Linux classen 4.4.5-1-ARCH #1 SMP PREEMPT Thu Mar 10 07:38:19 CET 2016 x86_64 GNU/Linux

ganchos em /etc/mkinitcpio.conf :

HOOKS="base udev autodetect modconf block encrypt lvm2 resume filesystems keyboard fsck"
    
por Philipp Claßen 23.03.2016 / 20:04

1 resposta

3

Depois de algum experimento, posso confirmar que ele estava se debatendo em combinação com uma enorme partição swap (16 GB).

Obrigado pelos comentários, Otheus e cas, você teve a intuição correta. Eu subestimei o efeito. Talvez porque as máquinas anteriores que eu usei tivessem espaços de troca menores (em comparação com a memória), então, eventualmente, o processo de fome de memória foi morto.

Como algumas medidas de segurança, vou reduzir o espaço máximo de troca no meu sistema. Eu também defini um limite por processo para proteger contra um único processo que explode a memória:

# limit memory usage to 10G per process
ulimit -Sv 10000000

Ferramentas como vmstat 1 podem ajudar a analisar o problema.

    
por 06.04.2016 / 10:50