Skip to content

Batch sending messages from EndpointDriver to connection tasks #288

@rklaehn

Description

@rklaehn

There is a significant performance difference between running the bulk bench with a current thread runtime and a multithreaded runtime.

Current thread runtime is faster despite all work (en/decryption, waiting on syscalls) happening on the same thread. This points to either the communication via channels or moving memory from one core to another being a bottleneck.

To try this out, use #280

We are very far from a speed where moving memory between cores can be a bottleneck, so what remains is the channel overhead.

We can reduce the channel overhead by batching. E.g. currently if we get a bunch of messages from recvmsg_x on mac fast or recvmsg with GRO on linux, we send them to the channels one by one.

I implemented this on mac, but you don't see a big difference.

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceThings that might improve performance both for iroh and as a normal QUIC library.

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions