

Ponos – A simple yet powerful load generator in Erlang - lelf
https://github.com/klarna/ponos

======
rdtsc
To continue with the languages pun, in Russian it means something like
"diarrhea", which, strangely also kind of makes sense, ... in a toilet humor
kind of disgusting way.

I think it is a good name.

To add though, this is a cool idea. I like it generates an internal-kind of
load. Not necessarily driven from external requests. So this combined with
tsung to test how the system behaves in various scenarios.

Operating under load is not something many people test. Search Erlang Factor
talks and you'll find many talks by Erlang experts on load monitoring, load
shedding and so on basically characterizing behaviour during overload
conditions.

------
jtmoulia
I'd love to use this to test my application, but after reading through the
docs, I'm not quite sure how to get the setup I'd like:

My application is a server which clients login and then issue commands to. As
I'm imagining it, a user load generator would be creating and logging in
users. But this is where I get fuzzy... should the user task also create a
load generator which issues commands against the application as that user?
Seems pretty simple, hopefully it's possible !

Excited to try this out.

~~~
jool
Where ponos is at currently its main purpose in the world is specialise in
generating simple or complex load patterns.

A load_generator in essence is just a process generating triggers at requested
frequency. Every trigger happens asynchronously so there is no way to thread
state between triggers.

If there is enough interest I'd be happy to extend it to handle synchronous
load generators where threading state makes sense. With that use case though,
it'd be impossible to guarantee that the actual load matches the load_spec in
all circumstances.

If you wish to keep state between triggers you have to implement this outside
of ponos at this stage.

~~~
odo
I am also interested in load testing stateful sessions e.g. log in, wait, do
stuff, wait, log out. Using ponos this could be done by spawning a
(gen_server-) process in the task which runs the session and then terminates.
In this scenario the load function would model the arrival rate of the users.

~~~
jool
Sure thing. I guess you could even spawn a task that generates new
load_generators. In that scenario I guess it could be useful to have the
possibility to configure a load generator that terminates after the
call_counter reaches a threshold.

------
danatkinson
I think it's probably from Greek mythology. Ponos was the God of hard labour -
[https://en.wikipedia.org/wiki/Ponos](https://en.wikipedia.org/wiki/Ponos)

~~~
danatkinson
Actually, it is. It's in the readme on the first line! :)

------
ivanche
Just a comment on name - in Serbian "ponos" means "pride". So I guess author
should be proud of his work :)

~~~
kovrik
And in Russian "ponos" means "diarrhea" :(

~~~
jool
Something the author (me) is aware of. See the Notes section of the README
([https://github.com/klarna/ponos#ref1](https://github.com/klarna/ponos#ref1)).

The original name is based on the Greek god of hard labor and toil
([http://en.wikipedia.org/wiki/Ponos](http://en.wikipedia.org/wiki/Ponos)).

------
valanto
Ponos in grid besides being the god of Hard Labour also means pain itself in
modern greek

------
LLWM
Put your.. that! Y.. your load generator! To my.. my... HERE! My application!
And j.. j.. JAM IT IN!

