Parece ser causado por 52a468aeea9e00f3f1763e96a05adbe48b0a644d, mas não dividi ao meio. Isso pode ser causado por mudanças de segurança recentes?
/run/systemd/system/var-lib-systemd\x2dswap-swapfc-1.swap:11: Sorry, swap priorities smaller than -1 may only be assigned by the kernel itself, ignoring: -2
Você pode dizer sua versão do linux (se arch seja zen ou normal), distro e sistema de arquivos?
(isso não acontece comigo executando o arch zen 5.7 e f2fs)
ArchLinux 5.7.2 com modificações zen e ext4.
O arquivo de troca foi criado? (isto é, isso é apenas um aviso?)
Eu reiniciei: / Existe uma maneira de preencher rapidamente a memória ram até uma porcentagem específica para acionar a troca?
Você pode usar o stress-ng stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.90;}' < /proc/meminfo)k --vm-keep -m 1
(aloca até 90% da memória).
Outra maneira de corrigir esse problema é definir swapfc_priority=100
ou algo em /etc/systemd/swap.conf.d/overrides.conf
Ok, sim, ainda consigo reproduzir.
O arquivo de troca ainda é criado.
Embora eu possa consertar atribuindo> -1, esse aviso é normal? Se for o caso, não faz sentido usar esse padrão e, em vez disso, usar 0, eu acho.
Algo estranho que notei ao testar com stress-ng
é que quando eu uso * 0.50
o bloco de troca de 1 GB que configurei é de fato criado, mas quando eu mudo para * 0.90
nenhuma troca é adicionada apesar de ter 700 MB de memória livre.
minha configuração:
swapfc_enabled=1
swapfc_force_use_loop=0 # Force usage of swapfile + loop
swapfc_frequency=1 # How often to check free swap space in seconds
swapfc_chunk_size=1G # Size of swap chunk
swapfc_max_count=32 # Note: 32 is a kernel maximum
swapfc_min_count=0 # Minimum amount of chunks to preallocate
swapfc_free_swap_perc=25 # Add new chunk if free < 15%
swapfc_remove_free_swap_perc=55 # Remove chunk if free > 55% && chunk count > 2
zswap_enabled=1
zswap_compressor=zstd # lzo lz4 zstd lzo-rle lz4hc
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold # zbud z3fold (note z3fold requires kernel 4.8+)
O segundo arquivo de troca só é criado quando o primeiro está com pouca memória
Ah ok. E por que não está trocando então? Vejo apenas 32 MB usados.
Você terá que perguntar a Linus Torvalds sobre aquele ^^, resumindo, o swap é usado apenas quando mais memória é solicitada, então se nenhum aplicativo estiver pedindo mais memória, você não verá o swap sendo usado.
Você pode ajustar os parâmetros de troca você mesmo (troca, etc.), mas observe que os padrões do systemd-swap são ajustados para as configurações padrão.
Ah, entendo, obrigado pela bela explicação: +1:
O que fazemos sobre o 'problema' inicial?
Vou ver como reproduzi-lo sozinho em uma VM e se podemos silenciar o aviso (usando 2>/dev/null
em nosso comando swapon). Como isso só produz um aviso, não vou colocá-lo na fila para um novo lançamento imediatamente, mas vou agrupá-lo com outras correções / atualizações.
Portanto, o aviso está errado e podemos criar uma troca com -2?
Eu fiz cat /proc/swaps
e parece dizer que realmente tem uma prioridade -2:
Filename Type Size Used Priority
/var/lib/systemd-swap/swapfc/1 file 1048572 33024 -2
Então, talvez seja um bug do upstream e precise ser relatado?
Ehh, o kernel diz que só ele pode criar prioridades menores que -1 e isso parece ser verdade (de acordo com a documentação que li), é mais um bug com f2fs ou algo que faz com que eu não possa veja aquele aviso ....
O raciocínio para o default do systemd-swap para -2
é que é assim que ele sempre foi configurado e eu não desejo quebrar as configurações das pessoas.
Tudo bem, entendo, obrigado. Vou deixar isso aberto até que você possa reproduzir e silenciá-lo, eu acho.
Incapaz de reproduzir no fedora & arch. Você pode fornecer informações adicionais?
Ainda pode reproduzir com seus últimos commits.
Que tipo de outras informações você precisa?
Não sei, mas não consigo diagnosticar sem ser capaz de reproduzir. E como isso só é relatado por você, tenho a sensação de que pode haver algo do seu lado causando isso.
/var/lib/systemd-swap/swapfc/
rw,noatime,lazytime
Minha configuração atual do systemd-swap:
################################################################################
# Defaults are optimized for general usage
################################################################################
################################################################################
# You can override any settings with files in:
# /etc/systemd/swap.conf.d/*.conf
################################################################################
################################################################################
# Zswap
#
# Kernel >= 3.11
# Zswap create compress cache between swap and memory to reduce IO
# https://www.kernel.org/doc/Documentation/vm/zswap.txt
zswap_enabled=1
zswap_compressor=zstd # lzo lz4 zstd lzo-rle lz4hc
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold # zbud z3fold (note z3fold requires kernel 4.8+)
################################################################################
# ZRam
#
# Kernel >= 3.15
# Zram compression streams count for additional information see:
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt
zram_enabled=0
zram_size=$(( RAM_SIZE / 4 )) # This is 1/4 of ram size by default.
zram_count=${NCPU} # Device count
zram_streams=${NCPU} # Compress streams
zram_alg=zstd # See $zswap_compressor
zram_prio=32767 # 1 - 32767
################################################################################
# Swap File Chunked
# Allocate swap files dynamically
# For btrfs fallback to swapfile + loop will be used
# ex. Min swap size 256M, Max 32*256M
swapfc_enabled=1
swapfc_force_use_loop=0 # Force usage of swapfile + loop
swapfc_frequency=1 # How often to check free swap space in seconds
swapfc_chunk_size=1G # Size of swap chunk
swapfc_max_count=32 # Note: 32 is a kernel maximum
swapfc_min_count=0 # Minimum amount of chunks to preallocate
swapfc_free_swap_perc=25 # Add new chunk if free < 15%
swapfc_remove_free_swap_perc=55 # Remove chunk if free > 55% && chunk count > 2
swapfc_priority=0 # Priority of swapfiles (decreasing by one for each swapfile). Jumps from 0 to -2.
swapfc_path=/var/lib/systemd-swap/swapfc/
# Only for swapfile + loop
swapfc_nocow=1 # Disable CoW on swapfile
swapfc_directio=1 # Use directio for loop dev
swapfc_force_preallocated=0 # Will preallocate created files
################################################################################
# Swap devices
# Find and auto swapon all available swap devices
swapd_auto_swapon=1
swapd_prio=1024
Ahhh, deixa pra lá. Posso reproduzir isso, não é apenas registrado pelo systemd-swap, mas pelo systemd
Há uma solução? - pegue no Manjaro testing Branch
25 de junho 10:20:55 Estação de trabalho systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. swap: 11 : Desculpe, prioridades de swap menores que -1 só podem ser atribuídas pelo próprio kernel, ignorando: -2
25 de junho 10:20:56 Estação de trabalho systemd [1]: Falha ao ativar o arquivo de permuta de troca.
no systemd 245.6-3 sem problemas
Há uma solução? - pegue no Manjaro testing Branch
25 de junho 10:20:55 Estação de trabalho systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. swap: 11 : Desculpe, prioridades de swap menores que -1 só podem ser atribuídas pelo próprio kernel, ignorando: -2
25 de junho 10:20:56 Estação de trabalho systemd [1]: Falha ao ativar o arquivo de permuta de troca.no systemd 245.6-3 sem problemas
Sim, você pode definir a prioridade para algo como 100
Há uma solução? - pegue no Manjaro testing Branch
25 de junho 10:20:55 Estação de trabalho systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. swap: 11 : Desculpe, prioridades de swap menores que -1 só podem ser atribuídas pelo próprio kernel, ignorando: -2
25 de junho 10:20:56 Estação de trabalho systemd [1]: Falha ao ativar o arquivo de permuta de troca.
no systemd 245.6-3 sem problemasSim, você pode definir a prioridade para algo como 100
Não resolve meu problema:
Oh, eu interpretei mal o seu comentário. A prioridade nunca faz com que um arquivo de troca falhe, ela apenas avisa, então o seu problema não está relacionado.
Por favor, abra um novo problema para este
Não sei quando começou a acontecer novamente, mas estou no último master, arch kernel with zen modifs (linux-tkg) em 5.9.7 e ainda reproduzo esse problema, exceto que é ainda pior porque continua aumentando a prioridade:
/var-lib-systemd\x2dswap-swapfc-3.swap:11: Sorry, swap priorities smaller than -1 may only be assigned by the kernel itself, ignoring: -474
Aqui está meu free -hm
atual:
total used free shared buff/cache available
Mem: 15Gi 4,2Gi 907Mi 668Mi 10Gi 9,2Gi
Swap: 4,0Gi 2,3Gi 1,7Gi
E aqui está a configuração que eu uso (sem alteração para /etc/systemd/swap.conf
, usando um arquivo drop-in:
################################################################################
# Defaults are optimized for general usage
################################################################################
################################################################################
# You can override any settings with files in:
# /etc/systemd/swap.conf.d/*.conf
################################################################################
################################################################################
# Zswap
#
# Kernel >= 3.11
# Zswap create compress cache between swap and memory to reduce IO
# https://www.kernel.org/doc/Documentation/vm/zswap.txt
zswap_enabled=1
zswap_compressor=zstd # lzo lz4 zstd lzo-rle lz4hc
zswap_max_pool_percent=25 # 1-99
zswap_zpool=z3fold # zbud z3fold (note z3fold requires kernel 4.8+)
################################################################################
# ZRam
#
# Kernel >= 3.15
# Zram compression streams count for additional information see:
# https://www.kernel.org/doc/Documentation/blockdev/zram.txt
zram_enabled=0
zram_size=$(( RAM_SIZE / 4 )) # This is 1/4 of ram size by default.
zram_count=${NCPU} # Device count
zram_streams=${NCPU} # Compress streams
zram_alg=zstd # See $zswap_compressor
zram_prio=32767 # 1 - 32767
################################################################################
# Swap File Chunked
# Allocate swap files dynamically
# For btrfs fallback to swapfile + loop will be used
# ex. Min swap size 256M, Max 32*256M
swapfc_enabled=1
swapfc_force_use_loop=0 # Force usage of swapfile + loop
swapfc_frequency=1 # How often to check free swap space in seconds
swapfc_chunk_size=2G # Size of swap chunk
swapfc_max_count=16 # Note: 32 is a kernel maximum
swapfc_min_count=0 # Minimum amount of chunks to preallocate
swapfc_free_swap_perc=50 # Add new chunk if free < 50%
swapfc_remove_free_swap_perc=55 # Remove chunk if free > 55% && chunk count > 2
#swapfc_priority=0 # Priority of swapfiles (decreasing by one for each swapfile). Jumps from 0 to -2.
swapfc_path=/var/lib/systemd-swap/swapfc/
# Only for swapfile + loop
swapfc_nocow=1 # Disable CoW on swapfile
swapfc_directio=1 # Use directio for loop dev
swapfc_force_preallocated=0 # Will preallocate created files
################################################################################
# Swap devices
# Find and auto swapon all available swap devices
swapd_auto_swapon=1
swapd_prio=1024
Aqui está o registro do diário de troca do systemd (sem os erros de prioridade de troca do systemd)
systemd-swap-log.txt
@vilgotf
Este é um erro de configuração de sua parte (embora devam ser feitas verificações para isso).
O problema com sua configuração é que um novo arquivo de troca é criado, já que você usa mais de 50% de sua troca. Isso funciona bem em alguns arquivos de troca, mas quando o próximo arquivo de troca é alocado, a quantidade de troca livre agora é maior que 55%, então ele tenta remover instantaneamente o arquivo de troca, então (porque removemos o arquivo de troca), o quantidade de troca livre é inferior a 50%, então ele tenta criar um novo arquivo de troca (ad infinitum)
Diminua o swapfc_free_swap_perc
(recomendado, 15 é o padrão por um motivo) ou aumente o swapfc_remove_free_swap_perc
.
É isso, obrigado! Sim, eu estava tentando brincar com os valores porque o novo arquivo de troca não estava chegando em breve e o assassino de memória estava sendo acionado.
Comentários muito úteis
Ahhh, deixa pra lá. Posso reproduzir isso, não é apenas registrado pelo systemd-swap, mas pelo systemd