Comments (9)
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.
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.
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.
I tried to get the "time to perform request" using the seastar performance testing framework.
from seastar.
I'm not going to read and understand the "http2 emulation" code. You'll have to narrow it down to something simple.
from seastar.
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.
That's not unexpected if the round-trip latency is very low.
from seastar.
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.
Thanks
from seastar.
Related Issues (20)
- Abandoned generator leaks memory HOT 1
- metrics: trying to add summaries is unsafe HOT 1
- cgroups v1 isn't supported HOT 8
- use undeprecated functions in c-ares HOT 2
- Cross-shard realloc shrink crashes
- Additional data when segfaulting
- Dynamic metric aggregation
- create_scheduling_group / scheduling_group_key_create not exception safe when SG key data constructor throws
- add a unit test for json2code
- create_scheduling_group / scheduling_group_key_create are not safe to run in parallel HOT 1
- add test for prometheus (aggregation)
- [project unrelated] Question about solving __common_cmp_cat duplicate definition problem HOT 1
- High lowres clock drift > 1s in debug mode HOT 4
- add an integration test with scylla
- the workflow of "Tests (clang++-18, C++23, release, --enable-dpdk) fails due to dpdk build failure HOT 3
- seastar allocator causes infinite recursive call if seastar is compiled as a shared library
- io_uring reactor backend not available when importing and using seastar as a module HOT 2
- circleci CI was removed but it's still being reported HOT 9
- should revert ba395a22e1951a1572be2a570092524d91996c67 once clang 18.1.6 is in f40
- Update the benchmark HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from seastar.