Implement Mapper in C++/sdbusplus/asio
This commit attempts to reimplement the mapper using C++/sdbusplus
in the hopes of improving performance both at startup (lower priority)
and runtime (higher priority).
After this patch, performance seems to be greatly improved. On an unloaded system, full
introspection of all daemons clocks in at 2.23 seconds for the worst
case. Prelimiary tests show this to be 7X faster than the existing
client. Expect this to come down slightly once associations are
implemented, as that will introduce some overhead.
It should not yet be considered complete although it does function.
The things that still need doing are:
1. Implement the configurable whitelist/blacklist that the existing
manage implements. Today they are compiled in.
Tested By:
time busctl call xyz.openbmc_project.ObjectMapper
/xyz/openbmc_project/object_mapper xyz.openbmc_project.ObjectMapper
GetSubTree sias "/" 0 1 xyz.openbmc_project.State.Chassis
a{sa{sas}} 1 "/xyz/openbmc_project/state/chassis0" 1
"xyz.openbmc_project.State.Chassis" 2
"org.freedesktop.DBus.ObjectManager" "xyz.openbmc_project.State.Chassis"
C++ implementation
real 0m0.092s
user 0m0.040s
sys 0m0.010s
Python implementation
real 0m0.416s
user 0m0.010s
sys 0m0.030s
Also has been tested using reboots, daemon dropouts and reconnects.
Change-Id: I46ca8c273df09261cb2a2448a3570a601ea8e9f4
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
Signed-off-by: James Feist <james.feist@linux.intel.com>
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
5 files changed