ike-sa-manager: Improve scalability of half-open IKE_SA checking
authorTobias Brunner <tobias@strongswan.org>
Fri, 11 Apr 2014 14:23:39 +0000 (16:23 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 24 Apr 2014 15:54:14 +0000 (17:54 +0200)
commita68454bd68221490e5504969b5378a1e86f204de
treee83034599cc4e2c517eee273c93d24f2b345a9cd
parent0f603d425df132adcb60b9f25ac277b26e80c72a
ike-sa-manager: Improve scalability of half-open IKE_SA checking

This patch is based on one by Christoph Gouault.

Currently, to count the total number of half_open IKE_SAs,
get_half_open_count sums up the count of each segment in the SA hash
table (acquiring a lock for each segment).  This procedure does not scale
well when the number of segments increases, as the method is called for
each new negotiation.

Instead, lets maintain a global atomic counter.

This optimization allows the use of big values for charon.ikesa_table_size
and charon.ikesa_table_segments.
src/libcharon/sa/ike_sa_manager.c