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] APIs for CPU counters access from benchmark module (monitor)
- [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)