Share "get_all_host_states" with concurrent requests

Registered by Yingxin

The scheduler cache-refresh operation (i.e. the function "get_all_host_states")
is very expensive. It needs to build a complete set of host states every time
when called by concurrent requests, causing more than 98% overhead in scheduler
service. However, the concurrent processing of "get_all_host_states" are
not necessary because they will return (almost) the same results based on the
same database queries and host manager caches.

This blueprint proposes an optimization to let concurrent request reuse the
return value of "get_all_host_states", so the host manager only need to build
host states once for all the incoming cache-refresh operations during the
building. This optimization can provide the freshest host states as before,
while minimize the database overhead from scheduler service, and accelerate
concurrent cache-refresh operations. It enables filter scheduler to support
much more compute nodes and heavier schedule workload.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Yingxin
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/proposes,n,z

Addressed by: https://review.openstack.org/345874
    Share get_all_host_states with concurrent requests

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.