IP Library Granted Patent US 12,541,313
Granted Patent B1
US 12,541,313 · App. 18/930,466 · Granted Feb 3, 2026

Dynamic moderation of interrupts

Inventor: Xin Liang (San Jose, CA)
Assignee: Pure Storage, Inc.
G06F3/0634G06F3/061G06F3/0679
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 12,541,313
App. No.
18/930,466
Granted
Feb 3, 2026
Kind
B1
Abstract

An illustrative method includes a storage system determining an interrupt time window based on a set of factors, receiving a first interrupt from a storage resource, providing the first interrupt to a processor for waking up an I/O thread to process I/O operations from an I/O queue, receiving a second interrupt from the storage resource, determining that the second interrupt is received within the interrupt time window following the first interrupt, and disabling, based on the interrupt time window, the second interrupt.

Claims (52)

1 . A method comprising:

determining, by a storage controller, an interrupt time window based on a set of factors;

receiving, by the storage controller, a first interrupt from a storage resource;

providing, by the storage controller, the first interrupt to a processor for waking up an I/O thread to process I/O operations from an I/O queue;

receiving, by the storage controller, a second interrupt from the storage resource;

determining, by the storage controller, that the second interrupt is received within the interrupt time window following the first interrupt;

disabling, by the storage controller based on the interrupt time window, the second interrupt;

receiving, by the storage controller, a third interrupt from the storage resource;

determining, by the storage controller, that the third interrupt is received within the interrupt time window following the second interrupt; and

forgoing, by the storage controller, disabling of the third interrupt based on a number of running I/O threads.

2 . The method of claim 1 , wherein the set of factors comprises one or more of a number of inactive I/O threads or a latency rate for I/O requests.

3 . The method of claim 1 , further comprising:

determining, by the storage controller, updated values for the set of factors; and

adjusting, by the storage controller, the interrupt time window based on the updated values.

4 . The method of claim 3 , wherein the interrupt time window is adjusted after each received interrupt.

5 . The method of claim 1 , further comprising waking up, by the storage controller, one or more inactive I/O threads based on an additional set of factors.

6 . The method of claim 5 , wherein the additional set of factors comprises one or more of a latency rate for I/O requests or a number of inactive I/O threads.

7 . The method of claim 1 , wherein the disabling the second interrupt comprises masking an interrupt vector associated with the storage resource.

8 . The method of claim 1 , wherein the disabling the second interrupt comprises disabling incoming interrupts from the storage resource.

9 . The method of claim 8 , further comprising re-enabling the incoming interrupts from the storage resource when the interrupt time window lapses.

10 . The method of claim 1 , further comprising calculating a set of running values for the set of factors;

wherein the determining the interrupt time window is based on the set of running values.

11 . The method of claim 1 , wherein the storage resource comprises an NVMe device, and wherein the storage controller comprises a UNVMe tool.

12 . A system comprising:

a memory storing instructions; and

one or more processors communicatively coupled to the memory and configured to execute the instructions to perform a process comprising:

determining an interrupt time window based on a set of factors;

receiving a first interrupt from a storage resource;

providing the first interrupt to a processor for waking up an I/O thread to process I/O operations from an I/O queue;

receiving a second interrupt from the storage resource;

determining that the second interrupt is received within the interrupt time window following the first interrupt;

disabling, based on the interrupt time window, the second interrupt;

receiving a third interrupt from the storage resource;

determining that the third interrupt is received within the interrupt time window following the second interrupt; and

forgoing disabling of the third interrupt based on a number of running I/O threads.

13 . The system of claim 12 , wherein the set of factors comprises one or more of a number of inactive I/O threads or a latency rate for I/O requests.

14 . The system of claim 12 , wherein the process further comprises:

determining updated values for the set of factors; and

adjusting the interrupt time window based on the updated values.

15 . The system of claim 12 , wherein the process further comprises waking up one or more inactive I/O threads based on an additional set of factors.

16 . The system of claim 12 , wherein the disabling the second interrupt comprises masking an interrupt vector associated with the storage resource.

17 . The system of claim 12 , wherein the storage resource comprises an NVMe device.

18 . A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

determining an interrupt time window based on a set of factors;

receiving a first interrupt from a storage resource;

providing the first interrupt to a processor for waking up an I/O thread to process I/O operations from an I/O queue;

receiving a second interrupt from the storage resource;

determining that the second interrupt is received within the interrupt time window following the first interrupt;

disabling, based on the interrupt time window, the second interrupt;

receiving a third interrupt from the storage resource;

determining that the third interrupt is received within the interrupt time window following the second interrupt; and

forgoing disabling of the third interrupt based on a number of running I/O threads.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2024
From: LIANG, XIN
To: PURE STORAGE, INC.
Reel/Frame 069060/0429 →
References Cited (44)
US 4200912A · Harrington et al. · 1980 [cited by applicant]
US 5463752A · Benhase et al. · 1995 [cited by applicant]
US 5481725A · Jayakumar et al. · 1996 [cited by applicant]
US 5771374A · Burshtein et al. · 1998 [cited by applicant]
US 6167479A · Hartnett et al. · 2000 [cited by applicant]
US 6529986B1 · Chen et al. · 2003 [cited by applicant]
US 6539448B1 · Deng · 2003 [cited by applicant]
US 6795884B2 · Poisner et al. · 2004 [cited by applicant]
US 7526592B2 · Tsuruta · 2009 [cited by applicant]
US 7975115B2 · Wayda et al. · 2011 [cited by applicant]
US 8312195B2 · Van Riel · 2012 [cited by applicant]
US 8478924B2 · Ahmad et al. · 2013 [cited by applicant]
US 8495472B1 · Magerramov et al. · 2013 [cited by applicant]
US 8504797B2 · Mimatsu · 2013 [cited by applicant]
US 8706914B2 · Duchesneau · 2014 [cited by applicant]
US 8822155B2 · Sukumar et al. · 2014 [cited by applicant]
US 8918478B2 · Ozzie et al. · 2014 [cited by applicant]
US 9275063B1 · Natanzon · 2016 [cited by applicant]
US 9280678B2 · Redberg · 2016 [cited by applicant]
US 9395922B2 · Nishikido et al. · 2016 [cited by applicant]
US 9552299B2 · Stalzer · 2017 [cited by applicant]
US 9864874B1 · Shanbhag et al. · 2018 [cited by applicant]
US 10025673B1 · Maccanti et al. · 2018 [cited by applicant]
US 10102356B1 · Sahin et al. · 2018 [cited by applicant]
US 10152438B2 · Kumar et al. · 2018 [cited by applicant]
US 10185495B2 · Katsuki · 2019 [cited by applicant]
US 10324639B2 · Seo · 2019 [cited by applicant]
US 10567406B2 · Astigarraga et al. · 2020 [cited by applicant]
US 10810088B1 · Gu et al. · 2020 [cited by applicant]
US 10846137B2 · Vallala et al. · 2020 [cited by applicant]
US 10877683B2 · Wu et al. · 2020 [cited by applicant]
US 11106810B2 · Natanzon et al. · 2021 [cited by applicant]
US 20030056047A1 · Connor · 2003 [cited by examiner]
US 20050223149A1 · Matsuyama · 2005 [cited by examiner]
US 20080082700A1 · Ogawa · 2008 [cited by applicant]
US 20080126651A1 · Andre et al. · 2008 [cited by applicant]
US 20090013118A1 · Clark et al. · 2009 [cited by applicant]
US 20090013119A1 · Clark et al. · 2009 [cited by applicant]
US 20090138642A1 · Takahara · 2009 [cited by examiner]
US 20100070668A1 · Maruyama et al. · 2010 [cited by applicant]
US 20100191979A1 · Zipperer et al. · 2010 [cited by applicant]
US 20100250811A1 · Kawashita · 2010 [cited by examiner]
US 20100274940A1 · Ahmad et al. · 2010 [cited by applicant]
US 20140095752A1 · Cheshire · 2014 [cited by examiner]