Roadmap - myaut/tsload GitHub Wiki

vPerfGenerator 0.1

Proof-of-concept release that implements very basic functionality of vPerfGenerator

Features:

  • JSON-TS protocol client for agent and server (readiness about 95 %)
  • Basic functionality for agents: logging, threads, hashmap's and queues (readiness about 80 %)
  • TS loader daemon (readiness about 70 %, run-tsload moved to next release)
  • Workload processing: modules, parameters, processing multiple workloads (readiness about 60 %)
  • Scala-based web-interface/server (dead)

TSLoad 0.2

Standalone agent (tsexperiment) release.

Agent features:

  • [DONE] Cross-platform agent: porting agent to Windows and Solaris
  • [DONE] Refactoring: split JSON-specific, agent-specific and generic code
  • [DONE] Threadpools API
    • [DONE] Worker CPU binding
    • [DONE] Worker scheduler policy/priority
    • [DONE] Overload policy (discard or queue requests)
    • [DONE] Worker dispatchers
    • [DONE] Benchmark mode
  • [DONE] standalone runner (without server) - TSExperiment
  • [DONE] Time source with nanosecond resolution
  • [DONE] Autoconf-like configurable build
  • [PARTIAL] HostInfo
    • [DONE] uname
    • [PARTIAL] SysConfig (i.e. page sizes)
    • [BUGS] CPU/Memory topology
      • Memory topology incomplete for some platforms
    • [PARTIAL] Disk information
      • Not all information provided, volume managers support needed
    • [PARTIAL] Network interfaces
    • [PARTIAL] Filesystems
  • [DONE] Workload parameter meta-types
  • [DONE] Testing
    • [DONE] libtscommon unit tests
    • [DONE] libtsload unit tests
    • [DONE] Integrational tests (i.e. fuzzy experiment configs)
  • [PARTIAL] Libraries API documentation
    • [DONE] libtscommon documentation
    • [NOTIMPL] libtsfile documentation
    • [DONE] libhostinfo documentation
    • [DONE] libtsload documentation
    • [PARTIAL] Writing common documentation (such as building instructions, code guidelines, etc.)
    • [DONE] Documentation generator tool
    • [DONE] Indexer tool
  • [DONE] Integration with OS tracing facilities: ETW, DTrace and SystemTap
    • [DONE] Basic support for probes (events) and providers
  • [DONE] Random generators
    • [DONE] libc-based generator
    • [DONE] OS/lib-independent generators
    • [DONE] os-dependent generators (i. e. /dev/*random)
  • [DONE] Random variators API
    • [DONE] Uniform/Exponential distribution
    • [DONE] Erlang distribution
    • [DONE] Normal distribution
  • [DONE] Request schedulers
    • [DONE] Common API and simple scheduler
    • [DONE] Inter-arrival time request scheduler
    • [DONE] Think time based request scheduler
  • [DONE] Workload chaining
  • [DONE] Per-request params
    • [DONE] Random-generated param values
    • [DONE] Trace-driven loader
  • [DONE] TimeSeries file format
    • [DONE] libtsfile library
    • [DONE] TSF utility
    • [DONE] run-tsload integration
  • [PARTIAL] Modules
  • [PARTIAL] Port 'bigmem' from tsload-mbench
  • [DONE] Simple I/O module for disks
  • [DONE] Port 'http' from tsload-mbench
  • [DONE] Tunables API
  • [DONE] New, lightweight implementation for libjson
  • [NOTIMPL] TSLoad bundling
    • [NOTIMPL] IPS (Solaris 11)
    • [NOTIMPL] SVRv4 PKG (Solaris 10)
    • [NOTIMPL] RPM (RHEL6,7)
    • [DONE] DEB (Ubuntu Server)
    • [NOTIMPL] MSI (Windows)

TSLoad 0.2.x

Fix/stable release for TSLoad 0.2

TSLoad 0.3

Monitoring capabilities

  • [PARTIAL] TSExperiment
    • [NOTIMPL] Capabilities of creation experiments from CLI
    • [NOTIMPL] Config 'diff'
    • [NOTIMPL] customizable front-ends
      • [NOTIMPL] ncurses frontend on POSIX
  • [PARTIAL] More types of modules: randgen & monitor modules
  • [BUGS] Large memory pool instead of libc's heap to eliminate ENOMEM for memory-intensive workloads
    • Feature is still EXPERIMENTAL
  • [NOTIMPL] HostInfo: MT-safe HiObject with list snapshots
  • [NOTIMPL] Per-request monitors
    • [NOTIMPL] APIs for CPU counters access from benchmark module (monitor)
      • perf on Linux
      • cpc on Solaris
  • [NOTIMPL] Global system monitors
  • [NOTIMPL] ETrace: type translators/tapsets
  • [NOTIMPL] TSFile v2 with indexes and dynamic strings
  • [NOTIMPL] Block I/O tracer as helper to SimpleIO

Channel & Loaders infrastructure

Replace threadpools with channels & loaders hierarchy (modular)

  • [NOTIMPL] Process/threadpool loaders
    • [NOTIMPL] Local threadpool loader
    • [NOTIMPL] Process loader
    • [NOTIMPL] Hybrid loader
    • [NOTIMPL] Support for scheduler changing
  • [NOTIMPL] Channels
    • [NOTIMPL] Local memory channel
    • [NOTIMPL] Unix socket channel (POSIX)
    • [NOTIMPL] Named pipe channel
    • [NOTIMPL] TCP/IP channel
  • [NOTIMPL] Scheduler & balancers

TSLoad 0.4

Client/server capabilities

Agent features

  • [PARTIAL] tsloadd agent/API
    • Currently out-of sync with core
  • [NOTIMPL] Service integration
    • [NOTIMPL] daemonize() on UNIX platforms that does fork()
    • [NOTIMPL] implementation as Windows Service
    • [NOTIMPL] SMF files (Solaris)
    • [NOTIMPL] systemd unit (Linux)
    • [NOTIMPL] sysVinit files (Linux)

Server features:

  • [DONE] Server message routing via Twisted
  • [PARTIAL] User authorization and management
    • Needs user management interface for administrator
    • Roles
  • [DONE] Web/CLI interface basics
  • [PARTIAL] Experiment service
  • [STARTED] TimeSeries DB - file-based store that is optimized for sequental nature of time series: uses pickle() of tuples
    • [DONE] Implemented libtsfile
  • [NOTIMPL] Experiment resource manager and scheduler. Allows to allocate agent resource, and they are busy, put experiment on queue
  • [PARTIAL] Experiment creation interface in CLI/GUI
    • Can create experiment in CLI, but only view it in GUI

TSLoad 0.5 - 1.0

Features:

  • Loader/monitor modules for cpu, mem, i/o
  • More platforms to support (First of all - BSD)