Description of problem: As per customer - ~~~ The memory value provided by Ceilometer (versions Juno and Liberty) in metric memory.usage is the difference between total_memory and free_memory. We would need the total_memory minus free_memory and minus buffers_cache_memory. Now --> memory.usage = Total_Memory - Free_Memory Needed --> memory.commit = Total_Memory - (Free_Memory + Buffers_Cache_Memory) ~~~ How reproducible: 100% Steps to Reproduce: 1. N/A - this is just the way ceilometer collects data from libvirt Additional info: Said best by Mehdi Abaakouk, this may be a non-starter from a ceilometer point of view: ~~~ I don't think you can retrieve this information without installation an monitoring agent inside each instances. Ceilometer just uses the libvirt API to retrieve the memory usage of instances. The libvirt reporting is from the compute node point of view. That means; how many RAM KVM processes really use compared to the total RAM reserved for the instance. It doesn't known which part is really used and which part is buffered/cached by the kernel inside the instance. For the compute/KVM process point of view what ever the purpose, this is allocated. ~~~ Would this be an RFE for libvirt perhaps?
This can't be a RFE for libvirt/kvm neither. From the hypervisor point of view, we can only known what memory pages are allocated by the guest operating system and those that are free. libvirt/kvm have no idea of how the memory is managed by the guest operating system. This one can even not been Linux. That why we can't have this information via the hyperviser.