Bug 1041251

Summary: [RFE][nova]: Combine tables associated with compute_nodes into it to remove DB join
Product: Red Hat OpenStack Reporter: RHOS Integration <rhos-integ>
Component: RFEsAssignee: RHOS Maint <rhos-maint>
Status: CLOSED UPSTREAM QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: markmc, yeylon
Target Milestone: ---Keywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: https://blueprints.launchpad.net/nova/+spec/db-compute-node-stats-remove
Whiteboard: upstream_milestone_none upstream_status_needs-code-review upstream_definition_superseded
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-19 17:06:27 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description RHOS Integration 2013-12-12 14:05:23 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/nova/+spec/db-compute-node-stats-remove.

Description:

Through the initial test with DB joins, it is found the performance to call compute_node_get_all() is bad.

When we have 10K compute nodes, and each compute node has 20 corresponding records in the table compute_node_stats, the time to read all the compute nodes from DB is about 16.89 seconds.

That significantly affects the scalability of compute node. The bp is try to combine compute_node_stats into compute_nodes, to improve the performance of the above function by removing "joinedload".

We also did some tests. When we have 10K compute nodes, and there doesn't exist compute_node_stats table but a JSON encoded python dictionary (with 20 <key, value> pairs for a dictionary), the time to read all the compute nodes from DB and decode the dictionary is about 1.32 seconds, which is huge difference!


Specification URL (additional information):

None