11Distribution Linux · Systèmes de bureau

Kestrel

Distribution Linux autonome basée sur Arch, avec Hyprland + Quickshell et un pont d'ordonnancement par tâche au niveau du noyau.

Un bureau façonné, un noyau et un vocabulaire d'ordonnancement : le compositeur, le terminal et les applications partagent une indication par tâche consommée par sched_ext.

Arch LinuxHyprlandQuickshellsched_extBtrfsShell
Dernier commit du dépôt

Chargement des derniers commits…

Base

ARCH

Bureau

HYPRLAND + QUICKSHELL

Installation

COPIE DU ROOTFS

Ordonnanceur

scx_kestrel

01

Problème

La plupart des distributions donnent au bureau un ordonnanceur et s'arrêtent là. Le compositeur, le terminal et les applications ne partagent pas de vocabulaire pour la latence ou le débit ; le réglage passe par des priorités génériques et de la configuration empilée sur un système générique.

Kestrel part d'Arch et remplace les pièces qui décident du comportement du bureau : compositeur, shell, terminal, noyau et ordonnanceur sont construits et livrés comme un système apparié.

02

Qu'est-ce que Kestrel

Kestrel est une distribution autonome basée sur Arch avec un seul bureau façonné : Hyprland, Quickshell, foot et fish. Le compositeur, le shell, le terminal, le noyau et l'ordonnanceur sont construits et livrés comme un système apparié.

Le noyau, linux-kestrel, est compilé avec Clang ThinLTO pour x86-64-v3, préemption complète, 1000 Hz, sched_ext, DAMON et NTSYNC. Hyprland, Quickshell et leur fermeture de bibliothèques partagées sont recompilés avec les mêmes flags, et le terminal est un fork de foot qui participe au chemin de l'indication.

03

Le pont d'ordonnancement

Indication noyau

linux-kestrel ajoute sched_ext_hint à struct sched_attr ; l'espace utilisateur fixe 0..1024 avec sched_setattr(2) et SCHED_FLAG_KESTREL_HINT (1ULL << 40).

Bibliothèque utilisateur

libkestrel-hint et kestrel-hint fixent et lisent l'indication pour le bureau, les terminaux, le navigateur et le travail en arrière-plan.

Broker

kestrel-broker place les processus dans les cgroups kestrel-desktop, kestrel-term, kestrel-browser et kestrel-background.

Ordonnanceur

scx_kestrel, un fork de scx_layered, lit l'indication via scx_bpf_task_hint et applique son jeu de couches ; scx_loader/scxctl changent d'ordonnanceur à l'exécution.

04

Paquets lourds → noyau

Hyprland

Le compositeur tourne dans kestrel-desktop. Le travail critique pour les frames porte une indication de latence avant le dispatch, afin que scx_kestrel puisse le préférer lorsque le bureau est chargé.

Quickshell

La barre, le lanceur, les notifications, l'OSD et l'économiseur d'écran partagent la classe kestrel-desktop avec le compositeur ; l'UI interactive reste sur le même chemin de latence.

Navigateur Zen

Les processus du navigateur tournent dans kestrel-browser. Les onglets au premier plan et l'entrée portent l'indication interactive ; les onglets en arrière-plan ne se disputent pas le même budget.

Terminal foot

Un seul foot --server partagé tourne dans kestrel-term avec des clients par fenêtre ; la latence du terminal est isolée du navigateur et du travail de fond.

Travail de fond

Les builds, l'indexation et les jobs d'agents vont dans kestrel-background, libres d'utiliser les cœurs inactifs sans voler de latence au bureau.

Noyau + ordonnanceur

linux-kestrel expose l'indication 0..1024 via sched_ext ; scx_kestrel la lit avec scx_bpf_task_hint et la combine avec son jeu de couches.

05

Pile d'optimisation

Kestrel ne s'arrête pas aux indications de runtime. Hyprland et Quickshell sont compilés pour x86-64-v3 avec Clang ThinLTO, et leur fermeture partagée de bibliothèques Hyprland est reconstruite avec les mêmes flags au lieu du -O2 générique d'Arch, afin que le bureau ait un seul codegen. qt6-base-kestrel ajoute Wayland explicit sync (linux-drm-syncobj-v1), et linux-kestrel est Clang ThinLTO sur x86-64-v3 avec préemption complète, 1000 Hz, sched_ext, DAMON et NTSYNC.

Le résultat est un seul chemin d'optimisation depuis les processus lourds (Zen, Hyprland, Quickshell, foot, Obsidian, OBS), à travers leur cgroup et leur indication par tâche, jusqu'à l'ordonnanceur et au noyau. Chaque classe et chaque tâche portent une information explicite au lieu de dépendre de priorités ambiantes.

06

Ce qui est inclus

Hyprland gère les fenêtres et Quickshell fournit la barre, le lanceur, les notifications, l'OSD, l'économiseur d'écran et les thèmes. foot tourne comme un serveur partagé dans le slice kestrel-term ; fish est le shell de connexion. Les applications incluent Neovim, Zen, Obsidian, LibreOffice, Kdenlive et OBS Studio.

Une seule CLI kestrel couvre les thèmes, les captures, le packaging, le matériel et la configuration système. Les mises à jour sont Arch rolling, avec un snapshot Btrfs automatique avant chaque upgrade et un rollback depuis le menu de démarrage. L'outillage agentique est installé via mise.

07

Mesure

kestrel-bench s'exécute dans la VM et vérifie le pont d'indications de bout en bout : set/get, placement du broker et de foot, A/B 3x scx_bpfland vs scx_kestrel, matrice de workers de foot et échantillonnage du PSS maximal des processus livrés. Un changement qui ne bouge pas une métrique n'est pas publié.

08

État

  • L'ISO live compile et démarre le noyau Kestrel avec le bureau complet et le pont d'indications
  • Le pont d'indications (linux-kestrel + libkestrel-hint + scx_kestrel) est implémenté et exercé par kestrel-bench
  • Le bureau, les defaults foot/fish et la chaîne de thèmes sont en place
  • Le packaging et la documentation rattrapent encore l'implémentation
09

Écosystème Kestrel

La distribution est répartie entre des dépôts versionnés indépendamment qui partagent les mêmes contrats de noyau, de bureau et de packaging.