Кажется, это вызвано 52a468aeea9e00f3f1763e96a05adbe48b0a644d, но я не делил пополам. Может быть, это вызвано недавними изменениями безопасности?
/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
Можете ли вы назвать свою версию linux (если архивацию, дзен или нормальную), дистрибутив и файловую систему?
(этого не происходит со мной, когда я запускаю Arch zen 5.7 и f2fs)
ArchLinux 5.7.2 с модификациями zen и ext4.
Файл подкачки создан? (то есть это просто предупреждение?)
Я перезагрузился: / Есть ли способ быстро заполнить барабан до определенного процента, чтобы вызвать подкачку?
Вы можете использовать stress-ng stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.90;}' < /proc/meminfo)k --vm-keep -m 1
(выделяет до 90% памяти).
Другой способ решить эту проблему - установить swapfc_priority=100
или что-то еще в /etc/systemd/swap.conf.d/overrides.conf
Ладно да, еще можно воспроизвести.
Файл подкачки все еще создается.
Хотя я думаю, что могу исправить это, назначив> -1, это предупреждение нормально? Если это так, то нет смысла использовать это значение по умолчанию, а вместо этого использовать 0, я думаю.
Что-то странное, что я заметил при тестировании с stress-ng
заключается в том, что когда я использую * 0.50
действительно создается блок подкачки размером 1 ГБ, который я настроил, но когда я меняю его на * 0.90
больше не добавляется своп несмотря на наличие 700 МБ свободной памяти.
моя конфигурация:
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+)
Второй файл подкачки создается только тогда, когда первому не хватает памяти.
Ах хорошо. А почему тогда не свопинг? Я вижу, что используется только 32 МБ.
Вам придется спросить об этом Линуса Торвальдса ^^, короче говоря, своп используется только тогда, когда запрашивается больше памяти, поэтому, если ни одно приложение не запрашивает больше памяти, вы не увидите, что используется своп.
Вы можете настроить параметры подкачки самостоятельно (подкачка и так далее), но обратите внимание, что значения по умолчанию для systemd-swap настроены на настройки по умолчанию.
А, я вижу, спасибо за красивое объяснение: +1:
Что нам делать с исходной «проблемой»?
Я сам посмотрю, как воспроизвести это в виртуальной машине и сможем ли мы заглушить предупреждение (используя 2>/dev/null
в нашей команде swapon). Поскольку при этом выдается только предупреждение, я не буду сразу ставить его в очередь для нового выпуска, но я объединю его с другими исправлениями / обновлениями.
Значит, предупреждение неверное, и мы можем создать своп с -2?
Я сделал cat /proc/swaps
и мне кажется, что он действительно имеет приоритет -2:
Filename Type Size Used Priority
/var/lib/systemd-swap/swapfc/1 file 1048572 33024 -2
Так может быть, это ошибка апстрима и о ней нужно сообщить?
Эхх, ядро говорит, что только оно может создавать приоритеты ниже -1, и это похоже на правду (согласно документации, которую я читал), это скорее ошибка с f2fs или что-то, что делает так, что я не могу смотри это предупреждение ....
Причина, по которой systemd-swap по умолчанию имеет значение -2
заключается в том, что он всегда был настроен таким образом, и я не хочу нарушать настройки людей.
Хорошо, спасибо. Я позволю этому открыться, пока вы не сможете воспроизвести это и заставить замолчать, я думаю.
Невозможно воспроизвести на Fedora и Arch. Вы можете предоставить дополнительную информацию?
Все еще может воспроизводиться с вашими последними коммитами.
Какая еще информация вам нужна?
Я не знаю, но я не могу поставить диагноз, не имея возможности воспроизводить потомство. И поскольку об этом сообщаете только вы, у меня такое чувство, что с вашей стороны что-то может быть причиной этого.
/var/lib/systemd-swap/swapfc/
rw,noatime,lazytime
Моя текущая конфигурация 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
Аааа, неважно. Я могу воспроизвести это, просто это не регистрируется systemd-swap, а systemd
Есть ли решение? - получить это в ветке тестирования Manjaro
25 июня, 10:20:55 Рабочая станция systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. swap: 11 : Извините, приоритеты подкачки меньше -1 могут быть назначены только самим ядром, игнорируя: -2
25 июня, 10:20:56 Рабочая станция systemd [1]: не удалось активировать файл подкачки.
на systemd 245.6-3 нет проблем
Есть ли решение? - получить это в ветке тестирования Manjaro
25 июня, 10:20:55 Рабочая станция systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. swap: 11 : Извините, приоритеты подкачки меньше -1 могут быть назначены только самим ядром, игнорируя: -2
25 июня, 10:20:56 Рабочая станция systemd [1]: не удалось активировать файл подкачки.на systemd 245.6-3 нет проблем
Да, вы можете установить приоритет примерно на 100
Есть ли решение? - получить это в ветке тестирования Manjaro
25 июня, 10:20:55 Рабочая станция systemd [1]: / run / systemd / system / var-lib-systemd \ x2dswap-swapfc-1. swap: 11 : Извините, приоритеты подкачки меньше -1 могут быть назначены только самим ядром, игнорируя: -2
25 июня, 10:20:56 Рабочая станция systemd [1]: не удалось активировать файл подкачки.
на systemd 245.6-3 нет проблемДа, вы можете установить приоритет примерно на 100
Не решает мою проблему:
О, я неправильно прочитал твой комментарий. Приоритет никогда не приводит к сбою файла подкачки, он просто предупреждает, поэтому ваша проблема не связана.
Пожалуйста, откройте для этого новый выпуск
Я не знаю, когда это снова началось, но я использую последнюю версию ядра Arch с zen modifs (linux-tkg) в 5.9.7, и я все еще воспроизводю эту проблему, за исключением того, что она еще хуже, потому что она продолжает увеличивать приоритет:
/var-lib-systemd\x2dswap-swapfc-3.swap:11: Sorry, swap priorities smaller than -1 may only be assigned by the kernel itself, ignoring: -474
Вот мой текущий free -hm
:
total used free shared buff/cache available
Mem: 15Gi 4,2Gi 907Mi 668Mi 10Gi 9,2Gi
Swap: 4,0Gi 2,3Gi 1,7Gi
А вот конфигурация, которую я использую (без изменений в /etc/systemd/swap.conf
, используя вставку fil:
################################################################################
# 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
Вот журнал журнала systemd-swap (без ошибок приоритета swap systemd)
systemd-swap-log.txt
@vilgotf
Это ошибка конфигурации на вашей стороне (хотя для этого необходимо выполнить проверки).
Проблема с вашей конфигурацией заключается в том, что создается новый файл подкачки, поскольку вы используете более 50% вашего свопа. Это нормально работает с несколькими файлами подкачки, но когда выделяется следующий файл подкачки, объем свободной подкачки теперь превышает 55%, поэтому он мгновенно пытается удалить файл подкачки, а затем (поскольку мы удалили файл подкачки), объем бесплатного свопа меньше 50%, поэтому он пытается создать новый файл подкачки (до бесконечности)
Уменьшите значение swapfc_free_swap_perc
(рекомендуется, по какой-то причине 15 по умолчанию) или увеличьте значение swapfc_remove_free_swap_perc
.
Все, спасибо! Да, я пытался поиграть со значениями, потому что новый файл подкачки не появился достаточно скоро, и сработал убийца памяти.
Самый полезный комментарий
Аааа, неважно. Я могу воспроизвести это, просто это не регистрируется systemd-swap, а systemd