IP Library › Granted Patent US 10,387,180
Granted Patent B2
US 10,387,180 · App. 14/792,672 · Granted Aug 20, 2019

Hypervisor controlled redundancy for I/O paths using virtualized I/O adapters

Inventors: Narsimha R. Challa (Andhra Pradesh, IN); Eric P. Fried (Austin, TX); Swaroop Jayanthi (Bangalore, IN); Sailaja R. Keshireddy (Hyderabad, IN)
Assignee: International Business Machines Corporation
G06F9/45558G06F2009/45579G06F2009/45583
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,387,180
App. No.
14/792,672
Granted
Aug 20, 2019
Kind
B2
Abstract

A method, system, and program product for hypervisor controlled redundancy for Input/Output (I/O) paths using virtualized I/O adapters is provided. A hypervisor detects a virtual machine exceeding a pre-defined bandwidth threshold. The hypervisor searches a shared pool of free virtual functions (VF) for a free VF. If the shared pool of free VFs is not depleted, a free VF is allocated to the virtual machine (VM). If the shared pool of free VFs is depleted, the active VMs are examined for VF capacity that may be donated to the triggering VM.

Claims (68)

1. A method for a hypervisor controlled redundancy for Input/Output (I/O) paths using virtualized I/O adapters comprising:

creating, by the hypervisor, a shared pool of free virtual functions (VFs) for all redundant I/O bandwidth from all physical adapters within a network fabric;

calculating and generating, by the hypervisor, a required number of VFs based on a redundancy level value specifying a number of I/O paths required for each VF and an I/O load on a physical adapter, wherein the I/O load on the physical adapter is periodically calculated by the hypervisor according to a running average of a percentage of usage of the physical adapter's bandwidth in a moving window of time such that the I/O load is balanced across physical adapters;

calculating, by the hypervisor, bandwidth usage statistics for each VF allocated to a plurality of active virtual machines (VM), wherein the bandwidth usage statistics for each VF are calculated based on periodically collected samples;

based on the bandwidth usage statistics and a predefined bandwidth usage threshold, determining a triggering VM in the plurality of active VMs, as the active VM having at least one VF exceeding the predefined bandwidth usage threshold;

in response to the triggering VM exceeding the predefined bandwidth usage threshold, checking the shared pool of free virtual VFs for a free VF;

allocating the free VF to the triggering VM, in response to the free VF being located in the shared pool of free VFs;

determining a VM priority value of the triggering VM and a VM priority value of each active VM in the plurality of active VMs, the VM priority value comprising a bandwidth allocation need;

in response to the shared pool of free VFs being depleted, searching each one of the plurality of active VMs in order from low VM priority value to high VM priority value for an active VM having a VF capacity comprising at least one free VF, the active VM having at least one other VF which is not free, wherein the active VM has a redundancy type of shared, based on a redundant I/O path bandwidth being shareable with other active VMs;

in response to locating a VM having the at least one free VF, determining whether the VM priority value of the triggering VM is higher than the VM priority value of the active VM;

in response to the VM priority value of the triggering VM being higher than the VM priority value of the active VM, donating a VF portion from the active VM to the triggering VM;

tracking, by the hypervisor, the donated VF portion; and

returning an unused bandwidth portion of the active VM to the shared pool of free VFs based on at least one of:

the triggering VM becoming inactive;

the triggering VM bandwidth usage being below the predefined bandwidth usage threshold.

2. The method of claim 1 , wherein the searching the plurality of active VMs further comprises:

skipping the active VM based on at least one of:

the active VM not having more than one allocated VF; and the active VM having a higher priority than the triggering VM; and

donating at least a portion of the allocated VF from the active VM to the triggering VM.

3. The method of claim 1 , wherein the shared pool comprises the I/O path bandwidth exceeding that of the primary I/O path allocations to the active VMs, and wherein the redundant I/O path bandwidth VF allocations are made from the shared pool.

4. The method of claim 1 , further comprising:

aggregating at least one Single Root I/O Virtualization (SRIOV) physical function (PF) in an SRIOV pool wherein the SRIOV pool corresponds to a network fabric.

5. The method of claim 4 , wherein the redundancy type of the active VM is dynamically converted from shared to dedicated and from dedicated to shared while the active VM is active without disrupting the execution of the active VM.

6. A computer program product for hypervisor controlled redundancy for Input/Output (I/O) paths using virtualized I/O adapters comprising a non-transitory computer readable storage device readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:

creating, by the hypervisor, a shared pool of free virtual functions (VFs) for all redundant I/O bandwidth from all physical adapters within a network fabric;

calculating and generating, by the hypervisor, a required number of VFs based on a redundancy level value specifying a number of I/O paths required for each VF and an I/O load on a physical adapter, wherein the I/O load on the physical adapter is periodically calculated by the hypervisor according to a running average of a percentage of usage of the physical adapter's bandwidth in a moving window of time such that the I/O load is balanced across physical adapters;

calculating, by the hypervisor, bandwidth usage statistics for each VF allocated to a plurality of active virtual machines (VM), wherein the bandwidth usage statistics for each VF are calculated based on periodically collected samples;

based on the bandwidth usage statistics and a predefined bandwidth usage threshold, determining a triggering VM in the plurality of active VMs, as the active VM having at least one VF exceeding the predefined bandwidth usage threshold;

in response to the triggering VM exceeding the predefined bandwidth usage threshold, checking the shared pool of free virtual VFs for a free VF;

allocating the free VF to the triggering VM, in response to the free VF being located in the shared pool of free VFs;

determining a VM priority value of the triggering VM and a VM priority value of each active VM in the plurality of active VMs, the VM priority value comprising a bandwidth allocation need;

in response to the shared pool of free VFs being depleted, searching each one of the plurality of active VMs in order from low VM priority value to high VM priority value for an active VM having a VF capacity comprising at least one free VF, the active VM having at least one other VF which is not free, wherein the active VM has a redundancy type of shared, based on a redundant I/O path bandwidth being shareable with other active VMs;

in response to locating a VM having the at least one free VF, determining whether the VM priority value of the triggering VM is higher than the VM priority value of the active VM;

in response to the VM priority value of the triggering VM being higher than the VM priority value of the active VM, donating a VF portion from the active VM to the triggering VM;

tracking, by the hypervisor, the donated VF portion; and

returning an unused bandwidth portion of the active VM to the shared pool of free VFs based on at least one of:

the triggering VM becoming inactive;

the triggering VM bandwidth usage being below the predefined bandwidth usage threshold.

7. The computer program product of claim 6 , wherein the searching the plurality of active VMs further comprises:

skipping the active VM based on at least one of:

the active VM not having more than one allocated VF; and

the active VM having a higher priority than the triggering VM; and

donating at least a portion of the allocated VF from the active VM to the triggering VM.

8. The computer program product of claim 6 , wherein the shared pool comprises the I/O path bandwidth exceeding that of the primary I/O path allocations to the active VMs, and wherein the redundant I/O path bandwidth VF allocations are made from the shared pool.

9. The computer program product of claim 6 , further comprising:

aggregating at least one Single Root I/O Virtualization (SRIOV) physical function (PF) in an SRIOV pool wherein the SRIOV pool corresponds to a network fabric.

10. A computer system for hypervisor controlled redundancy for Input/Output (I/O) paths using virtualized I/O adapters comprising a memory, a processing unit communicatively coupled to the memory, wherein the computer system is capable of performing the steps of a method comprising:

creating, by the hypervisor, a shared pool of free virtual functions (VFs) for all redundant I/O bandwidth from all physical adapters within a network fabric;

calculating and generating, by the hypervisor, a required number of VFs based on a redundancy level value specifying a number of I/O paths required for each VF and an I/O load on a physical adapter, wherein the I/O load on the physical adapter is periodically calculated by the hypervisor according to a running average of a percentage of usage of the physical adapter's bandwidth in a moving window of time such that the I/O load is balanced across physical adapters;

calculating, by the hypervisor, bandwidth usage statistics for each VF allocated to a plurality of active virtual machines (VM), wherein the bandwidth usage statistics for each VF are calculated based on periodically collected samples;

based on the bandwidth usage statistics and a predefined bandwidth usage threshold, determining a triggering VM in the plurality of active VMs, as the active VM having at least one VF exceeding the predefined bandwidth usage threshold;

in response to the triggering VM exceeding the predefined bandwidth usage threshold, checking the shared pool of free virtual VFs for a free VF;

allocating the free VF to the triggering VM, in response to the free VF being located in the shared pool of free VFs;

determining a VM priority value of the triggering VM and a VM priority value of each active VM in the plurality of active VMs, the VM priority value comprising a bandwidth allocation need;

in response to the shared pool of free VFs being depleted, searching each one of the plurality of active VMs in order from low VM priority value to high VM priority value for an active VM having a VF capacity comprising at least one free VF, the active VM having at least one other VF which is not free, wherein the active VM has a redundancy type of shared, based on a redundant I/O path bandwidth being shareable with other active VMs;

in response to locating a VM having the at least one free VF, determining whether the VM priority value of the triggering VM is higher than the VM priority value of the active VM;

in response to the VM priority value of the triggering VM being higher than the VM priority value of the active VM, donating a VF portion from the active VM to the triggering VM;

tracking, by the hypervisor, the donated VF portion; and

returning an unused bandwidth portion of the active VM to the shared pool of free VFs based on at least one of:

the triggering VM becoming inactive;

the triggering VM bandwidth usage being below the predefined bandwidth usage threshold.

11. The computer system of claim 10 , wherein the searching the plurality of active VMs further comprises:

skipping the active VM based on at least one of:

the active VM not having more than one allocated VF; and

the active VM having a higher priority than the triggering VM; and

donating at least a portion of the allocated VF from the active VM to the triggering VM.

12. The computer system of claim 10 , further comprising:

aggregating at least one Single Root I/O Virtualization (SRIOV) physical function (PF) in an SRIOV pool wherein the SRIOV pool corresponds to a network fabric.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2015
From: CHALLA, NARSIMHA R.; FRIED, ERIC P.; JAYANTHI, SWAROOP; KESHIREDDY, SAILAJA R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 036004/0155 →
Continuity (1)
Related Publication 20170010907A1 · Jan 12, 2017
Cited By (1)
US 12,681,748