Overview

Gthulhu is a next-generation scheduler designed for the cloud-native ecosystem, built with Golang and powered by the qumun framework.

The name Gthulhu is inspired by Cthulhu, a mythical creature known for its many tentacles. Just as tentacles can grasp and steer, Gthulhu symbolizes the ability to take the helm and navigate the complex world of modern distributed systems — much like how Kubernetes uses a ship’s wheel as its emblem.

The prefix “G” comes from Golang, the language at the core of this project, highlighting both its technical foundation and its developer-friendly design.

Underneath, Gthulhu runs on the qumun framework (qumun means “heart” in the Bunun language, an Indigenous people of Taiwan), reflecting the role of a scheduler as the beating heart of the operating system. This not only emphasizes its central importance in orchestrating workloads but also shares a piece of Taiwan’s Indigenous culture with the global open-source community.

Inspiration

The project is inspired by the Andrea Righi's talk "Crafting a Linux kernel scheduler in Rust". So I spent sometime to re-implement the scx_rustland, which is called qumun (scx_goland). After I done all of infrastructure setup, I redefine the project's mission, I make Gthulhu to be a generic scheduling solution dedicated to cloud-native workloads.

What it does

Gthulhu simplfies the transformation from user's intents to scheduling policies. User can use machine friendly language (e.g. json) or use AI agent with MCP to communicate with Gthulhu, then Gthulhu will optimize specific workloads based on what you gave!

How we built it

Like scx_rustland, We built a user-space scheduler and eBPF scheduler. The eBPF scheduler is responsible to pass the scheduling event to user-space scheduler (Gthulhu), then Gthulhu make a decision (which cpu will execute the task, how long the cpu should remain for the task).

In addition, we also built the api server for receiving the user's intent, MCP tool for transfoming the user's needs, helm chart for kubernetes deployment.

Challenges we ran into

  • How to make a user-space scheduler in Go
  • How to design a user-friendly scheduling solution
  • How to manage multi-node k8s cluster's workloads under Gthulhu

Accomplishments that we're proud of

What we learned

  • How to troubleshoot the customized kernel module with eBPF
  • How to trace the scheduler's event in kernel (Perfetto)
  • Deeply understand how golang runtime works
  • Understeand how libbpfgo works, and also contribute a series of patches to support user-ring buffer and struct_ops API.

What's next for Gthulhu

  • CNCF landscape adoption
  • Integration with Agent Builder
  • Multi-node management system
  • Preparation to join CNCF Sandbox

Built With

Share this project:

Updates