Home > hh-load

hh-load

Hh-load is a project mainly written in Common Lisp, it's free.

Basic load generation library for Common Lisp (SBCL-specific for now)

HH-Load

Very basic load generator for CL projects. Makes use of Eager Futures for suitable multi-threading of load creation, and depends upon Drakma for HTTP For now, only works on SBCL, but only because it depends upon a specific SBCL condition when handling socket connection failures.

Basically, 2 major functions for now:

  • generate-load : Supply any callable function (with optional amount of concurrency and max number of iterations), and generate-load will make sure the function is called the specified number of iterations spread across a concurrent number of invocations. So, for example, if concurrency is 5 and iterations is 20, then hh-load will advise the Eager Futures runtime to use 5 threads, then queue up 20 different futures--resulting most likely in each of the 5 threads handling 4 iterations each.

  • generate-http-load : Instead of passing a function, pass an URL as a string, and generate-http-load will generate HTTP GET requests against the URL. The same concurrency and iteration parameters as for generate-load are valid here as well. Note that if an interrupt occurs during socket connection, then the socket connection will be attempted again (based on handling an SBCL-specific condition, SB-BSD-SOCKETS:INTERUPPTED-ERROR).

Upon completion, both functions print out information to error-output (e.g., stderr), like this:

 Elapsed time: 1.275
 Completed: 100 iterations
 Iterations per second: 78.431/second
 Errors: 6 (6.000%)
 Longest: 1.028 seconds
 Average: 0.171 seconds
 Fastest: 0.008 seconds

Both functions will also print out a consolidated list of any errors encounters during the run, based on the message reported for each such error, including the number of times the error was encountered (e.g., "3 times 'Condition USOCKET:CONNECTION-RESET-ERROR was signalled.'").

These functions return multiple values, which presently include:

  • elapsed-time : total elapsed time in seconds for complete run
  • completed-iterations : total number of iterations performed (nearly always the same as passed in)
  • iterations-per-second : completed iterations divided by elapsed time
  • total-errors : total number of errors encountered during the run (an error usually terminates an iteration)
  • error-rate : total errors divided by completed iterations
  • max-iteration-duration : longest iteration encountered, in seconds
  • average-duration : average duration across all iterations, in seconds
  • min-iteration-duration : fastest iteration encountered, in seconds

All original code in this package licensed under the MIT license.

Contact [email protected] for any questions, comments, feedback, or contributions, and keep an eye on http://haphazardhouse.net/projects/hh-load for info and news about hh-load.

Previous:SermeDent