Saltar al contenido

Cómo configurar correctamente zram e swap

Esta es el arreglo más válida que te podemos dar, pero estúdiala pausadamente y analiza si es compatible a tu trabajo.

Solución:

swapon tener -p interruptor que establece la prioridad. Puedo configurar:

swapon -p 32767 /dev/zram0
swapon -p 0 /dev/my-lvm-volume/swap

O en / etc / fstab:

/dev/zram0              none swap sw,pri=32767 0 0
/dev/my-lvm-volume/swap none swap sw,pri=0     0 0

EDITAR: Solo para una solución completa, dicha línea puede ser útil como regla udev:

KERNEL=="zram0", ACTION=="add", ATTRdisksize="1073741824", RUN="/sbin/mkswap /$root/$name"

Nota al margen: debido al bloqueo por CPU, es importante tener tantos zram-swaps como CPU (modprobe zram_num_devices = n zram) en lugar de uno solo grande. RTFM!

Por alguna razón, parece haber muchas malas interpretaciones de https://www.kernel.org/doc/Documentation/blockdev/zram.txt

Dice claramente:

2) Establecer el número máximo de flujos de compresión
Independientemente del valor pasado a este attribute, ZRAM siempre asignará múltiples flujos de compresión, uno por CPU en línea, permitiendo así varias operaciones de compresión simultáneas. El número de flujos de compresión asignados disminuye cuando algunas de las CPU se desconectan. Ya no existe el modo de flujo de compresión único, a menos que esté ejecutando un sistema UP o tenga solo 1 CPU en línea.

Para saber cuántas transmisiones están disponibles actualmente:

cat /sys/block/zram0/max_comp_streams

Pero existe un mito urbano común y persistente de que los flujos máximos son 1.

Claramente no es true.

Los dos sistemas operativos en los que zram ha demostrado su eficacia Chrome OS y Android son un solo dispositivo. También ajustan page-cluster:

page-cluster controla el número de páginas hasta las que se leen páginas consecutivas desde el intercambio en un solo intento. Esta es la contraparte de intercambio del lector de caché de página.
La consecutividad mencionada no es en términos de direcciones virtuales / físicas, sino consecutiva en el espacio de intercambio, lo que significa que se intercambiaron juntas.

Es un valor logarítmico: ponerlo en cero significa “1 página”, establecerlo en 1 significa “2 páginas”, establecerlo en 2 significa “4 páginas”, etc. Cero desactiva la lectura de intercambio por completo.

El valor predeterminado es tres (ocho páginas a la vez). Puede haber algunos pequeños beneficios al ajustar esto a un valor diferente si su carga de trabajo es intensiva en intercambio.

Los valores más bajos significan latencias más bajas para las fallas iniciales, pero al mismo tiempo fallas adicionales y retrasos de E / S para las siguientes fallas si hubieran sido parte de las páginas consecutivas que la lectura anticipada habría traído.

– de la documentación del kernel para /proc/sys/vm/*

Así que usa echo "0" > /proc/sys/vm/page-cluster para forzar una sola página.

Mucho parece tener su origen en zram_config, el paquete debian / ubuntu que, por alguna razón, parece tener muy poca correlación con los documentos del kernel para zram y ha generado una serie de susurros chinos que, en esencia, podrían estar completamente equivocados.

Con el intercambio de archivos, ¿crea una unidad de intercambio para cada núcleo? Quizás eso pueda responder a tus preguntas. También para respaldar esto, Google Chrome OS y Android, que se emplean con éxito con el grupo de páginas anterior, ya que no coinciden con un disco, por lo que la latencia se puede mejorar en dispositivos individuales.

Además, para un administrador de sistemas, ¿qué es importante el uso real de mem o el uso de mem vm? La mayoría de los ejemplos muestran la creación a través de disk_size e ignoran totalmente mem_limit. disk_size = tamaño de máquina virtual sin comprimir. mem_limit = límite de huella de memoria actual.

De alguna manera hace que la elección de disk_size sea confusa ya que es un tamaño máximo virtual que depende de la relación comp_alg y la sobrecarga del 0.1% del tamaño del disco cuando no está en uso y realmente es una estimación aproximada de mem_limit * (aproximadamente 2-4) de frugal vs optimismo.

zram_config ni siquiera verifica el uso anterior del servicio y sobrescribe, mientras que una simple verificación de la clase zram sys como la siguiente lo hará.

createZramSwaps () awk '/^Mem:/print $2')
        mem=$((( totalmem * MEM_FACTOR / 100 / BIG_CORES ) * 1024))

        # Check Zram Class created
        ZRAM_SYS_DIR='/sys/class/zram-control'
        if [ ! -d "$ZRAM_SYS_DIR" ]; then
                modprobe zram
                RAM_DEV='0'
                echo $COMP_ALG_SWAP > /sys/block/zram$RAM_DEV/comp_algorithm
                echo $mem > /sys/block/zram$RAM_DEV/disksize
                mkswap /dev/zram$RAM_DEV
                swapon -p $SWAP_PRI /dev/zram$RAM_DEV
        else
                RAM_DEV=$(cat /sys/class/zram-control/hot_add)
                echo $COMP_ALG_SWAP > /sys/block/zram$RAM_DEV/comp_algorithm
                echo $mem > /sys/block/zram$RAM_DEV/disksize
                mkswap /dev/zram$RAM_DEV
                swapon -p $SWAP_PRI /dev/zram$RAM_DEV
        fi

        if [ "$BIG_CORES" -gt 1 ];then
                for i in $(seq $((BIG_CORES - 1))); do
                        RAM_DEV=$(cat /sys/class/zram-control/hot_add)
                        echo $COMP_ALG_SWAP > /sys/block/zram$RAM_DEV/comp_algorithm
                        echo $mem > /sys/block/zram$RAM_DEV/disksize
                        mkswap /dev/zram$RAM_DEV
                        swapon -p $SWAP_PRI /dev/zram$RAM_DEV
                done
        fi

Reseñas y puntuaciones del post

Agradecemos que quieras asistir nuestro trabajo dejando un comentario y valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *