You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 558b7a5
Browse filesBrowse the repository at this point in the historyBrowse files
mem: HG_MALLOC - large tier: size-bucketed free lists instead of one first-fit walk
The large tier kept every free fragment on one unsorted list and walked
it first-fit under the arena lock. With a million records loaded the
lock histograms put that at 1.5 ms per large allocation on average
(max 1.7 ms, 11 stalls over a millisecond on one sweep) - after the
two-phase commit the single largest holder of the lock left.
Free fragments now live in buckets by floor(log2(size)) with a bitmap
of the non-empty buckets: a request scans only its own bucket and
otherwise takes the head of the first non-empty bucket above it, where
every fragment fits by construction. Chunks are doubly linked so an
emptied chunk unlinks in O(1) instead of a walk of the chunk list.
README 12.7: the receive-queue note now says plainly that the socket
queue is the only buffer (one recvfrom() per datagram, no internal
queue), that maxbuffer is what sizes it and net.core.rmem_max what
bounds it, and that both have to be raised together.
0 commit comments