# 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
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
.)
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 МБ в то время ). Если у вас более чем достаточно оперативной памяти для ваших нужд, вам вообще не нужно иметь или использовать файл подкачки/подкачки.
У меня не было ни одной проблемы с запуском без подкачки.
Есть параметр ядра vm.swappiness, отвечающий за процент от лимита использования памяти, после которого происходит подкачка. Вы можете видеть, что
sysctl -a | grep vm.swappiness
в Ubuntu по умолчанию составляет 60%. Вы можете изменить это так
sysctl -p vm.swappiness=10
или поменять местами.
Не забывайте, что запущенный OOM killer убьет процесс, который вы, возможно, не захотите убивать в ситуации нехватки оперативной памяти в будущем.