Benjamin Mahler created MESOS-8952:
--------------------------------------

             Summary: process::await/collect n^2 performance issue
                 Key: MESOS-8952
                 URL: https://issues.apache.org/jira/browse/MESOS-8952
             Project: Mesos
          Issue Type: Bug
          Components: libprocess
            Reporter: Benjamin Mahler


Due to the use of std::list::size (which appears to be linear in complexity 
even with g++ and c++11), process::await and process::collect suffer from n^2 
complexity. A minimal patch to switch to std::vector shows the following 
improvement:

{noformat: Title=Before}
Registered 2000 frameworks
Finished launching the tasks; Sleep 10 seconds ...
Start collecting metrics ...
v0 '/metrics/snapshot' response took 17.751689014secs
v1 'master::call::GetMetrics' application/x-protobuf response took 
17.523928635secs
v1 'master::call::GetMetrics' application/json response took 18.111901732secs
{noformat}

{noformat: Title=After}
Registered 2000 frameworks
Finished launching the tasks; Sleep 10 seconds ...
Start collecting metrics ...
v0 '/metrics/snapshot' response took 1.730948431secs
v1 'master::call::GetMetrics' application/x-protobuf response took 
1.697177667secs
v1 'master::call::GetMetrics' application/json response took 2.160314525secs
{noformat}

A follow up to switch the interface to std::vector would be beneficial since we 
don't need any of the std::list benefits.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to