It's been a while since I announced a restart of sysbench development. Even though I failed to report my progress on sysbench 1.0 and even announce the release here in the blog (yes, I'm a pretty lousy blogger), there have been a lot of things going on behind the scenes.
First of all, sysbench 1.0 was released a couple of months ago with impressive performance and scalability improvements, some interesting new features, and recently added fully automated packaging, with automation powered by Travis CI and packpack, and packages being hosted by packagecloud.
On the performance and scalability side of things, most improvements were made possible by replacing plain, interpreted Lua with LuaJIT, removing and optimizing locks on critical code paths with help from the ConcurrencyKit library and refactoring Lua API provided by sysbench itself.
New feature highlights in sysbench 1.0 include:
- simplified command line syntax
- latency histograms
- extended SQL API
- error and report hooks
- custom and parallel commands in Lua scripts
But there are even more improvements and refactoring under the hood which do not (yet) manifest themselves as user-visible changes. My goal for sysbench 1.0 was to create a base for a universal benchmark framework, paving the way for new features like custom workloads, NoSQL support, benchmark automation, OS tuning and results aggregation/visualization/publishing implemented as dynamically installed modules on top of sysbench.
If that sounds interesting and you are going to Percona Live Santa Clara 2017 next week, I will be talking about all those points in a bit more detail in my talk titled “sysbench 1.0: teaching an old dog new tricks”. I'd like to hear about your experience with sysbench and will be happy to answer questions!