Skip to content

basheerFZ/timpani

 
 

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

📄 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
├── 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

Eclipse timpani provides Distributed real-time scheduling system with time-triggered execution capabilities.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C 91.3%
  • Rust 5.3%
  • C++ 2.5%
  • Shell 0.5%
  • CMake 0.3%
  • Python 0.1%