Skip to content

Resolve performance regression described in ATLIDTRKCP-301

This merge request should resolve the CPU performance regression described in ATLIDTRKCP-301. The way this merge request works is two-fold. Firstly, it removes some unnecessary charge caching behaviour which can be replaced by using the late binding mechanisms in the charge method. Secondly, it replaces the uses of CachedValue by mutable variables with locks to guard them.

In my testing, the physics output is identical to that of the 2020-10-31T2101 nightly. The CPU performance results are given in the following table, and in my testing the performance of this MR is within measurement error of the performance before !37717 (merged). This means the performance is also better than in !37806 (closed).

       PMonSD          n    cpu    max@evt    vmem    max@evt  malloc    max@evt  component
MASTER PMonSD [evt]   24    602   1680@22      470  11272@1      4531  11318@22   InDetSiSpTrackFinder
REVERT PMonSD [evt]   24    552   1500@22      470  11268@1      4531  11318@22   InDetSiSpTrackFinder
37806  PMonSD [evt]   24    575   1710@22      470  11268@1      4531  11318@22   InDetSiSpTrackFinder
THIS   PMonSD [evt]   24    557   1550@22      470  11268@1      4531  11318@22   InDetSiSpTrackFinder

Tagging @goblirsc, @sroe, @christos. Christos, can you please confirm that this is acceptable? There are mutable variables here but they are all guarded by a mutex lock, and so the checker is not silenced without good reason.

Merge request reports