If you have the ballooning device enabled, and the guest reports back detailed memory info, then the memory shown as used, should match very closely, what the guest is showing as used.
Splitting it up more could be done, but will always be somewhat wrong, because, at least on Linux machines...