Linux y PostgreSQL: ¿Mejoras en el rendimiento?

Fuentes: Erthalion's blog

Este artículo del blog de Erthalion explora recientes cambios en el kernel de Linux que podrían ser relevantes para la base de datos PostgreSQL. El objetivo principal es identificar mejoras potenciales en el rendimiento y nuevas funcionalidades que el kernel ofrece y que podrían beneficiar a PostgreSQL, a pesar de las dificultades inherentes a la dependencia entre proyectos de código abierto.

¿Por qué es importante? La interdependencia entre proyectos de código abierto es común, pero a menudo genera retrasos en la adopción de nuevas características debido a la falta de comunicación y comprensión entre las comunidades. Este artículo intenta tender un puente entre el desarrollo del kernel de Linux y las necesidades de PostgreSQL.

Uncached Buffered IO: Una de las novedades destacadas es el 'Uncached Buffered IO'. Normalmente, las operaciones de entrada/salida (IO) utilizan la caché de página del kernel para acelerar el acceso a los datos. Sin embargo, en situaciones de alta carga y escasez de memoria, esta caché puede volverse ineficiente, causando ralentizaciones. El 'Uncached Buffered IO' introduce una bandera (RWF_DONTCACHE) que permite a las aplicaciones realizar IO sin almacenar los datos en la caché de página, lo que puede mejorar el rendimiento en ciertas circunstancias, como se demostró con pruebas que comparan el rendimiento de cargas de datos grandes con y sin caché. Esto es especialmente útil en entornos con alta presión de memoria.

Untorn Writes: Otra característica interesante son los 'Untorn Writes'. Este conjunto de cambios, desarrollado con el uso de bases de datos en mente, busca evitar la corrupción de datos en caso de fallos durante las operaciones de escritura. Muchos dispositivos modernos (NVMe, SCSI) soportan escrituras atómicas, que garantizan que una operación de escritura se complete por completo o no se complete en absoluto, evitando así la creación de páginas “desgarradas” (torn pages). El kernel ahora introduce una bandera (RWF_ATOMIC) para habilitar estas escrituras atómicas, aunque actualmente requieren IO directo (no buffered IO), lo que limita su adopción inmediata.

Consideraciones: La portabilidad es un factor crucial para PostgreSQL, que busca ser compatible con una amplia gama de sistemas operativos y distribuciones. Las nuevas características del kernel deben ser lo suficientemente portables para ser adoptadas sin introducir complicaciones significativas. Además, la dependencia de IO directo para los 'Untorn Writes' es una limitación importante que podría requerir soluciones alternativas para su integración completa en PostgreSQL. El artículo es una exploración inicial y superficial, y es probable que requiera una investigación más profunda para determinar su viabilidad y beneficios reales.