Opened 9 months ago

Closed 9 months ago

#5647 closed defect (fixed)

CalloutHandleStore is inefficient when server is flooded with DHCP packets in Load Balancing case

Reported by: marcin Owned by: marcin
Priority: high Milestone: Kea1.4-final
Component: dhcp Version: git
Keywords: Cc:
CVSS Scoring: Parent Tickets:
Sensitive: no Defect Severity: N/A
Sub-Project: DHCP Feature Depending on Ticket:
Estimated Difficulty: 0 Add Hours to Ticket: 0
Total Hours: 0 Internal?: no

Description

While testing HA for performance, it turned out that the implementation of the CallotuHandleStore is causing serious performance degradation as a result of constantly trying to remove unused callout handles. We should rather make sure that each packet removes its own callout handle when it goes out of scope.

Subtickets

Change History (5)

comment:1 Changed 9 months ago by marcin

  • Owner set to UnAssigned
  • Status changed from new to reviewing

I changed the philosophy of associating the packets with callout handles. The Pkt class now derives from the CalloutHandleAssociate object which creates and holds the CalloutHandle instance. When the packet is destroyed the associated CalloutHandle is destroyed too (assuming no one holds reference).

I am not sure that this requires any changelog. It is an internal change.

comment:2 Changed 9 months ago by tmark

  • Owner changed from UnAssigned to tmark

comment:3 Changed 9 months ago by tmark

Changes look good to me. Compiles and unit tests pass under Centos 7. What you have now is so much simpler it makes me wonder if I shouldn't have spotted this during one of the HA reviews.

Not hard to believe this makes a BIG difference performance.

Merge it!

I think you should consider a ChangeLog. Yes, it's internal but beta testers have commented on this area, so it is "visible".

comment:4 Changed 9 months ago by tmark

  • Owner changed from tmark to marcin

comment:5 Changed 9 months ago by marcin

  • Resolution set to fixed
  • Status changed from reviewing to closed

Merged with commit eea88d5c8f4d8efb6c5bfdfbf4e070a90069db5d

Note: See TracTickets for help on using tickets.