aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/unity/unity_provider.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2013-07-11 11:44:33 +0200
committerMartin Willi <martin@revosec.ch>2013-07-17 17:20:17 +0200
commit2621ff4d40969d84ecc303b0ef6d369e773b7881 (patch)
tree11f4a3554b7f7ac6c1a2a5e3e41ffaa808801d05 /src/libcharon/plugins/unity/unity_provider.c
parentf067348134109b1896c39724fc8cd8cba0fe60f8 (diff)
downloadstrongswan-2621ff4d40969d84ecc303b0ef6d369e773b7881.tar.bz2
strongswan-2621ff4d40969d84ecc303b0ef6d369e773b7881.tar.xz
array: introduce an array collection storing elements very efficiently
Currently we use the very versatile linked-list collection to store elements with variable count. This is fine, but very inefficient: Due to the many methods in the linked list, on 64-bit platforms an empty list alone is more than 200 bytes. As we currently have about 50 lists per IKE_SA/CHILD_SA pair, this takes up to 10KB just for managing the empty lists. This is about the half of memory used by an IKE_SA/CHILD_SA pair, and obviously way too much. The new array type is not an object, but a collection of functions on an abstract type. The following lists are per IKE_SA and should be considered for a replacement with more efficient arrays (this uses load-testers on-demand created dynamic configurations, other scenarios have different lists): 14 -> ike_sa_create() @ src/libcharon/sa/ike_sa.c:2198 10 -> auth_cfg_create() @ src/libstrongswan/credentials/auth_cfg.c:1088 6 -> task_manager_v2_create() @ src/libcharon/sa/ikev2/task_manager_v2.c:1505 6 -> proposal_create() @ src/libcharon/config/proposal.c:592 5 -> peer_cfg_create() @ src/libcharon/config/peer_cfg.c:657 4 -> child_sa_create() @ src/libcharon/sa/child_sa.c:1090 2 -> child_cfg_create() @ src/libcharon/config/child_cfg.c:536 1 -> ike_cfg_create() @ src/libcharon/config/ike_cfg.c:330 1 -> put_connected_peers() @ src/libcharon/sa/ike_sa_manager.c:854
Diffstat (limited to 'src/libcharon/plugins/unity/unity_provider.c')
0 files changed, 0 insertions, 0 deletions