{"id":2266,"date":"2020-05-03T00:29:06","date_gmt":"2020-05-03T06:29:06","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=2266"},"modified":"2020-05-03T00:29:08","modified_gmt":"2020-05-03T06:29:08","slug":"incrementando-la-ram-con-zram-en-gnu-linux","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=2266","title":{"rendered":"Incrementando la RAM con ZRAM en GNU\/Linux"},"content":{"rendered":"\n<p><strong>Incrementando la RAM con ZRAM en GNU\/Linux<\/strong><\/p>\n\n\n\n<p>Uno de los m\u00f3dulos mas poderoso en GNU\/Linux es zram especialmente en dispositivos con recursos humildes como maquinas antiguas tipo PC , o Raspberry PI y por qu\u00e9 no VPS econ\u00f3micos de 1GB de RAM<\/p>\n\n\n\n<p><strong>\u00bf Que es ZRAM ?<\/strong><\/p>\n\n\n\n<p>ZRAM crea un dispositivo de bloques comprimido en RAM, este dispositivo de bloques como tal puede ser formateado con cualquier FS para simular un disco de estado s\u00f3lido, aunque los sistemas de archivos que podr\u00e1n sacarle provecho ser\u00e1n los que acepten compresi\u00f3n nativa como ZFS o BTRFS, sin embargo, su verdadero potencial no esta en crear sistemas de archivos en la RAM sino crear SWAP, SWAP en RAM<\/p>\n\n\n\n<p><strong>\u00bf SWAP en RAM ?<\/strong><\/p>\n\n\n\n<p>El SWAP se usa para intercambiar programas que est\u00e1n siendo usados poco al disco duro para dejar espacio en la RAM para aplicaciones que se requieren ejecutar justo en ese momento, el SWAP se usa cuando la aplicaci\u00f3n actual no entra completamente en RAM debido a que hay muy poca y esta se encuentra copada por otras aplicaciones que no requieren ejecuci\u00f3n inmediata, el kernel env\u00eda su c\u00f3digo a disco duro y cuando las requiera de nuevo las recuperara del disco duro para traerlas a RAM, escrito esto parece no tener sentido usar SWAP en la RAM porque entonces estar\u00eda intercambiando RAM a RAM y no se liberar\u00eda absolutamente nada \u00bf o si ?<\/p>\n\n\n\n<p>La magia esta en que esta zona de memoria que ser\u00e1 usada para el dispositivo de bloques esta comprimida con LZ4 por default. Normalmente se consigue 512 MB por cada 1GB.<\/p>\n\n\n\n<p>Si tenemos un equipo con GNU\/Linux con 2GB de RAM y se toma 1 GB de RAM para ZRAM virtualmente estar\u00edamos consiguiendo 512MB lo que nos dar\u00eda un total variable, pero aproximado a 2.5GB de RAM.<\/p>\n\n\n\n<p>A cambio de un poco de uso de procesador extra obtenemos memoria adicional \u201c Gratis \u201c , no hay lonche gratis, lo pagamos con CPU pero en este mundo del 2020 donde los CPU traen N cantidad de n\u00facleos, que uno de ellos se dedique a comprimir la memoria es casi gratis y pr\u00e1cticamente sin afectar el rendimiento del equipo. Hay que recordar que el SWAP lo esta haciendo a velocidad de RAM no a la velocidad de disco duro como es lo normal.<\/p>\n\n\n\n<p><strong>Laboratorio de prueba<\/strong><\/p>\n\n\n\n<p><em>CentOS 8 con 1GB de RAM usando GNOME y Firefox<\/em><\/p>\n\n\n\n<p><em>Sin ZRAM<\/em><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/zram\/noswap.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>No puede abrir el Firefox, el equipo pr\u00e1cticamente agoto su RAM y no tiene margen de maniobra<\/p>\n\n\n\n<p><em>Con ZRAM<\/em><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/zram\/swapram.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/zram\/swapram1.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>Usando 512MB para SWAP en RAM con ZRAM se pensar\u00eda que ahora est\u00e1 m\u00e1s limitado y sin embargo al comprimir 512 MB en RAM se obtienen un aproximado de 256 MB de RAM adicionales, por lo que virtualmente ahora el equipo tiene 1.2GB, suficientes para abrir Firefox e incluso ver alg\u00fan video en youtube. Quitando la banalidad de que se usa para entrar a modo gr\u00e1fico, esos 256 MB virtuales adicionales le ir\u00eda muy bien a un VPS de 1GB para servicios como NGINX o MariaDB, aplica igual para los Raspberry PI 3 que solo vienen con 1GB de RAM<\/p>\n\n\n\n<p><strong>\u00bf Como se hace ?<\/strong><\/p>\n\n\n\n<p>1 Cargar el modulo de zram y especificar cuantos dispositivos de bloques debe crear, en este ejemplo 1<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>modprobe zram num_devices=1<\/p><\/blockquote>\n\n\n\n<p>2 especificar cuanta RAM se tomar\u00e1 para el dispositivo de bloques, la medida puede ser en gigas o megas<br \/><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>echo &#8220;1G&#8221; > \/sys\/block\/zram0\/disksize<br \/>o<br \/>echo &#8220;512M&#8221; > \/sys\/block\/zram0\/disksize<\/p><\/blockquote>\n\n\n\n<p>3 ya existe el dispositivo \/dev\/zram0 y ahora puede ser formateado en cualquier FS pero en este articulo hablamos de incrementar la RAM as\u00ed se usara para SWAP<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>mkswap \/dev\/zram0<br \/>swapon \/dev\/zram0<\/p><\/blockquote>\n\n\n\n<p><em>\u2022 Tal vez se tenga que asignar prioridad al SWAP de ZRAM si esta usando swap de disco simult\u00e1neamente por que de lo contrario se har\u00e1 el intercambio a disco y aunque obtendr\u00e1 m\u00e1s RAM esta ser\u00e1 lenta por usar primero la del disco antes que la propia de RAM<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Incrementando la RAM con ZRAM en GNU\/Linux Uno de los m\u00f3dulos mas poderoso en GNU\/Linux es zram especialmente en dispositivos con recursos humildes como maquinas antiguas tipo PC , o Raspberry PI y por qu\u00e9 no VPS econ\u00f3micos de 1GB de RAM \u00bf Que es ZRAM ? ZRAM crea un dispositivo de bloques comprimido en&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2267,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-2266","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultoria-y-manuales"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2266"}],"version-history":[{"count":1,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2266\/revisions"}],"predecessor-version":[{"id":2268,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2266\/revisions\/2268"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/2267"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}