Systemd-swap: Извините, приоритеты подкачки меньше -1 могут быть назначены только самим ядром

Созданный на 14 июн. 2020  ·  31Комментарии  ·  Источник: Nefelim4ag/systemd-swap

Кажется, это вызвано 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

Самый полезный комментарий

Аааа, неважно. Я могу воспроизвести это, просто это не регистрируется systemd-swap, а systemd

Все 31 Комментарий

Можете ли вы назвать свою версию 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. Вы можете предоставить дополнительную информацию?

Все еще может воспроизводиться с вашими последними коммитами.
Какая еще информация вам нужна?

Я не знаю, но я не могу поставить диагноз, не имея возможности воспроизводить потомство. И поскольку об этом сообщаете только вы, у меня такое чувство, что с вашей стороны что-то может быть причиной этого.

  • Мой путь swapfc: /var/lib/systemd-swap/swapfc/
  • Варианты крепления диска: rw,noatime,lazytime
  • Systemd 245.6

Моя текущая конфигурация 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

Не решает мою проблему:
grafik

О, я неправильно прочитал твой комментарий. Приоритет никогда не приводит к сбою файла подкачки, он просто предупреждает, поэтому ваша проблема не связана.
Пожалуйста, откройте для этого новый выпуск

Я не знаю, когда это снова началось, но я использую последнюю версию ядра 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 .

Все, спасибо! Да, я пытался поиграть со значениями, потому что новый файл подкачки не появился достаточно скоро, и сработал убийца памяти.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги