Enhanced I/O performance in a multi-processor system via interrupt affinity schemes

US9336168B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9336168-B2
Application numberUS-201514866262-A
CountryUS
Kind codeB2
Filing dateSep 25, 2015
Priority dateOct 9, 2009
Publication dateMay 10, 2016
Grant dateMay 10, 2016

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.

Disclosed herein is a method for improving Input/Output (I/O) performance in a host system having multiple CPUs. Under this method, various interrupt affinity schemes are provided, which associate multiple processors, interrupts, and I/O channels for sending the interrupts, thereby allowing the interrupts to be almost evenly loaded among the multiple I/O channels and processors. Also, data locality (“warm cache”) can be achieved through the interrupt affinity schemes that associate each interrupt to its source processor, namely, the processor originating the I/O request that results in the interrupt.

First claim

Opening claim text (preview).

What is claimed is: 1. A system, comprising: one or more processors operable to run a plurality of kernel threads, a different one or ones of the kernel threads being awake and in operation at different times; a memory coupled to the one or more processors, the memory storing a correspondence between an interrupt identifier of a plurality of interrupt identifiers and a given kernel thread of the plurality of kernel threads; and an Input/Output (I/O) device coupled to the one or more processors and the memory, wherein upon occurrence of an event that would cause the I/O device to direct an interrupt to the given kernel thread, the I/O device identifies whether the given kernel thread is awake, the I/O device being operable to bind the given kernel thread to a unique processor of the one or more processors in the system, the unique processor being associated with the interrupt identifier corresponding to the given kernel thread according to an interrupt mapping scheme comprising associations between the one or more processors and one or more of the plurality of interrupt identifiers; wherein the I/O device is operable to insert the given kernel thread in a thread queue in the unique processor to which the given kernel thread is bound; and wherein if it is determined that the given kernel thread is not awake nor in operation, the I/O device is operable to use the interrupt identifier to generate the interrupt. 2. The system of claim 1 , wherein the I/O device is operable to wake up the given kernel thread if it is determined that the given kernel thread is not awake. 3. The system of claim 1 , wherein if it is determined that the given kernel thread is awake and in operation, the I/O device is operable to raise the interrupt immediately. 4. The system of claim 1 , wherein the I/O device is operable to detect a total number of interrupt identifiers available in the system. 5. The system of claim 1 , wherein the event that would cause the I/O device to direct the interrupt to the given kernel thread is an I/O completion. 6. The system of claim 1 , wherein the I/O device is operable to create a kernel thread for handling an interrupt. 7. The system of claim 1 , wherein the I/O device is operable to assign a priority to the given kernel thread, the priority indicating when the kernel thread is to be serviced in the thread queue. 8. A method for processing interrupts, the method comprising: running a plurality of kernel threads in one or more processors, a different one or ones of the kernel threads being awake and in operation at different times; storing a correspondence between an interrupt identifier of a plurality of interrupt identifiers and a given kernel thread of the plurality of kernel threads; and binding the given kernel thread to a unique processor of the one or more processors, the unique processor being associated with the interrupt identifier corresponding to the given kernel thread according to an interrupt mapping scheme comprising associations between the one or more processors and one or more of the plurality of interrupt identifiers; wherein the method comprises inserting the given kernel thread in a thread queue in the unique processor to which the worker kernel thread is bound; determining that the given kernel thread is not awake nor in operation; and using the interrupt identifier to generate the interrupt. 9. The method of claim 8 , wherein the method comprises assigning a priority to the given kernel thread, the priority indicating when the kernel thread is to be serviced in the thread queue. 10. The method of claim 8 , wherein the method comprises: identifying whether the given kernel thread is awake; and waking up the given kernel thread if it is determined that the given kernel thread is not awake. 11. The method of claim 8 , wherein the method comprises: determining that the given kernel thread is awake and in operation; and raising the interrupt immediately. 12. The method of claim 8 , wherein the method comprises detecting an occurrence of an event that triggers an interrupt. 13. The method of claim 12 , wherein the event that triggers an interrupt is an I/O completion. 14. The method of claim 8 , wherein the method comprises detecting a total number of interrupt identifiers available in the system. 15. The method of claim 8 , wherein the method comprises creating a kernel thread for handling an interrupt. 16. A computing apparatus, comprising: one or more processors operable to run a plurality of kernel threads, a different one or ones of the kernel threads being awake and in operation at different times; a memory coupled to the one or more processors, the memory storing a correspondence between a respective interrupt identifier of a plurality of interrupt identifiers and a given kernel thread of the plurality of kernel threads; and an Input/Output (I/O) device coupled to the one or more processors and the memory, wherein upon occurrence of a triggering event, the I/O device identifies whether the given kernel thread is active, the I/O device being operable to raise an interrupt immediately when the given kernel thread is active, the I/O device being operable to use the respective interrupt identifier to generate the interrupt and bind the given kernel thread to a unique processor of the one or more processors when the given kernel thread is not active; wherein the unique processor is associated with the respective interrupt identifier corresponding to the given kernel thread according to an interrupt mapping scheme of associations between the one or more processors and one or more of the plurality of interrupt identifiers.

Assignees

Inventors

Classifications

  • using interrupt (G06F13/32 takes precedence) · CPC title

  • by interrupt, e.g. masked · CPC title

  • Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title

  • by initialisation or re-initialisation of storage systems · CPC title

  • Improving I/O performance · 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 US9336168B2 cover?
Disclosed herein is a method for improving Input/Output (I/O) performance in a host system having multiple CPUs. Under this method, various interrupt affinity schemes are provided, which associate multiple processors, interrupts, and I/O channels for sending the interrupts, thereby allowing the interrupts to be almost evenly loaded among the multiple I/O channels and processors. Also, data loca…
Who is the assignee on this patent?
Avago Technologies General Ip, Avago Technologies General Ip
What technology area does this patent fall under?
Primary CPC classification G06F13/32. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 10 2016 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 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).