Host Input/Output Caching

can optionally disable the I/O caching that the host OS would otherwise perform on disk image files.

Traditionally, has opened disk image files as normal files, which results in them being cached by the host OS like any other file. The main advantage of this is speed: when the guest OS writes to disk and the host OS cache uses delayed writing, the write operation can be reported as completed to the guest OS quickly while the host OS can perform the operation asynchronously. Also, when you start a VM a second time and have enough memory available for the OS to use for caching, large parts of the virtual disk may be in system memory, and the VM can access the data much faster.

Note that this applies only to image files. Buffering does not occur for virtual disks residing on remote iSCSI storage, which is the more common scenario in enterprise-class setups. See .

While buffering is a useful default setting for virtualizing a few machines on a desktop computer, there are some disadvantages to this approach:

If you decide to disable host I/O caching for the above reasons, uses its own small cache to buffer writes, but no read caching since this is typically already performed by the guest OS. In addition, fully supports asynchronous I/O for its virtual SATA, SCSI, and SAS controllers through multiple I/O threads.

Since asynchronous I/O is not supported by IDE controllers, for performance reasons, you may want to leave host caching enabled for your VM's virtual IDE controllers.

For this reason, enables you to configure whether the host I/O cache is used for each I/O controller separately. Either select the Use Host I/O Cache check box in the Storage settings for a given virtual storage controller, or use the following VBoxManage command to disable the host I/O cache for a virtual storage controller:

VBoxManage storagectl "VM name" --name <controllername> --hostiocache off

See .

For the above reasons, uses SATA controllers by default for new virtual machines.