Skip to content

Repository files navigation

TIMPANI

Distributed real-time scheduling system with time-triggered execution capabilities. TIMPANI provides both C and Rust implementations of node executors and schedulers for deterministic real-time applications.

This repository contains both original C implementations and modern Rust ports with enhanced type safety and memory safety.

Architecture

  • TIMPANI-N (Node Executor): Executes time-triggered tasks on individual nodes
  • TIMPANI-O (Node Scheduler): Orchestrates and schedules tasks across distributed nodes
  • Sample Applications: Real-time test applications for system validation

Getting Started

Clone the Repository

git clone --recurse-submodules https://github.com/MCO-PICCOLO/TIMPANI.git
cd TIMPANI

Note: Use --recurse-submodules to automatically clone the required submodules (libbpf, etc.).

Refer to the individual component READMEs below for specific build and setup instructions.

Components

Real-time sample applications for real-time system analysis. Provides periodic execution, deadline monitoring, and runtime statistics collection capabilities.

Quick Build:

cd sample-apps
mkdir build && cd build
cmake ..
make

For detailed setup and usage → Full Documentation

C implementation of the time-triggered node executor component.

Quick Build:

cd timpani-n
mkdir build && cd build
cmake ..
make

For detailed setup, dependencies, and usage → Full Documentation

C implementation of the orchestrator component with gRPC & protobuf support for distributed scheduling.

Quick Build:

cd timpani-o
mkdir build && cd build
cmake ..
make

For detailed setup, protobuf configuration, and usage → Full Documentation

Rust ports of TIMPANI components with enhanced type safety and memory safety.

Rust implementation of the node executor with comprehensive CLI interface, configuration validation, and structured logging. Status: Configuration parsing complete, runtime features in development.

Quick Build:

cd timpani_rust/timpani-n
cargo build --release
cargo test  # Run tests

For detailed setup, usage examples, and current status → Full Documentation

Rust implementation of the global scheduler component. Status: In development.

Quick Build:

cd timpani_rust/timpani-o
cargo build --release
cargo test  # Run tests

For detailed setup and current development status → Full Documentation

� Prebuilt Release Artifacts (sdv_blueprint)

The sdv_blueprint/ folder contains ready-to-use, pre-built release artifacts for timpani-n and timpani-o, plus build.sh/install.sh to build and install both in one step.

  • timpani-n-2.0.0-Linux.deb / timpani-n-2.0.0-Linux.rpm — native Debian/Ubuntu and RPM-based package. Install directly with:

    sudo dpkg -i sdv_blueprint/timpani-n-2.0.0-Linux.deb   # Debian/Ubuntu
    sudo rpm -i sdv_blueprint/timpani-n-2.0.0-Linux.rpm    # CentOS/RHEL/Fedora

    This installs the timpani-n binary and registers/starts it as a systemd service (timpani-n.service) running as root, since it needs direct eBPF/scheduler access to the host kernel.

  • timpani-o-0.1.0.tar — a Podman/Docker container image archive. Load and run it with:

    podman load -i sdv_blueprint/timpani-o-0.1.0.tar
    podman run -d --name timpani-o -p 50052:50052 -p 7777:7777 timpani-o:0.1.0

For the full build/install/verify/uninstall workflow, expected command output, and known issues → sdv_blueprint/README.md

�📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

📖 Documentation Structure

TIMPANI/
├── README.md                    # This file - main project overview
├── sample-apps/
│   ├── README.md               # Sample applications documentation
├── sdv_blueprint/
│   ├── README.md               # Prebuilt release artifacts: build/install/verify guide
│   ├── timpani-n-2.0.0-Linux.deb  # Prebuilt timpani-n package
│   ├── timpani-o-0.1.0.tar     # Prebuilt timpani-o container image (alpine-based, ~29MB)
│   ├── build.sh                # Build both components from source
│   └── install.sh              # One-step install (timpani-n + timpani-o)
├── timpani-n/
│   ├── README.md               # C implementation: Node executor
│   ├── README.CentOS.md       # CentOS setup guide
│   └── README.Ubuntu20.md     # Ubuntu setup guide
├── timpani-o/
│   └── README.md               # C implementation: Node scheduler
└── timpani_rust/
    ├── README.md               # Rust components overview
    ├── timpani-n/
    │   └── README.md           # Rust node executor (config parsing complete)
    └── timpani-o/
        └── README.md           # Rust node scheduler (in development)

Navigation: Sample Apps | TIMPANI-N (C) | TIMPANI-O (C) | Rust Components | Rust TIMPANI-N

About

Time Triggered workload Scheduler

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages