  Production software oftentimes suffers from the issue of performance
inefficiencies caused by inappropriate use of data structures, programming
abstractions, and conservative compiler optimizations. It is desirable to avoid
unnecessary memory operations. However, existing works often use a
whole-program fine-grained monitoring method with incredibly high overhead. To
this end, we propose a learning-aided approach to identify unnecessary memory
operations intelligently with low overhead. By applying several prevalent graph
neural network models to extract program semantics with respect to program
structure, execution order and dynamic states, we present a novel, hybrid
program embedding approach so that to derive unnecessary memory operations
through the embedding. We train our model with tens of thousands of samples
acquired from a set of real-world benchmarks. Results show that our model
achieves 90% of accuracy and incurs only around a half of time overhead of the
state-of-art tool.
