Skip to content

Make use of FlushConsolidationHandler to optimize the performance of classic transport. #645

@He-Pin

Description

@He-Pin

The migration from Netty 3 to Netty 4 will need to change the channel.write to channel.writeAndFlush ,but that can be optimized in a more performant way.

#643
asked: netty/netty#13608

Add FlushConsolidationHandler which consolidates flush operations as …
…these are expensive

Motivation:

Calling flush() and writeAndFlush(...) are expensive operations in the sense as both will produce a write(...) or writev(...) system call if there are any pending writes in the ChannelOutboundBuffer. Often we can consolidate multiple flush operations into one if currently a read loop is active for a Channel, as we can just flush when channelReadComplete is triggered. Consolidating flushes can give a huge performance win depending on how often is flush is called. The only "downside" may be a bit higher latency in the case of where only one flush is triggered by the user.

Modifications:

Add a FlushConsolidationHandler which will consolidate flushes and so improve the throughput.

Result:

Better performance (throughput). This is especially true for protocols that use some sort of PIPELINING.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions