Происходит ли переключение страниц, когда основная память еще доступна?

# SETUP CIDR ARRAY DATA
cidrs=(10.10.10.0/24 20.20.20.0/24)
cidrarr=()
for cidr in "${cidrs[@]}"; do
    mask=$(echo $cidr | cut -d/ -f2)
    ip=$(echo $cidr | cut -d/ -f1)
    cidrdec=0;maskdec=0;p=0
    for i in {1..4}; do
        e=$((2**$((8*(4-$i)))))
        o=$(echo $ip | cut -d. -f$i)
        cidrdec=$(($cidrdec+$o*$e))
    done
    for ((i=1; i<=$mask; i++)); do
        maskdec=$(($maskdec+2**(32-$i)))
    done
    cidrarr+=($cidr)
    cidrarr+=($cidrdec)
    cidrarr+=($maskdec)
done
# END SETUP CIDR ARRAY DATA

cidrtest() {
    ipdec=0
    for i in {1..4}; do
        e=$((2**$((8*(4-$i)))))
        o=$(echo $1 | cut -d. -f$i)
        ipdec=$(($ipdec+$o*$e))
    done
    for i in ${!cidrarr[@]}; do
        [ $((i%3)) -ne 0 ] && continue
        t=${cidrarr[i+1]}
        m=${cidrarr[i+2]}
        ipm=$(($ipdec & $m))
        [[ $ipm -eq $t ]] && echo "$1 is within ${cidrarr[i]}"
    done
}

cidrtest 10.10.0.1
3
28.07.2020, 12:45
3 ответа

does the Linux kernel swap out any memory pages even when there are still some available memory spaces

Проверьтеvim /proc/sys/vm/swapiness(на Ubuntu по крайней мере ). Это указывает, как часто выполняются свопы, и может означать, что свопы выполняются, даже если память доступна. Настоящая причина найти оптимальное значение для этого сильно зависит от того, как работает ОС, доступной памяти и самого процессора. (Моя подкачка указана на 60.)

Из того, что я вижу в более новых обновлениях, Linux автоматически создает /swapfile (, размер которого увеличивается до 1 -2 ГБ )с использованием доступного дискового пространства, если раздел подкачки не указан. Это явно не истощает дополнительное хранилище, а просто делает работу вашего компьютера более плавной. Посмотрите на вывод ubuntu@ubuntu:/home/ubuntu$ swapon. Мой:

NAME      TYPE      SIZE   USED PRIO  
/swapfile file      1.1G 123.5M   -2  
/dev/sda6 partition   2G   1.7G    1

Это означает, что вы можете в значительной степени «получить стабильную систему Linux» без раздела подкачки.

Единственным исключением является то, что раздел подкачки упрощает перезагрузку частично -сохраненной (или несохраненной )информации, когда ваша ОС переходит в спящий режим/сбой, а вы переключаетесь на другую ОС между ними. (Я не уверен, но думаю, это потому, что раздел подкачки содержит /hiberfile.)

2
18.03.2021, 23:16

does the Linux kernel swap out any memory pages even when there are still some available memory spaces?

По моему опыту, так оно и есть.

To put this in another way, can I unset the entire swap partition and still get the stable Linux system, given that I have a sufficient amount of main memory that I cannot exhaustively use?

Я перестал использовать SWAP/файл подкачки примерно 15 лет назад, когда впервые установил достаточно оперативной памяти на свой ПК (512 МБ в то время ). Если у вас более чем достаточно оперативной памяти для ваших нужд, вам вообще не нужно иметь или использовать файл подкачки/подкачки.

У меня не было ни одной проблемы с запуском без подкачки.

1
18.03.2021, 23:16

Есть параметр ядра vm.swappiness, отвечающий за процент от лимита использования памяти, после которого происходит подкачка. Вы можете видеть, что

sysctl -a | grep vm.swappiness

в Ubuntu по умолчанию составляет 60%. Вы можете изменить это так

sysctl -p vm.swappiness=10

или поменять местами.

Не забывайте, что запущенный OOM killer убьет процесс, который вы, возможно, не захотите убивать в ситуации нехватки оперативной памяти в будущем.

1
18.03.2021, 23:16

Теги

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