Почему происходит подкачка, когда zswap включен, а пул zswap не заполнен?

текущей конфигурации является swappiness = 40; zswap cache = 40

free -m команда сообщает

               total        used        free      shared  buff/cache   available
Mem:           3615        1353        1232         191        1029        1806
Swap:          4095           4        4091

zswap отладочную информацию по команде sudo grep -r . /sys/kernel/debug/zswap

/sys/kernel/debug/zswap/stored_pages:892
/sys/kernel/debug/zswap/pool_total_size:1220608
/sys/kernel/debug/zswap/duplicate_entry:0
/sys/kernel/debug/zswap/written_back_pages:0
/sys/kernel/debug/zswap/reject_compress_poor:0
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:0
/sys/kernel/debug/zswap/pool_limit_hit:0
3
задан 1 April 2018 в 16:30

1 ответ

Страницы в zswap все еще считаются как подкачанный диск. Я полагаю, что это необходимо, потому что размер пула zswap является динамичным, и это позволяет в конечном счете перемещать все страницы в дисковую подкачку.

/sys/kernel/debug/zswap/written_back_pages шоу, сколько страниц, где на самом деле записано в диск, но насколько я понимаю это, является всем временем кумулятивный инкремент.

Получить текущее число байтов, подкачанных на диске:
Вы хотите вычислить

$used_swap_in_bytes(as shown by "free -b" or "swapon -s") -
/sys/kernel/debug/zswap/stored_pages * $(getconf PAGESIZE)

например, (в байтах)

echo "$(LANG=c free -b |grep Swap |awk '{print $3}') - $(sudo \
cat /sys/kernel/debug/zswap/stored_pages)*$(getconf PAGESIZE)" |bc -l
echo bytes swapped on disk

или в Mio (округленный пол):

echo | awk '{value='"$(LANG=c free -b |grep Swap |awk '{print $3}')\
- $(sudo cat /sys/kernel/debug/zswap/stored_pages)*\
$(getconf PAGESIZE)"';printf "%.0f\n", value/1024**2}'
echo Mio swapped on disk
1
ответ дан 1 December 2019 в 17:28

Другие вопросы по тегам:

Похожие вопросы: