Frequently Asked Questions
This page collects common questions and answers encountered when using Gthulhu and SCX GoLand Core.
Installation Related Questions
Q: How can I confirm my kernel supports sched_ext?
A: You can check using the following methods:
# Method 1: Check kernel configuration
grep -r "CONFIG_SCHED_CLASS_EXT" /boot/config-$(uname -r)
# Method 2: Check /proc/config.gz
zcat /proc/config.gz | grep "CONFIG_SCHED_CLASS_EXT"
# Method 3: Check sched_ext directory
ls /sys/kernel/sched_ext/ 2>/dev/null || echo "sched_ext not supported"
If the output contains CONFIG_SCHED_CLASS_EXT=y
, your kernel supports sched_ext.
Q: What should I do when getting "libbpf not found" error during compilation?
A: This is usually because libbpf is not properly installed. Please follow these steps to resolve:
# Ubuntu/Debian
sudo apt install libbpf-dev
# CentOS/RHEL/Fedora
sudo dnf install libbpf-devel
# Or manually compile libbpf
git clone https://github.com/libbpf/libbpf.git
cd libbpf/src
make
sudo make install
Q: Why is Clang 17+ required?
A: Clang 17+ provides more complete BPF support, including:
- Better BPF CO-RE (Compile Once, Run Everywhere) support
- Latest BPF instruction set support
- More stable BPF program compilation
If your system doesn't have Clang 17+, you can install it like this:
# Ubuntu/Debian
sudo apt install clang-17
# Set environment variables
export CC=clang-17
export CXX=clang++-17
Runtime Related Questions
Q: Getting "Operation not permitted" error when running
A: This is a permission issue. BPF program loading requires root privileges:
# Correct way to run
sudo ./main
# Or use Docker
docker run --privileged=true --pid host --rm gthulhu:latest /gthulhu/main
Q: What to do if the system becomes slow after starting the scheduler?
A: This might be due to the following reasons:
-
Scheduling parameters not suitable for your workload:
-
Insufficient memory:
-
BPF program performance issues:
Solutions:
- Stop the scheduler: sudo pkill -f "./main"
- Check system logs: dmesg | tail -50
- Adjust scheduling parameters or report the issue
Q: How to stop the scheduler?
A: You can stop the scheduler using the following methods:
# Method 1: Ctrl+C (if running in foreground)
^C
# Method 2: Send SIGTERM signal
sudo pkill -TERM -f "./main"
# Method 3: Send SIGINT signal
sudo pkill -INT -f "./main"
# Method 4: Force kill (not recommended)
sudo pkill -KILL -f "./main"
Performance Related Questions
Q: How to monitor scheduler performance?
A: You can use various tools to monitor scheduler performance:
-
System tools:
-
BPF tools:
-
Built-in scheduler monitoring:
Q: What advantages does the scheduler have compared to CFS?
A: Main advantages of Gthulhu scheduler:
Feature | CFS | Gthulhu |
---|---|---|
Latency Optimization | Basic | Specialized |
Task Classification | Unified processing | Automatic classification |
CPU Topology Awareness | Limited | Complete support |
Dynamic Adjustment | Static parameters | Real-time adjustment |
User-space Extension | Not supported | Fully supported |
Q: How to adjust scheduler parameters?
A: Currently supported adjustment methods:
-
Environment variables:
-
Compile-time parameters (modify
main.bpf.c
): -
Runtime API (planned):
Debugging Related Questions
Q: How to enable debug mode?
A: You can enable debugging through the following methods:
-
Environment variables:
-
BPF tracing:
-
System logs:
Q: What to do when encountering BPF verifier errors?
A: BPF verifier errors usually indicate program issues:
-
Check error messages:
-
Common issues:
- Unbounded loops: Ensure all loops have clear exit conditions
- Memory out of bounds: Check array accesses are within range
-
Pointer usage: Ensure pointers are NULL-checked before use
-
Verify BPF program:
Q: How to report issues?
A: If you encounter problems, please follow these steps:
-
Collect system information:
-
Collect error logs:
-
Submit GitHub Issue:
- Go to Gthulhu Issues
- Choose appropriate issue template
- Attach system information and error logs
- Describe reproduction steps
Development Related Questions
Q: How to participate in development?
A: Welcome to participate in development! Please refer to:
- View contributing guide: contributing.en.md
-
Understand code structure:
-
Set up development environment:
Q: How to add custom scheduling policies?
A: You can customize through the following methods:
-
Modify BPF program (
main.bpf.c
): -
Modify Go program (
main.go
): -
Use SCX GoLand Core API:
Compatibility Issues
Q: Which Linux distributions are supported?
A: Theoretically supports all distributions with the following conditions:
- Kernel version: 6.12+
- sched_ext support: Enabled
- Architecture: x86_64
Tested distributions: - Ubuntu 24.04+ - Fedora 39+ - Arch Linux (latest)
Planned support: - CentOS/RHEL 9+ - openSUSE Tumbleweed - Debian 13+
Q: Can it run in containers?
A: Yes, but requires special permissions:
# Docker execution
docker run --privileged=true --pid host --rm gthulhu:latest
# Podman execution
podman run --privileged --pid host --rm gthulhu:latest
# Kubernetes execution (requires special configuration)
# Please refer to examples/kubernetes/ directory
Q: Does it conflict with other schedulers?
A: Gthulhu will replace the system default scheduler, therefore:
- Cannot run simultaneously with other sched_ext schedulers
- Will not affect real-time scheduling classes (SCHED_FIFO, SCHED_RR)
- Will replace CFS scheduler functionality
Problem not resolved?
If your problem is not answered here, please:
- Check GitHub Issues
- Search existing problems and solutions
- If not found, please create a new issue