Unify Data Collection in Charm++
Currently, things like load balancing, PICS, BigSim, and tracing (for Projections) all collect data in their own unique way. This causes unnecessary duplication of code and data. This will likely get worse in the future as we add more detail for things like heterogeneous load balancing and energy aware scheduling.
Thus, we should move towards a model of unified data collection. One module in Charm++ should collect information in a sort of generic database, and those services that use the data can get it from this unified system. This should help reduce the complexity of the code, memory usage, and overhead and simplify the development of new runtime features.
A wrinkle in this is that it will be a lot of software engineering work for no externally visible impact, but it's work worth doing.