A method for caching units of data between a first caching level buffer (124, 230) comprising a buffer cache and a second caching level buffer (150, 240) comprising a cache data store with a hypervisor cache control in a computing system having a virtual machine running therein, said method characterised by: loading and caching a unit of data into the first caching level buffer (124, 230) which is controlled by a guest operating system of the virtual machine; recording state information held by a virtualization system which supports running of the virtual machine on the computer system, wherein the state information held by the virtualization system tracks units of data that are stored in the first caching level buffer (124, 230) controlled by the guest operating system of the virtual machine and wherein the state information held by the virtualization system also tracks units of data that are stored in the second caching level buffer (150, 240), wherein the second caching level buffer (150, 240) is controlled by the virtualization system; triggering a demotion operation when the first caching level buffer (124, 230) controlled by the guest operating system of the virtual machine evicts the unit of data, the demotion operation including copying contents of the unit of data into the second caching level buffer (150, 240) controlled by the virtualization system and updating the state information held by the virtualization system; wherein the first caching level buffer (124, 230) controlled by the guest operating system of the virtual machine and the second caching level buffer (150, 240) controlled by the virtualization system preserve exclusive caching by holding each particular unit of data in only one of the first caching level buffer (124, 230) and the second caching level buffer (150, 240). loading and caching a unit of data into the first caching level buffer (124, 230) which is controlled by a guest operating system of the virtual machine; recording state information held by a virtualization system which supports running of the virtual machine on the computer system, wherein the state information held by the virtualization system tracks units of data that are stored in the first caching level buffer (124, 230) controlled by the guest operating system of the virtual machine and wherein the state information held by the virtualization system also tracks units of data that are stored in the second caching level buffer (150, 240), wherein the second caching level buffer (150, 240) is controlled by the virtualization system; triggering a demotion operation when the first caching level buffer (124, 230) controlled by the guest operating system of the virtual machine evicts the unit of data, the demotion operation including copying contents of the unit of data into the second caching level buffer (150, 240) controlled by the virtualization system and updating the state information held by the virtualization system; wherein the first caching level buffer (124, 230) controlled by the guest operating system of the virtual machine and the second caching level buffer (150, 240) controlled by the virtualization system preserve exclusive caching by holding each particular unit of data in only one of the first caching level buffer (124, 230) and the second caching level buffer (150, 240).