Skip to content

gtarawneh/pstack

Repository files navigation

POETS Simulation Stack (pstack)

PSIM Setup

Overview

pstack is a distributed POETS simulation stack based on Redis. It exposes the compute power of a hetrogeneous array of POETS back-end engines to multiple users in a POSIX-like environment.

Features:

  • Processes: application instances modeled after POSIX processes
  • Multi-user support: multiple users can run processes on a single pstack service simultaneously
  • Distributed execution: a single application can be distributed across several machines in arbitrary arrangements
  • Real-time Monitoring: live monitor of running processes and back-end engine resource utilisation
  • Heterogeneity: supports arbitrary back-end engines (e.g. different simulators or even actual hardware)
  • Job queues: processes are queued when back-end engines are unavailable or insufficient
  • Terminal: command line user interface with built-in Python interpreter
  • Debugging: supports debug breakpoints and manual inspection/injection of messages
  • Unit Testing: Down-to-earth unit testing framework supporting push-button testing over entire back-end infrastructure
  • Minimal dependencies: just pip and socat on a fresh Ubuntu installation.
  • Automated Deployment: parallel (multi-host) installation over SSH in 10 seconds using fabric.

Design Goals:

  • Focus on developing POETS-specific capabilities while leaving more common programming chores to existing specialized tools and technologies (Redis for distributed shared memory and socat for socket communication).
  • Decouple stack layers using TCP connections to permit reliable, performant and secure distributed operation using standard communication technologies (Ethernet, SSH tunnels etc.).
  • Leverage Python for productivity (multiprocessing, jinja) and C for performance (simulation)
  • Deliver the best performance and feature set while keeping the implementation as simple and maintainable as possible.

Documentation

Design Notes

User Guides

Developer Guides