  Non-Volatile Memory (NVM) can deliver higher density and lower cost per bit
when compared with DRAM. Its main drawback is that it is slower than DRAM. On
the other hand, DRAM has scalability problems due to its cost and energy
consumption. NVM will likely coexist with DRAM in computer systems and the
biggest challenge is to know which data to allocate on each type of memory. A
state-of-the-art approach is AutoNUMA, in the Linux kernel. Prior work is
limited to measuring AutoNUMA solely in terms of the application execution
time, without understanding AutoNUMA's behavior. In this work we provide a more
in-depth characterization of AutoNUMA, for instance, identifying where exactly
a set of pages are allocated, while keeping track of promotion and demotion
decisions performed by AutoNUMA. Our analysis shows that AutoNUMA's benefits
can be modest when running graph processing applications, or graph analytics,
because most pages have only one access over the entire execution time and
other pages accesses have no temporal locality. We make a case for exploring
application characteristics using object-level mappings between DRAM and NVM.
Our preliminary experiments show that an object-level memory tiering can better
capture the application behavior and reduce the execution time of graph
analytics by 21% (avg) and 51% (max), when compared to AutoNUMA, while
significantly reducing the number of memory accesses in NVM.
