Arbitration in an SRIOV environment

US10108569B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10108569-B2
Application numberUS-201514844053-A
CountryUS
Kind codeB2
Filing dateSep 3, 2015
Priority dateNov 25, 2014
Publication dateOct 23, 2018
Grant dateOct 23, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In one embodiment, a computer-implemented method includes assigning a time budget to each of a plurality of virtual functions in a single-root input/output (SRIOV) environment, where a first time budget of a first virtual function indicates a quantity of cycles on an engine of the SRIOV environment allowed to the first virtual function within a time slice. A plurality of requests issued by the plurality of virtual functions are selected by a computer processor, where the selecting excludes requests issued by virtual functions that have used their associated time budgets of cycles in a current time slice. The selected plurality of requests are delivered to the engine for processing. The time budgets of the virtual functions are reset and a new time slice begins, at the end of the current time slice.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer-implemented method, comprising: running, during an initial period, each of a plurality of virtual functions in a single-root input/output (SRIOV) environment; assigning a plurality of time budgets to the plurality of virtual functions, wherein the plurality of time budgets comprise a respective time budget for each virtual function of the plurality of virtual functions based on the running of the virtual function during the initial period, and wherein the respective time budget assigned to each virtual function indicates a quantity of cycles on a first engine of the SRIOV environment allowed to the virtual function within each time slice of a plurality of time slices; wherein a sum of the plurality of time budgets indicates an allotted quantity of cycles that is less than a total quantity of cycles in each time slice; assigning a plurality of credit sets to the plurality of virtual functions, wherein the plurality of credit sets comprise a respective credit set having a respective one or more credits for each virtual function, and wherein a quantity of credits in the respective credit set of each virtual function represents a priority level of the virtual function; wherein each virtual function of the plurality of virtual functions is associated with a respective time budget and a respective credit set, and wherein each virtual function is required to have remaining time in the respective time budget and a remaining credit in the respective credit set to run on the first engine; wherein the quantity of credits in the respective credit set of each virtual function indicates a quantity of sessions on the first engine allowed to the virtual function, and wherein for each virtual function the quantity of cycles on the first engine is a distinct variable from the quantity of sessions on the first engine; assigning, during a current time slice of the plurality of time slices, one or more remaining cycles not assigned in the current time slice to at least one virtual function of the plurality of virtual functions on an as-needed basis; selecting, by a computer processor, a plurality of requests issued by the plurality of virtual functions, wherein the selecting comprises identifying one or more virtual functions each having, in the current time slice, both remaining time in the respective time budget and a remaining credit in the respective credit set; delivering the selected plurality of requests to the first engine for processing; responsive to processing of each virtual function by the first engine, reducing the respective time budget of the virtual and the respective credit set of the virtual function, wherein the respective time budget is reduced based on an amount of time during which the virtual function is processed by the first engine, wherein the respective credit set is reduced based on a number of sessions of processing the virtual function by the first engine, and wherein the reducing the respective time budget and the respective credit set are performed independently of each other; resetting the plurality of credit sets of the plurality of virtual functions, at the end of the current time slice; and resetting the plurality of time budgets of the plurality of virtual functions and beginning a new time slice, at the end of the current time slice. 2. The method of claim 1 , further comprising reallocating, to other virtual functions of the plurality of virtual functions, the cycles of the respective time budget of a first virtual function of the plurality of virtual functions within the current time slice when the first virtual function has completed its tasks within the current time slice. 3. The method of claim 1 , wherein the selecting the plurality of requests issued by the plurality of virtual functions further comprises selecting a first request from a first virtual function, wherein the delivering the selected plurality of requests to the first engine for processing comprises delivering the first request from the first virtual function to the first engine for processing, and further comprising: allowing the first virtual function to run on the first engine in the current time slice for an amount of time exceeding the respective time budget of the first virtual function; and assigning the first virtual function a smaller time budget than the respective time budget of the first virtual function in a next time slice following the current time slice, responsive to allowing the first virtual function to run on the first engine in the current time slice for an amount of time exceeding the respective time budget of the first virtual function. 4. The method of claim 3 , wherein the assigning the first virtual function a smaller time budget than the respective time budget of the first virtual function in the next time slice following the current time slice comprises locking the first virtual function out of the first engine in the next time slice. 5. The method of claim 1 , wherein the SRIOV environment comprises at least two engines, and further comprising: assigning a plurality of additional time budgets to the plurality of virtual functions, wherein the plurality of additional time budgets comprise a respective additional time budget for each virtual function of the plurality of virtual functions based on the running of the virtual function during the initial period, and wherein the respective additional time budget assigned to each virtual function indicates a quantity of cycles on a second engine of the SRIOV environment allowed to the virtual function within each time slice of the plurality of time slices. 6. The method of claim 1 , wherein the selecting the plurality of requests issued by the plurality of virtual functions comprises: estimating, for each of the plurality of requests, a quantity of cycles required to complete the request; and determining, for each of the plurality of requests, whether to select the request based on a quantity of remaining cycles in the respective time budget of the virtual function associated with the request and based on the quantity of cycles required to complete the request. 7. The method of claim 6 , wherein the selecting the plurality of requests issued by the plurality of virtual functions comprises selecting a first request, wherein the first request is associated with a first virtual function having at least one cycle remaining in the respective time budget in the current time slice, and wherein the one or more processors are further configured to allow the first request to complete on the first engine during the current time slice after the respective time budget associated with the request has been exceeded.

Assignees

Inventors

Classifications

  • using a time dependent access · CPC title

  • being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus · CPC title

  • I/O management, e.g. providing access to device drivers or storage · CPC title

  • Resetting means · CPC title

  • using a time-dependent priority, e.g. individually loaded time counters or time slot · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10108569B2 cover?
In one embodiment, a computer-implemented method includes assigning a time budget to each of a plurality of virtual functions in a single-root input/output (SRIOV) environment, where a first time budget of a first virtual function indicates a quantity of cycles on an engine of the SRIOV environment allowed to the first virtual function within a time slice. A plurality of requests issued by the …
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F13/3625. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 23 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).