Abstract:The emergence of cloud computing brought datacenter to new application environments and new requirements. Server virtualization, as the main enabling technology for cloud services, needed datacenter to increase the number, performance and variety of I/O devices to support more virtual machines, for which the traditional server I/O architecture could result in waste of resources, increasing of server density and rise of wiring complexity. I/O resource pooling was a promising architecture to solve these problems, by separating devices and servers and enabling elastic on-demand provisioning of I/O resources to servers. We designed and implemented a single root I/O virtualization based multi-root I/O resource pooling architecture. By using a hardware-based peripheral component interface express identifier re-mapping, different physical servers can share the same physical devices, and through a hot-plug based allocation method, virtual I/O device could be dynamically reallocated between servers. The correctness and performance of our pooling architecture was proved by a Field-Programmable Gate Array prototype in this paper.