Skip to content

A test suite for measuring IPC performance and tolerance to concurrency

License

Notifications You must be signed in to change notification settings

adamonduty/queueable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Queueable

Queueable is a library for measuring the tolerance of various communication APIs to concurrent messaging. Queueable aims to discover which backend communication libraries provide the best foundation to build highly concurrent programs.

Queueable consists of a base class interface that should be subclassed for each backend. The base class is designed to minimize developer effort while sharing as much code as possible between backends. For each test, Queueable performs this rough set of steps:

- before_fork() - initialize server resources
- fork()
    - for the server
    - after_fork() - setup server-specific resources
    - test_enqueue - enqueue 1,000,000 items in batches of 1000
    - cleanup() - signal clients to close

    - for each client
    - after_fork() - setup client-specific resources
    - test_dequeue() - dequeue 1,000,000 items in batches of 1000
    - cleanup() - close client-specific resources

This process is repeated up to the maximum number of threads and maximum message size.

Backends

Queueable currently supports the following backends:

  • TCP Sockets

  • Unix Domain Stream Sockets

  • Unix Domain Datagram Sockets

  • POSIX Message Queues

Default Parameters

Queueable uses several default parameters as defined in run_queueable.cpp. These are used to define tests. Queueable is designed to vary both message size and the number of threads up to a maximum. By default, these are message sizes up to 4096 bytes (where supported by the backend) and up to 32 threads.

Building

Queueable should be built with a simple make:

$ make

Running tests

make creates an executable named run_queueable. It can be invoked manually or using

$ make test

Upon finishing the tests, Queueable will output a single XML file in your local directory with the test results. It will list a curl command to upload the test results to queueable.herokuapp.com .

Upon submitting your results, you will be given a link to add more detailed information about your test results.

License

Queueable is released under the MIT license. See LICENSE.txt for details.

Author

Adam Lamar

About

A test suite for measuring IPC performance and tolerance to concurrency

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages