odp
odp copied to clipboard
[PATCH v9] Avoid possible deadloop in llq dequeue
The cpu_pause while loop is added to handle the case that the dequeue happens when an enqueue is in progress and the llq->u.ui.head is being updated.
In some corner case, however, if the old.st.head is dequeued from llq and then enqueued into another queue before the while loop starts, then the dequeue can get stuck in the while loop until the queue is scheduled again.
Add a threshold of spin count, so we will re-check the llq head once max spin count is reached.
Fixed checking failures by CI.
As a side node, have you tried using the default scheduler implementation recently? It should perform better in most use cases and the code is better maintained.
@JannePeltonen do you have more comments? if not, can we get this merged?
As a side node, have you tried using the default scheduler implementation recently? It should perform better in most use cases and the code is better maintained.
By default, you mean the basic scheduler? We moved from basic to scalable at some point because the scalable scheduler gave us some performance improvement. We haven't upgraded our odp for a while. So maybe we should take a look next time we upgrade.
This is otherwise ready, but needs review-by tags. Please, rebase and add review tags of Matias and Janne.
This is otherwise ready, but needs review-by tags. Please, rebase and add review tags of Matias and Janne.
Tags update and rebase are done. Anything else?