Giter Site home page Giter Site logo

quicperf's Introduction

*** will fix build errors + update all libraries to current versions soon ***

quicperf

this project is meant to facilitate quic server performance research and to establish absolute benchmarks of performance amongst implementations.

building

 cd quicperf && cmake -S . -B build && cmake --build build

this will create a build folder in the project directory then download and compile all dependencies and finally compile and link the binaries (lsperf, picoperf, quicheperf, ngtcp2perf, tcpperf) and copy them into the project directory

running

first run a server instance, then run a client instance. the binaries follow the below pattern:

 ./binary mode (client or server) networking (iouring or syscall) serverIpAddress (any, loopback, or ipv6)

for example...

 ./picoperf server syscall loopback
 ./picoperf client syscall loopback

results

the client will print the results....

 root@clr-df9e289c0de04eb2a0cfc75803a0b93e~/quicperf # ./picoperf client syscall
 1.804000 seconds
 4.434590 Gb/s

 root@clr-df9e289c0de04eb2a0cfc75803a0b93e~/quicperf # ./picoperf client iouring
 2.012000 seconds
 3.976143 Gb/s

current limitations

  1. Linux only
  2. tcp+tls performance is 30% higher when letting boringssl manage the socket IO and BIOs than when doing so manually. suspect they might be avoiding copies.
  3. no GRO or GSO but will be added

quicperf's People

Contributors

huitema avatar tatsuhiro-t avatar victorstewart avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

quicperf's Issues

Question about the code

	void setCallbackData(struct io_uring_sqe *sqe, uint8_t op, void *data)
	{
		sqe->user_data = ((uint64_t)op << 48) | (uint64_t)data;
	}

Is it guaranteed being safe to do so?

add msquic

can add the result of different quic benchmark?

CMake Error in CMakeLists.txt

I was trying to build the repo by running:

cmake -S . -B build && cmake --build build

However, I got the following error messages:

-- Configuring done
CMake Error in CMakeLists.txt:
  Target "picoperf" requires the language dialect "CXX20" (with compiler
  extensions), but CMake does not know the compile flags to use to enable it.


CMake Error in CMakeLists.txt:
  Target "lsperf" requires the language dialect "CXX20" (with compiler
  extensions), but CMake does not know the compile flags to use to enable it.


CMake Error in CMakeLists.txt:
  Target "quicheperf" requires the language dialect "CXX20" (with compiler
  extensions), but CMake does not know the compile flags to use to enable it.


CMake Error in CMakeLists.txt:
  Target "ngtcp2perf" requires the language dialect "CXX20" (with compiler
  extensions), but CMake does not know the compile flags to use to enable it.


CMake Error in CMakeLists.txt:
  Target "tcpperf" requires the language dialect "CXX20" (with compiler
  extensions), but CMake does not know the compile flags to use to enable it.


-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

My ubuntu 18.04 machine is installed with gcc 9.4.0, g++ 9.4.0, and cmake 3.22.2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.