Improved I/O Concurrency

I/O requests issued by the guest are routed to the VMkernel via the virtual machine monitor (VMM). Once the requests reach the VMkernel, they execute asynchronously. This has always been the case in ESX. The execution model in ESX 4.0 further improves I/O concurrency and allows vCPUs in the guest to execute other tasks immediately after initiating an I/O request.

This improved I/O concurrency model is designed around two ring structures per adapter which are shared by the virtual machine monitor (VMM) and the VMkernel. I/O requests from the guest are sent to the VMM where they are placed in the request ring. The VMkernel periodically initiates all new entries it finds there. The processing of the entries in the request ring is done asynchronously from the perspective of the guest.

I/O completions to the VMM are posted in the shared completion rings and an interrupt is generated for the guest operating system. By using this mechanism instead of requiring the guest to poll, these interrupts can be coalesced for delivery, which further optimizes I/O processing.


About PiroNet

Didier Pironet is an independent blogger and freelancer with +15 years of IT industry experience. Didier is also a former VMware inc. employee where he specialised in Datacenter and Cloud Infrastructure products as well as Infrastructure, Operations and IT Business Management products. Didier is passionate about technologies and he is found to be a creative and a visionary thinker, expressing with passion and excitement, hopefully inspiring and enrolling people to innovation and change.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s