Cómo cambiar el tamaño del espacio de intercambio (SWAP) en SmartOS
Nota
En este documento voy a usar los términos SWAP y espacio de intercambio de forma indistinta.
Cuando se realiza una instalación nueva, SmartOS crea un dataset de SWAP del mismo tamaño que la memoria RAM del ordenador. Esto puede ser apropiado para máquinas grandes, pero cuando vamos escasos de memoria un SWAP tan pequeño es problemático porque bajo Illumos (Solaris) no existe el concepto de overcommit de memoria como en Linux. Es decir, un kernel Illumos limita el espacio de direccionamiento disponible para los programas a la suma de la memoria RAM y el espacio de intercambio (SWAP).
Por tanto, en SmartOS es común ampliar el espacio de intercambio.
Una de mis máquinas tiene solo 8GB de RAM y veo lo siguiente:
[root@X ~]# swap -s total: 3928724k bytes allocated + 221992k reserved = 4150716k used, 8223728k available [root@X ~]# zfs get all zones/swap NAME PROPERTY VALUE SOURCE zones/swap type volume - zones/swap creation vie. dic. 2 8:38 2022 - zones/swap used 8,22G - zones/swap available 614G - zones/swap referenced 3,71G - zones/swap compressratio 2.18x - zones/swap reservation none default zones/swap volsize 7,97G local zones/swap volblocksize 8K default zones/swap checksum on default zones/swap compression lz4 inherited from zones zones/swap readonly off default zones/swap createtxg 92 - zones/swap copies 1 default zones/swap refreservation 8,22G local zones/swap guid 1242262060458694733 - zones/swap primarycache all default zones/swap secondarycache all default zones/swap usedbysnapshots 0 - zones/swap usedbydataset 3,71G - zones/swap usedbychildren 0 - zones/swap usedbyrefreservation 4,52G - zones/swap logbias latency default zones/swap dedup off default zones/swap mlslabel none default zones/swap sync standard default zones/swap refcompressratio 2.18x - zones/swap written 3,71G - zones/swap logicalused 8,01G - zones/swap logicalreferenced 8,01G - zones/swap snapshot_limit none default zones/swap snapshot_count none default zones/swap redundant_metadata all default zones/swap encryption off default zones/swap keylocation none default zones/swap keyformat none default zones/swap pbkdf2iters 0 default
Por necesidades de servicio, requiero ampliar bastante el espacio de intercambio que, como he dicho, limita el espacio de direccionamiento total disponible para todos los programas.