Multi-process API Services

Registered by Huang Zhiteng

Currently Nova API services only spawn green threads to handle different requests (OSAPI-Compute, OSAPI-Volume, OSAPI-metadata, EC2). All green threads are actually being scheduled within one system process, which results in only one processor core can be utilized. As API requests concurrency increase, the throughput doesn't increase because requests pile-up and the response time of each request goes-up very quickly. For example, for OSAPI-Compute, we have data showing current implementation can handle <10 operation/sec no matter how many current users are sending requests. We'd propose configurable multi-process (workers) API services to tackle this issue. Simliar implementation has been added to Swift and Glance. Our internal testing of multi-process model is promising: the throughput of API services has linear gain when # of process increases.

Implementation: https://review.openstack.org/#change,5762

Blueprint information

Status:
Complete
Approver:
Vish Ishaya
Priority:
Medium
Drafter:
Huang Zhiteng
Direction:
Approved
Assignee:
Huang Zhiteng
Definition:
Approved
Series goal:
Accepted for folsom
Implementation:
Implemented
Milestone target:
milestone icon 2012.2
Started by
Thierry Carrez
Completed by
Huang Zhiteng

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/multi-process-api-service,n,z

Addressed by: https://review.openstack.org/5762
    blueprint multi-process-api-service

Looks like the review expired. Please resubmit it so we can continue the process.

Zhiteng: Already re-submit patches for review.

Gerrit topic: https://review.openstack.org/#q,topic:bug/817107,n,z

Gerrit topic: https://review.openstack.org/#q,topic:bug/982360,n,z

Gerrit topic: https://review.openstack.org/#q,topic:bug/999206,n,z

Addressed by: https://review.openstack.org/9033
    Add multi-process support for API services

QA:
----
Internel - improved multiprocessing with green threads
Functional Test impact - None
Let QA know if it otherwise.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.