Skip to content

Aniruddha-Deb/syszuka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Syszuka

Syszuka Logo

A racetrack for profiling your code

Intro

Syszuka is a minimal buildroot image (kernel + rootfs) that can be used to profile applications. The main motivation for using this is to increase determinism and eliminate system noise when profiling applications. Similar to Sushi Roll, but without having to write your own kernel

Features

  • Minimal (<30MB) kernel+rootfs (glibc, no systemd)
  • Small footprint enables booting remotely without reimaging disk and operating purely in memory
  • SSH tools (dropbear, gesftpserver, rsync) enabled for remote usage
  • perf enabled for easy profiling
  • taskset for core pinning
  • Kernel processor mitigations completely disabled for microarchitecture experiments
  • tsc_freq_khz1 module preconfigured to read TSC freq from /sys/devices/system/cpu/cpu0/tsc_freq_khz
  • libpfc1 module preconfigured for userspace access to performance counters from Intel PMU

Getting Started

git clone https://github.com/Aniruddha-Deb/syszuka.git && cd syszuka
git submodule update --init --recursive

This will pull in buildroot. To configure and build:

cd buildroot
make BR2_EXTERNAL=../syszuka defconfig DEFCONFIG=../syszuka/defconfig
make -j

The resulting kernel + rootfs will be located in buildroot/output/images/bzImage. As configured, the rootfs is baked into the kernel so you don't require a separate initrd when booting. This is viable because of how minimal the build is: the resulting bzImage is <30 MB.

Using the kernel

Booting with QEMU

To test boot the kernel, use qemu:

qemu-system-x86_64 \
  -enable-kvm -cpu host \
  -kernel buildroot/output/images/bzImage \
  -append "console=ttyS0,115200" \
  -nographic \
  -no-reboot

You should see the kernel boot and present you with a login prompt:

Welcome to Syszuka
syszuka login:

login with user root and password root

Booting on a real machine

Syszuka doesn't have an 'installer image', so you'll have to either pack a bootloader with it yourself (grub, u-boot etc), or boot it over PXE. The latter is much easier if you just want to profile on a machine without having to re-image it.

A boot.ipxe config file has been provided with optimal kernel cmdline parameters for profiling. There are enough resources online on setting up/chainloading iPXE, so I won't be covering them here. You'll need a DHCP/TFTP/HTTP server setup, or a utility that does all of those in one (see PyPXE, netbootd or pixiecore)

This setup was tested on a Dell Optiplex 9020 (Core i7 4770k), and it worked without any glitches. If the image doesn't work on your machine, report an issue and/or submit a patch :)


1 both their git repos are not tagged, so I use private forks with a tagged release. I'll try my best to keep the forks up to date, but from the looks of it both of these kernel modules are unmaintained as of Aug 2025.

About

Minimal Buildroot application profiling image

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors