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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list