HomeFreeBSD

The current IPMI KCS code is waiting 100us for all transitions (roughly

Description

The current IPMI KCS code is waiting 100us for all transitions (roughly
between each byte either sent or received). However, most transitions
actually complete in 2-3 microseconds.

By polling the status register with a delay of 4us with exponential
backoff, the performance of most IPMI operations is significantly
improved:

  • A BMC update on a Supermicro x9 or x11 motherboard goes from ~1 hour to ~6-8 minutes.
  • An ipmitool sensor list time improves by a factor of 4.

Testing showed no significant improvements on a modern server by using
a lower delay.

The changes should also generally reduce the total amount of CPU or
I/O bandwidth used for a given IPMI operation.

Submitted by: Loic Prylli <lprylli@netflix.com>
Reviewed by: jhb
MFC after: 2 weeks
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D20527

Details

Provenance
jtlAuthored on
Reviewer
jhb
Differential Revision
D20527: improve performance of ipmi kcs interface.
Parents
rS348995: Don't attempt to include hwpmc support for armv6, we're missing some of the
Branches
Unknown
Tags
Unknown