HomeFreeBSD

Speed up geom_stats_resync in the presence of many devices

Description

Speed up geom_stats_resync in the presence of many devices

The old code had a O(n) loop, where n is the size of /dev/devstat.
Multiply that by another O(n) loop in devstat_mmap for a total of
O(n^2).

This change adds DIOCGMEDIASIZE support to /dev/devstat so userland can
quickly determine the right amount of memory to map, eliminating the
O(n) loop in userland.

This change decreases the time to run "gstat -bI0.001" with 16,384 md
devices from 29.7s to 4.2s.

Also, fix a memory leak first reported as PR 203097.

Sponsored by: Axcient
Reviewed by: mav, imp
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D28968

Details

Provenance
asomersAuthored on Feb 27 2021, 3:59 PM
Reviewer
mav
Differential Revision
D28968: Speed up geom_stats_resync in the presence of many devices
Parents
rGafb1aa4e6df2: ix(4): Report RX errors as sum of all RX error counters
Branches
Unknown
Tags
Unknown