From 7a500ecc8799914e45ca8534a15f81b8823a1d3e Mon Sep 17 00:00:00 2001 From: Chris Behrens Date: Mon, 13 Aug 2012 07:33:15 +0000 Subject: Improve bw_usage_update() performance Fixes bug 1036084 bw_usage_update() most commonly updates rows vs creates rows. New rows are only created on the 1st bandwidth update for an instance or when the audit period rolls over. This cuts down DB queries to 1 for the 'update' case. Added bonus: Remove unused 'import inspect' in compute manager. Change-Id: Ie5f6c919676046d817b842138dc9d17d1115d3c0 --- nova/compute/manager.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'nova/compute') diff --git a/nova/compute/manager.py b/nova/compute/manager.py index f818e7685..6505e4827 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -36,7 +36,6 @@ terminating it. import contextlib import functools -import inspect import socket import sys import time @@ -2593,12 +2592,16 @@ class ComputeManager(manager.SchedulerDependentManager): # they just don't get the info in the usage events. return + refreshed = timeutils.utcnow() for usage in bw_usage: + # Allow switching of greenthreads between queries. + greenthread.sleep(0) self.db.bw_usage_update(context, usage['uuid'], usage['mac_address'], start_time, - usage['bw_in'], usage['bw_out']) + usage['bw_in'], usage['bw_out'], + last_refreshed=refreshed) @manager.periodic_task def _report_driver_status(self, context): -- cgit