mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-16 08:24:42 +00:00
d46ed5c26b
update_freq_ctr_period() was still not very clean and didn't wait for the rotation lock to be dropped before trying again, thus maintaining the contention at a high level. In addition, the rotation update was made in three steps, which are not very efficient in terms of bus cycles. Here the wait loop was reworked so that the fast path remains short and that the contended path waits for the lock to be dropped before attempting another write, but it only waits a relax cycle before attempting a read. The rotation block was simplified to remove a test that was already validated by the first loop, and so that the retrieval of the current period, its reset and its increment are all performed in a single atomic op and the store to the previous period is performed immediately after. All this results in significantly smaller code for the inline function (~1kB total) and a shorter critical path. |
||
---|---|---|
.. | ||
haproxy | ||
import |