Split aggregator and monitor into separate workers

Running aggregator and monitor in separate workers lets us simplify
lockless synchronization and run monitor as an RT thread. This prevents
psi notifications from being delayed in the presence of other RT threads
which can otherwise starve psi monitor thread.

Test: Hogging CPUs with "chrt -f 50 dd if=/dev/zero of=/dev/null"
running on each core and modifying psi monitor to generate an event with a
trace every 500ms. Without this patch missing events are observed:

psimon-901   [003] ....   109.146856: psi_trigger_work: psimon: trigger work <-- 2 events per second
psimon-901   [003] ....   109.653626: psi_trigger_work: psimon: trigger work
psimon-901   [003] ....   110.160327: psi_trigger_work: psimon: trigger work
psimon-901   [003] ....   110.667015: psi_trigger_work: psimon: trigger work
psimon-901   [003] ....   111.173563: psi_trigger_work: psimon: trigger work
psimon-901   [003] ....   111.680597: psi_trigger_work: psimon: trigger work <-- test start, event rate drops
psimon-901   [004] ....   113.400104: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   114.396731: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   115.396821: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   116.396717: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   117.396734: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   118.396837: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   119.396703: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   120.396735: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   121.396701: psi_trigger_work: psimon: trigger work
psimon-901   [006] ....   122.396743: psi_trigger_work: psimon: trigger work
psimon-901   [004] ....   123.396706: psi_trigger_work: psimon: trigger work
psimon-901   [007] ....   124.396703: psi_trigger_work: psimon: trigger work
psimon-901   [005] ....   125.396704: psi_trigger_work: psimon: trigger work
psimon-901   [005] ....   126.396703: psi_trigger_work: psimon: trigger work <-- test stop, events resume at normal rate
psimon-901   [005] ....   126.906763: psi_trigger_work: psimon: trigger work
psimon-901   [005] ....   127.414235: psi_trigger_work: psimon: trigger work
psimon-901   [005] ....   127.921292: psi_trigger_work: psimon: trigger work

with this patch event rate is unaffected by CPU hoggers.

Change-Id: I7ef85deeab28ffe4cfa8bc658fadd33fe5d194de
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2 files changed