OpenStack services excessively poll socket events when oslo.messaging is used
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Mirantis OpenStack | Status tracked in 10.0.x | |||||
10.0.x |
Fix Committed
|
Medium
|
MOS Oslo | |||
5.1.x |
Won't Fix
|
Medium
|
MOS Oslo | |||
6.0.x |
Won't Fix
|
Medium
|
MOS Oslo | |||
6.1.x |
Won't Fix
|
Medium
|
MOS Oslo | |||
8.0.x |
Won't Fix
|
Medium
|
MOS Oslo | |||
9.x |
Fix Released
|
Medium
|
MOS Oslo |
Bug Description
On a newly deployed cluster, after creating some load (e.g. running Rally scenarios), top shows that many of OpenStack services start to consume CPU time when they are *idle* (no user activity): http://
This is caused by the fact those services are excessively polling open sockets (http://
Further investigation shown that services, which didn't use oslo.messaging, weren't affected.
It turns out, that CPython 2.6/2.7 implementation of condition variables plays badly with eventlet event loop. oslo.messaging has a place in the code (https:/
FWIW, PyPy and CPython 3.2+ shouldn't have this bug, but their compatibility with eventlet is an open question.
There must be at least two ways to fix this:
1) backport changes to thread.c and threading.py from CPython 3.2 to CPython 2.6/2.7, build and use custom packages
2) add a workaround to oslo.messaging (don't use a conditional variable in that particular place)
The former might affect CPython stability and should be throughly tested, so the latter seems to be a 'good enough' work around for now.
Changed in mos: | |
milestone: | none → 6.0 |
tags: | added: scale |
Changed in mos: | |
milestone: | 6.0 → 6.0.1 |
Changed in mos: | |
status: | Triaged → Won't Fix |
Changed in mos: | |
milestone: | 6.0.1 → 6.1 |
status: | Won't Fix → Triaged |
Changed in mos: | |
assignee: | MOS Oslo (mos-oslo) → MOS QA Team (mos-qa) |
Changed in mos: | |
milestone: | 7.0 → 8.0 |
tags: | added: area-qa |
tags: | added: move-to-mu |
tags: | added: 10.0-reviewed |
Test snippet to demonstrate the issue with eventlet/CPython CVs implementation: http:// xsnippet. org/360230/ raw/