Guía para dimensionar PostgreSQL en instancias EC2 de AWS

Dimensionar correctamente un servidor PostgreSQL en AWS requiere equilibrar el tamaño del conjunto de datos, la carga de trabajo y el coste por hora de cada instancia EC2. Esta herramienta permite fijar el volumen de datos y el rendimiento deseado (transacciones por segundo) para que el sistema reco

Alineación contra el falso compartimiento: 64 o 128 bytes

El falso compartimiento (false sharing) es un fenómeno de rendimiento que ocurre cuando dos variables atómicas independientes caen dentro de la misma línea de caché. Aunque los protocolos de coherencia como MESI trabajan con bloques del tamaño de una línea de caché y no con direcciones individuales,

Cómo invocar código Linux desde un proceso Wine

Cuando un programa Windows se ejecuta bajo Wine sobre x86_64, el código Win32 y el código nativo Linux conviven en el mismo espacio de direcciones dentro de un único proceso. Esta característica, poco documentada, abre la puerta a mejorar la compatibilidad de software Windows en Linux sin necesidad

Optimización de push_back en SmallVector de LLVM: ruta rápida sin frame

LLVM, el compilador de Clang, ha introducido una optimización en SmallVector::push_back para tipos aproximadamente copiables triviales, su operación más caliente. Antes, la ruta rápida del push_back reservaba capacidad, almacenaba el elemento y luego llamaba a grow_pod, lo que obligaba a guardar thi

Maestro: un kernel ligero escrito en Rust compatible con Linux

Maestro es un kernel de tipo Unix ligero, escrito en el lenguaje de programación Rust, cuyo objetivo es aprovechar las garantías de seguridad de su sistema de tipos para ofrecer un sistema operativo fiable. El proyecto se encuentra en una fase temprana de desarrollo, por lo que es altamente inestabl

Un «plan» reutilizable acelera las llamadas de libffi hasta seis veces

libffi es un intérprete de convenciones de llamada: en tiempo de ejecución recibe la descripción de la signatura de una función y, sobre la marcha, decide cómo colocar cada argumento y ejecutar la llamada. Esa interpretación se repite en cada invocación, lo que cuesta alrededor de 650 instrucciones

Reflexiones sobre instrumentación de llamadas al sistema en x86-64 Linux

Artículo técnico-divulgativo del desarrollador Stephen Kell en el que reflexiona sobre la instrumentación de llamadas al sistema en el espacio de usuario de Linux sobre x86-64. Partiendo de su biblioteca libsystrap, que actualmente sustituye cada syscall por la instrucción ud2 (provocando una doble

Linux 7.1 llega con un nuevo controlador NTFS y activa Intel FRED por defecto

El kernel Linux 7.1 se publicó el domingo por la tarde (hora europea) tras el lanzamiento encabezado por Linus Torvalds desde otra zona horaria. La versión introduce un nuevo controlador NTFS en espacio de núcleo, que hereda el nombre del antiguo y ofrece soporte nativo de lectura y escritura median

Zinnia: kernel POSIX escrito en Rust y arrancable desde UEFI

Zinnia es un kernel de código abierto desarrollado casi por completo en Rust, con el objetivo declarado de minimizar el uso de bloques unsafe siempre que sea posible. Implementa un conjunto amplio de llamadas al sistema conformes con POSIX e incorpora extensiones habituales en Linux y los BSD, como

Cuánto ayudan los niveles de microarquitectura amd64 en Go

Recompilar código Go con niveles de microarquitectura más altos puede recortar hasta un 43% el tiempo de ejecución en operaciones intensivas, sin tocar una sola línea de código fuente, según un análisis publicado por el investigador Daniel Lemire, profesor de la Universidad de Quebec y reconocido ex

X OS, un micronúcleo x86_64 minimalista sin compatibilidad POSIX

X OS es un sistema operativo de micronúcleo para arquitecturas x86_64 desarrollado desde cero, sin heredar código de Unix ni mantener compatibilidad POSIX. Su objetivo declarado es construir una plataforma nativa tanto para agentes de inteligencia artificial como para usuarios humanos, con un diseño

Cómo reducir al mínimo un binario en C con GCC

Este artículo analiza paso a paso cómo reducir el tamaño de un ejecutable ELF en x86-64 compilado con GCC partiendo de un programa mínimo que simplemente devuelve 0 al sistema. El autor, mediante una serie de iteraciones con banderas del compilador y código ensamblador inline, consigue reducir el bi

Rusty Penguin crea un sistema operativo ternario desde cero en Rust puro

Rusty Penguin es un sistema operativo completo desarrollado desde cero en Rust puro, sin depender del kernel Linux ni de libc. Su innovación clave reside en la adopción de la lógica ternaria (-1, 0, +1) como primitiva fundamental en todas las capas: desde el planificador hasta el motor de inferencia

Presentan FreedomLang, nuevo lenguaje de sistemas sin dependencias externas

FreedomLang es un nuevo lenguaje de programación de sistemas que compila código nativo x86-64 sin dependencias de libc ni CRT. El lenguaje, actualmente en fase pre-1.0, utiliza compilación AOT (ahead-of-time) directa: Linux genera bytes de máquina ELF64, mientras macOS y Windows producen ensamblador

Qué ocurre cuándo enciendes tu PC: el arranque del kernel de Linux

El arranque del kernel de Linux es un proceso fascinante que ocurre entre el momento en que enciendes tu computadora y cuando aparece la pantalla de login. Este proceso, que usualmente dura solo unos segundos, implica una de las secuencias de inicialización más complejas en computación. El kernel de

Nuevo compresor 'fc' optimiza la compresión de datos de punto flotante

Se ha publicado 'fc' (floating-point compressor), una nueva herramienta de compresión sin pérdida diseñada específicamente para streams de números en formato IEEE-754 de 64 bits. Desarrollada por Praveen Vaddadi bajo licencia Apache 2.0, la versión actual es fc 1.56. El compresor divide la entrada e

Linux corrige lentitud en x86-64 con solución temporal

Investigaciones recientes han revelado problemas de rendimiento relacionados con las llamadas “split locks” en las arquitecturas x86-64 de Intel y AMD. Las split locks, utilizadas en operaciones atómicas que cruzan límites de línea de caché, pueden provocar la activación de “bus locks”, un mecanismo

btry: Herramienta ligera para batería en Linux

Un desarrollador ha creado una herramienta de línea de comandos llamada 'btry', un programa extremadamente ligero (298 bytes) diseñado para mostrar información sobre la batería en portátiles Linux x86-64. La utilidad, disponible en GitHub, muestra el estado de la batería en vatios-hora (Wh) o, en al

Anos: Sistema operativo de código abierto avanza a hardware

Un desarrollador ha anunciado un hito significativo en el desarrollo de 'Anos', un nuevo sistema operativo de código abierto. Anos, actualmente en estado de 'kernel de juguete', ahora es capaz de ejecutar multitarea preemptiva en hasta 16 CPUs, lo que permite la ejecución de controladores de disposi

Spaces: Nuevo Asignador de Memoria para Linux

Un nuevo asignador de memoria llamado 'Spaces' ha sido desarrollado para Linux x86-64, ofreciendo una alternativa a malloc con características avanzadas para un control más preciso de la memoria. Spaces, disponible como un único archivo de código fuente, permite la creación de regiones de memoria ex

IA ayuda a acelerar CPU experimental con ensamblador

Un desarrollador ha logrado duplicar la velocidad de un CPU experimental al portar su código de ensamblador x86-64, utilizando la asistencia de un modelo de lenguaje de IA (Claude Code). El proyecto, parte del ecosistema 'Hundred Rabbits', implica una máquina de pila simple llamada Uxn, originalment

Linux: /proc/self/mem y la memoria protegida

Este artículo explora un comportamiento peculiar y a menudo desconocido de `/proc/self/mem` en sistemas Linux: la capacidad de escribir en memoria marcada como inescrutable. Normalmente, el sistema operativo impide que el código escriba en áreas de memoria designadas como de solo lectura. Sin embarg

Optimiza tu código C: rendimiento y portabilidad

Este artículo explora técnicas para optimizar el rendimiento de software C, especialmente en arquitecturas x86-64, donde la capacidad de la CPU juega un papel crucial. El problema radica en que el código optimizado para una CPU específica puede no funcionar bien en otras, limitando la portabilidad.

Chorba optimiza CRC32: más eficiencia en la verificación de datos

Chorba: Una nueva implementación de CRC32 para mayor eficiencia. ¿Qué es CRC32 y por qué es importante? CRC32 (Cyclic Redundancy Check) es un algoritmo de checksum ampliamente utilizado para verificar la integridad de datos. Imagina que descargas un archivo de internet; el CRC32 te permite confirmar

Ingeniería inversa de Rosetta 2: cómo funciona la 'traducción' de Apple

Rosetta 2 es una pieza fundamental de la transición de Apple a sus propios chips ARM (Apple Silicon) desde los procesadores Intel x86_64. Para permitir que las aplicaciones existentes, compiladas para la arquitectura Intel, sigan funcionando en los nuevos Macs, Apple desarrolló Rosetta 2, un sofisti

Lilush: LuaJIT ligero para Linux

Un nuevo entorno de ejecución de LuaJIT llamado Lilush ha sido lanzado, ofreciendo una solución autónoma y ligera para el desarrollo de software en sistemas Linux x86_64. Con un tamaño inferior a 3MB y sin dependencias externas, Lilush se presenta como una alternativa a Busybox y se puede integrar f

AVX2 frena emulación de Windows en ARM

Un ingeniero de RemObjects descubrió que compilar aplicaciones para AVX2 resulta en un rendimiento más lento que compilar para SSE2-4.x en Windows ARM cuando se ejecuta bajo la emulación Prism. Esta conclusión, contraintuitiva, surge de pruebas de rendimiento de benchmarks matemáticos en Windows ARM

Registros x86-64: ¿Cuántos y por qué importa?

El artículo explora la complejidad de la arquitectura de registros en las CPUs x86-64, un aspecto que ha resurgido en la discusión de programación gracias a tecnologías como Rosetta 2 de Apple. A diferencia de otras arquitecturas modernas, x86-64 ofrece una gran cantidad y diversidad de registros, l