cetic / unikernels

Unikernel and immutable infrastructures
582 stars 47 forks source link

IncludeOS: UDP Performance Issues #3

Closed GaetanLongree closed 6 years ago

GaetanLongree commented 6 years ago

While testing the UDP performance of unikernels by developing a very (probably extremely) simplistic DNS server using the UDP sockets in IncludeOS (code for the DNS server here).

Due to my command line only environment, I used DNSPerf as a benchmarking tool to perform queries from a benchmarking server (100 simulated clients over 4 threads) to another server hosting the service. The tests were performed over 5-minute periods, starting at 100 queries per second then increasing until service failure.

My results, partially posted here with full data here showed that the service refused to process queries at a higher throughput than approximately 850 queries per second.

I doubt the issue is related to the code, as the same code used with containers and tested in the same manner proved capable of processing higher throughput (results of my benchmark here).

This benchmark should be reproducible, as I've written scripts to both deploy the unikernel and launch the benchmark, which is available on the project's repository. Do note that I performed my tests on Ubuntu 16.04 using KVM/QEMU (as should be documented on the project repo).

perbu commented 6 years ago

We're sure the issue is in the code. :-) We pushed 150000 TPS by simply disabling the debugging output of the service. Further performance gains could be made easily but then we're talking about adding compiler flags and such.

This issue is tracked here: HiOA-CS/IncludeOS/issues/1772