GithubHelp home page GithubHelp logo

Comments (9)

avikivity avatar avikivity commented on May 28, 2024 1

To get valid performance measurements you have to simulate the workload your application is doing.

Seastar is oriented towards complex applications that require concurrent operations, and provides good support for that. For example. a ScyllaDB query is converted to two or more RPC requests to local and remote nodes, which in turn can be converted to several parallel reads from disk files.

For simple recv-transform-send, Seastar will be less efficient than libuv style callbacks.

from seastar.

avikivity avatar avikivity commented on May 28, 2024

No one (I expect) will be able to invest the hours needed to even understand what your are measuring, let alone figure out the answer.

You have to distill the question to something more familiar to others and simpler to understand.

from seastar.

volodyaleo avatar volodyaleo commented on May 28, 2024

I attached the "http2 emulation" code.

The test tcp_10k_batch_1 performs only 1 request each time:

  • Request
  • Response (always wait response before next request)
  • Request
  • Response

The test tcp_10k_batch_10 performs 10 parallel requests:

  • Request
  • Request
  • Request
  • Request
  • Response
  • Response
  • Response
  • Response
  • Request
  • Response
  • ... 10 parallel requests ...

The test log shows an abnormal result (it is faster to wait for a response before sending the next request than to send each request without waiting):

rpc_bench.tcp_10k_batch_1                      75000    14.005us    59.653ns    13.523us    14.065us      17.003       9.018         0.0
rpc_bench.tcp_10k_batch_10                     65000    16.501us   125.496ns    16.344us    16.714us       7.932       3.185         0.0

from seastar.

volodyaleo avatar volodyaleo commented on May 28, 2024

I tried to get the "time to perform request" using the seastar performance testing framework.

from seastar.

avikivity avatar avikivity commented on May 28, 2024

I'm not going to read and understand the "http2 emulation" code. You'll have to narrow it down to something simple.

from seastar.

volodyaleo avatar volodyaleo commented on May 28, 2024

It turns out that working in a synchronous way (send-wait-receive in loop) via single connection is faster than working asynchronously (multiple sends and co-awaits) via multiple independent connections.

from seastar.

avikivity avatar avikivity commented on May 28, 2024

That's not unexpected if the round-trip latency is very low.

from seastar.

volodyaleo avatar volodyaleo commented on May 28, 2024

Thanks, I got it. If the round-trip latency is very low, the efencity may drop down (depends on task ordering).

So, to get valid performance measurements I need to take a look only on "send-wait-receive" loop.

Is it correct?

from seastar.

volodyaleo avatar volodyaleo commented on May 28, 2024

Thanks

from seastar.

Related Issues (20)

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.