Easily Deploy Speedus Accelerated Applications with Docker

Torusware Speedus has already the Docker ready seal! Speedus is a high-performance Linux socket library (available for free at http://www.torusware.com) which significantly accelerates socket-based data transfers in a non-intrusive way, your applications do not require to be rewritten to be accelerated!

Although the deployment of Speedus is quite straightforward, just copying the library in the server and set a variable, from now on we also provide docker images to make software management and distribution easier. Right now we have many available images, among them Speedus Ubuntu and Speedus Redis.

Of course, you can always prepare your own images with Speedus! We are just providing these two images for your convenience, they are the latest Ubuntu and Redis official images with just Speedus on board!

Just pull the images to start enjoying the Speedus Acceleration experience!

Let’s try an example of Speedus acceleration experience, let’s use Speedus Redis docker image:

High Performance Speedus Redis Docker

1) Run a container with our Speedus Redis image:
docker run --name speedus-redis -d torusware/speedus-redis
As the original Redis image, this image exposes port 6379, so standard container linking will make it automatically available to the linked containers.
2) Benchmarking using redis-benchmark, first with the baseline scenario, Redis using standard TCP-based sockets, default option, and then running with Speedus.
This can be done launching a linked container that executes the built-in redis-benchmark (we will run only get and set tests for simplicity). Since we expect maximum performance, the client container shares the server container network stack:
docker run -it --net=container:speedus-redis --rm torusware/speedus-redis sh -c 'exec redis-benchmark -t get,set'
3) Then, time to try Speedus, just type speedus before redis-benchmark command:
docker run -it --net=container:speedus-redis --rm torusware/speedus-redis sh -c 'exec speedus redis-benchmark -t get,set'
As you can see, is really easy and non-intrusive!

BTW, below you have the Speedus results on an Intel Core i7-4702MQ CPU@2.20GHz (4C, 8HT), where you can notice a couple of interesting facts:

  • Speedus reduces significantly the peak times (worst case scenario), from almost 1 second to below 1 millisecond.
  • Speedus multiplies the performance by 2.5X for SET (from 46k TPS to 113k TPS) and multiplies by 3X for GET (from 39k TPS to 121k TPS).

Try Speedus in your applications and let us know at info@torusware.com!

Have a happy acceleration!

Baseline results with Redis official image: 

 

SET: 0.00
SET: 0.00
SET: 0.00
SET: 15393.62
SET: 26415.17
SET: 33538.34
SET: 38531.96
SET: 41995.43
SET: 44496.50
====== SET ======
  100000 requests completed in 2.18 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

97.42% <= 1 milliseconds
99.85% <= 2 milliseconds
99.90% <= 3 milliseconds
99.91% <= 4 milliseconds
99.93% <= 5 milliseconds
99.95% <= 568 milliseconds
100.00% <= 568 milliseconds
45829.52 requests per second

GET: 0.00
GET: 0.00
GET: 0.00
GET: 0.00
GET: 4214.35
GET: 15283.42
GET: 22760.10
GET: 28260.92
GET: 32250.12
GET: 35577.30
GET: 38343.49
====== GET ======
  100000 requests completed in 2.59 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

98.25% <= 1 milliseconds
99.94% <= 2 milliseconds
99.95% <= 986 milliseconds
100.00% <= 986 milliseconds
38624.95 requests per second

 

Speedus Redis performance results:


# Using Speedus (Lite b20150305)

SET: -nan
SET: 112156.00
SET: 111490.00
SET: 112410.66
====== SET ======
  100000 requests completed in 0.88 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.74% <= 1 milliseconds
100.00% <= 1 milliseconds
113122.17 requests per second

GET: 114820.00
GET: 119765.72
GET: 120448.33
====== GET ======
  100000 requests completed in 0.83 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.97% <= 1 milliseconds
100.00% <= 1 milliseconds
120772.95 requests per second