Implementé un truco para agregar espacio de intercambio a un VPS que de otra manera no me permitiría usar swapon
para crear un archivo.
Antes de agregar y ejecutar el script, seguí los pasos descritos aquí. y resumido a continuación:
- Primero creo el archivo de intercambio:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
- Entonces
sudo mkswap /swapfile
. - El siguiente paso generalmente hubiera sido hacer un
sudo swapon /swapfile
. Sin embargo, el VPS que estoy usando no coincide con eso, así que encontré esta publicación. Afirmaba que podía usar el siguiente script como solución alternativa.
Vea abajo:
#!/bin/bash
SWAP="${1:-512}"
NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"
umount /proc/meminfo 2> /dev/null
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo
Para más contexto, el proceso se describe en detalle en esta respuesta . (En su mayoría solo se alimenta con cuchara al ejecutar un script bash).
Todo parece estar bien, sin embargo, cuando miro en htop (o free -m
para el caso); el uso de memoria permanece en el valor que tenía cuando ejecuté el script y el espacio de intercambio utilizado permanece en cero. Esto es independientemente del proceso que ejecute en el servidor. Mi conocimiento de lo que está sucediendo en la asignación de memoria es muy limitado (esta es realmente la primera vez que lo hago). ¿Alguien podría decirme si esto tiene sentido, dado el script que estoy ejecutando, y por qué?
Si entiendo ese script correctamente, en realidad no permite el intercambio de ninguna manera. En su lugar, simplemente pretende que el sistema tiene permuta mediante la sustitución de
/proc/meminfo
modo quefree
yhtop
creer que el sistema tiene intercambio, pero el núcleo es de ninguna manera poder utilizar este intercambio falso. Si observa el script, puede notar que no se menciona ningún archivo o partición de intercambio en ninguna parte, por lo que no hay nada que el núcleo pueda usar.Así que esto:
Es exactamente lo que esperaría que sucediera.
fuente
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
luegosudo mkswap /swapfile
. El siguiente paso generalmente habría sido hacer unasudo swapon /swapfile
publicación que leí que decía que este script sería una solución alternativa al paso swapon. ¿Tendría algún sentido? ¡Gracias de nuevo!dd
ymkswap
simplemente escriba en un archivo: solo elswapon
paso le indicaría al núcleo que use ese archivo como intercambio. Si su núcleo no es compatibleswapon
, entonces no tiene suerte. Ningún script de shell te ayudará allí.