Well, this is interesting. I've turned the virNetworkObjList into
using a virHash. And even though the performance in my testing
(using the very same test program as in previous versions of the
patch set) increased. Without these patches, the test program
took 56s to finish. With these patches (that is with virHash
table) it takes 46s, which is better. But previously, with
network objects stored in flat array I was able to get somewhere
around 23s! I wonder what may be the cause.
NB, nearly all patches in the series have been ACKed already, but
since I'm switching the virNetworkObjList internals, I'm posting
them again.
Michal Privoznik (15):
virNetworkObjListPtr: Turn list into a hash table
network_conf: Make virNetworkObj actually virObject
network_conf: Introduce virNetworkObjEndAPI
bridge_driver: Use virNetworkObjEndAPI
test_driver: Use virNetworkObjEndAPI
parallels_network: Use virNetworkObjEndAPI
virNetworkObjList: Derive from virObjectLockableClass
network_conf: Introduce locked versions of lookup functions
virNetworkObjListPtr: Make APIs self-locking
virNetworkObjFindBy*: Return an reference to found object
struct _virNetworkDriverState: Annotate items
bridge_driver: Drop networkDriverLock() from everywhere
test_driver: Drop testDriverLock() from almost everywhere
parallels_network: Drop parallelsDriverLock() from everywhere.
bridge_driver: Use more of networkObjFromNetwork
cfg.mk | 2 -
src/conf/network_conf.c | 545 +++++++++++++++++++++++------------
src/conf/network_conf.h | 13 +-
src/libvirt_private.syms | 7 +-
src/network/bridge_driver.c | 197 +++----------
src/network/bridge_driver_platform.h | 5 +-
src/parallels/parallels_network.c | 62 +---
src/test/test_driver.c | 108 ++-----
tests/networkxml2conftest.c | 4 +-
tests/objectlocking.ml | 4 -
10 files changed, 441 insertions(+), 506 deletions(-)
--
2.0.5