El uso de swap en producción para absorber picos de memoria en aplicaciones Go puede generar pausas de 'stop-the-world' de hasta 40 milisegundos, un impacto significativo en el rendimiento. Un análisis técnico realizado por un desarrollador revela que, aunque el kernel evicta páginas por grupo de control (cgroup) y no por proceso individual, el recolector de basura (GC) de Go lee metadatos críticos fuera de la pila de objetos. Cuando estas páginas son evictadas al disco, el GC sufre fallos de página durante sus pausas, lo que detiene completamente la ejecución del programa. En pruebas realizadas en un entorno de Hetzner con kernel 6.8 y MGLRU activado, la pausa mediana fue de 51 microsegundos, pero el peor caso alcanzó los 40 milisegundos. Este tiempo se distribuyó principalmente en fallos de página (39013 us) dentro de la lógica de limpieza del GC. A diferencia de las pausas de GC globales, este fallo afecta solo a la goroutine que realiza la asignación, pero su impacto es localizable. Además, se observó que la construcción de mensajes de 511 KiB aumentó de 3-5 ms a 105 ms en discos NVMe, aunque este coste es menor que el de la pausa de metadatos. El autor concluye que, aunque el swap no es inherentemente malo, su interacción con el GC de Go introduce una vulnerabilidad de rendimiento que debe considerarse en entornos de producción, especialmente bajo presión de memoria.
