Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PATCH v1] Optimize plain queues by using mpmc ring instead of lock #683

Closed

Conversation

psavol
Copy link
Collaborator

@psavol psavol commented Aug 24, 2018

Performance improves (measured with queue_perf test) especially when there's contention on queue operations and especially on ARM.

Petri Savolainen added 4 commits August 24, 2018 16:36
The ring is similar to ring_internal.h, but checks for ring
fullness. This ring can be used for storing events in a queue
as enqueues can be tried on an already full queue.

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
Change plain queue implementation to use ring_mpmc instead
of ticket lock and ring_st ring. Performance and scalability
improves especially on 64 bit ARM.

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
Store mask and data pointer in queue entry instead of ring
structure. Data is constant and can be stored among other
frequently used read only data. Also other ring type use
the same variables.

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
Store mask and data pointer in queue entry instead of ring
structure. Data is constant and can be stored among other
frequently used read only data. Also other ring type use
the same variables.

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
@muvarov muvarov changed the title Optimize plain queues by using mpmc ring instead of lock [PATCH v1] Optimize plain queues by using mpmc ring instead of lock Aug 24, 2018
@muvarov
Copy link
Contributor

muvarov commented Aug 27, 2018

Reviewed. Merged.

@muvarov muvarov closed this Aug 27, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants