← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1663465] [NEW] [performance improvement] update neutron-openvswitch-agent's AsyncProcess

 

Public bug reported:

neutron-openvswitch-agent' rpc_loop loops every 2 seconds by default.
In every loop, the function invocation will do every time: _agent_has_updates -> polling_manager.is_polling_required -> self._monitor.has_updates -> self.is_active() -> self.pid -> utils.get_root_helper_child_pid -> find_child_pids -> execute 'ps --ppid <pid> -o pid=' command.
The command ('ps --ppid <pid> -o pid=') execution is heavy especially for high load server, I have 800 HA vRouters in my network node. Every time I use top command to see server load, I will always find ps process with high CPU usage, and the every rpc_loop will takes 8+ seconds according to the neutron-openvswitch-agent log.
So we need to find a way to avoid this invocation.

In class AsyncProcess, we can get the pid when spawn the child process
to avoid getting pid every time using ps command.

** Affects: neutron
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1663465

Title:
  [performance improvement] update neutron-openvswitch-agent's
  AsyncProcess

Status in neutron:
  New

Bug description:
  neutron-openvswitch-agent' rpc_loop loops every 2 seconds by default.
  In every loop, the function invocation will do every time: _agent_has_updates -> polling_manager.is_polling_required -> self._monitor.has_updates -> self.is_active() -> self.pid -> utils.get_root_helper_child_pid -> find_child_pids -> execute 'ps --ppid <pid> -o pid=' command.
  The command ('ps --ppid <pid> -o pid=') execution is heavy especially for high load server, I have 800 HA vRouters in my network node. Every time I use top command to see server load, I will always find ps process with high CPU usage, and the every rpc_loop will takes 8+ seconds according to the neutron-openvswitch-agent log.
  So we need to find a way to avoid this invocation.

  In class AsyncProcess, we can get the pid when spawn the child process
  to avoid getting pid every time using ps command.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1663465/+subscriptions


Follow ups