scalability problem of router routes update
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
High
|
Itsuro Oda |
Bug Description
Updating router routes takes long time when increasing a number of routes.
The critical problem is that it is CPU bound task of neutron-server and neutron-server can not reply for other request.
I show below a measurement example of neutron-server's CPU usage.
Setting routes to a router. (0 to N)
100 routes: 1 sec
1000 routes: 5 sec
10000 routes: 51 sec
I found validation check of parameter is inefficient. The following example support it too.
No change but just specify same routes to a router. (N to N, DB is not changed)
100 routes: <1 sec
1000 routes: 4 sec
10000 routes: 52 sec
Remove routes from a router. (N to 0)
100 routes: <1 sec
1000 routes: 8 sec
10000 routes: 750 sec
I found handling of record deletion is bad. It takes N**2 order.
Changed in neutron: | |
assignee: | nobody → Itsuro Oda (oda-g) |
Changed in neutron: | |
importance: | Undecided → High |
Changed in neutron: | |
status: | New → Triaged |
milestone: | none → juno-1 |
Changed in neutron: | |
status: | Fix Committed → Fix Released |
Changed in neutron: | |
milestone: | juno-1 → 2014.2 |
I will submit a fix.
After change the same measurement will be as follows.
Setting routes to a router. (0 to N)
100 routes: <1 sec
1000 routes: <1 sec
10000 routes: 15 sec
Remove routes from a router. (N to 0)
100 routes: <1 sec
1000 routes: <1 sec
10000 routes: 4 sec