Zero-Copy Pages in Rust: Or How I Learned to Stop Worrying and Love Lifetimes
Le zero-copy consiste à éliminer les copies CPU entre le noyau et les buffers utilisateur afin d'améliorer les performances dans les applications à haut débit. L'utilisation de O_DIRECT et de buffers alignés permet de contourner le cache de pages du noyau et d'éviter la copie au niveau du système, sous réserve de contraintes d'alignement et de compatibilité matérielle. La buffer pool remplace la page cache du système en fournissant un mécanisme (table de pages fixes) et une politique d'éviction (par exemple CLOCK) adaptée aux besoins de la base de données. En Rust, on évite les copies supplémentaires en exposant des vues empruntées sur les octets épinglés via des gardes de verrouillage et des annotations de durée de vie, en reconstruisant rapidement des vues interprétées au moment de l'accès. Ce design impose une séparation explicite des chemins en lecture et en écriture pour respecter le principe d'aliasing XOR mutability, ce qui assure la sécurité sans unsafe mais se traduit par un coût ergonomique et des annotations supplémentaires.