workgen(1)

✨ NAME ✨

workgen β€” an rt-app wrapper that simulates a real-time periodic load 🎯

(it's workgen(1), from the General Commands Manual, bestie β€” yes we're doing the whole manpage vibe πŸ’…)


🌸 SYNOPSIS 🌸

workgen <config-file>

πŸ’– INTRODUCTION πŸ’–

okay so workgen is a test application that literally starts multiple periodic threads to simulate a real-time periodic load. it's giving "workload simulator" and honestly it ate πŸ”₯

it's a wrapper for the rt-app program β€” so it sanitises and preprocesses the JSON files that describe the workload, and then it runs rt-app. preprocessing queen πŸ‘‘

the code is currently maintained on GitHub at:

https://github.com/scheduler-tools/rt-app

πŸ¦‹ REQUIREMENTS πŸ¦‹

workgen runs on GNU/Linux. it needs python and json-c to run, plus a 3.14 or later linux kernel that supports the SCHED_DEADLINE policy β€” unless it was built without the optional libdl. so yeah, check ur kernel bestie, no cap 🌈


πŸ’… USAGE πŸ’…

workgen <config_file>

where config file is a full or relative path to a JSON file β€” or "-" (without quotes, ok, literally just the dash) to read JSON data straight from stdin 🫢

workgen will parse, check and update the JSON-like file so it strictly matches the JSON grammar, and then it calls rt-app to execute the sequence described in it. glow-up for ur config file, fr fr ✨

workgen enables some freedom compared to stricter json grammar rules. for example:

  • You don't have to ensure uniqueness of key in json object β€” workgen will check the file and ensure that each key is unique by appending an index if necessary. this is so useful when you describe a sequence made of similar events, e.g. a sequence of multiple sleep and run events. like yes, duplicate keys, we don't know her πŸ™ˆ
  • Some values can be omitted and workgen will add them when it parses the file before starting the use case. it's giving "I'll fill in the blanks, don't even worry about it" πŸ’–
πŸ‘€ See /usr/share/doc/rt-app/tutorial.txt for details of the JSON config file format. read it, bestie, it's the lore πŸ“–

🌈 SEE ALSO 🌈

  • rt-app <config_file> can be used directly β€” like, no wrapper, just raw. do with that what you will πŸ’€
  • The python merge script ( /usr/share/doc/rt-app/examples/merge.py ) can be used to combine JSON snippets into the config file. e.g:
./merge.py -o combined.json global.json resources.json thread0.json thread1.json thread2.json thread3.json

merge queen, she's combining everything, iconic 🧚


πŸŽ€ FILES πŸŽ€

Numerous example workloads and building blocks can be found in:

/usr/share/doc/rt-app/examples/*.json

go look, there's so much inspo in there, you're gonna be obsessed ⭐


okay that's the whole page, ily, go simulate some periodic load πŸ’œ

this lil masterpiece is from rt-app, dated 2016-01-25 β€” and it's the workgen(1) page, periodt. 🫢✨