Skip to content

Using buffered channel in the aggregation process #267

@srikartati

Description

@srikartati

Is your feature request related to a problem? Please describe.
We have multiple senders in the collection process with goroutines for each client, and multiple receivers with workers in the aggregation process. With the current implementation using the unbuffered channel, senders will wait for the worker to finish the processing of the message to move forward. In addition, other workers are not being run in parallel.

sched trace will show the usage of logical cores and this will let us show the extent of parallelism.
In performance tests, we should check the above. Because of this, with UDP clients sending to the collector process, we may see record loss. Moreover, with TCP clients, we won't be getting good performance in terms of bandwidth between the client and server in the collection process.

The data needs to be looked but it is mostly the case according to the golang concepts
Till now we looked at memory aspects of the aggregation process in the usage with Antrea. CPU time needs to be looked at.

Describe the solution you'd like
Move to the buffered channel.

Additional context
Anything else which is relevant and may help us understand the issue.

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