US 11,748,277 B2
Client input/output (I/O) access rate variation compensation
Ryan James Goss, Prior Lake, MN (US); David W. Claude, Loveland, CO (US); Graham David Ferris, Savage, MN (US); Daniel John Benjamin, Savage, MN (US); and Ryan Charles Weidemann, Victoria, MN (US)
Assigned to Seagate Technology, LLC, Cupertino, CA (US)
Filed by Seagate Technology LLC, Cupertino, CA (US)
Filed on Mar. 5, 2020, as Appl. No. 16/810,357.
Prior Publication US 2021/0279188 A1, Sep. 9, 2021
Int. Cl. G06F 13/16 (2006.01); G06F 11/30 (2006.01); G06F 11/34 (2006.01); G06F 12/02 (2006.01)
CPC G06F 13/1668 (2013.01) [G06F 11/3034 (2013.01); G06F 11/3485 (2013.01); G06F 11/3495 (2013.01); G06F 12/0253 (2013.01); G06F 2212/1044 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A method, comprising:
monitoring a rate at which client I/O access commands are provided from a client to transfer data between the client and a non-volatile memory (NVM) of a storage device; and
adjusting a ratio of controller-generated background access commands to the client-generated I/O access commands to maintain completion rates of the client-generated I/O access commands at a predetermined level, the controller-generated background access commands including garbage collection (GC) read commands to retrieve current version data blocks from a first garbage collection unit (GCU) and GC write commands to subsequently store the retrieved current version data blocks in a second GCU while the first GCU is erased, wherein a rate at which the GC write commands are carried out is selected as a function of the GC read commands, and a rate at which the GC read commands are carried out is selected as a function of a detected type of workload presented to the storage device by the client, to prepare the storage device to service the client-generated I/O access commands, the controller-generated background access commands comprise garbage collection (GC) read commands to retrieve current version data blocks from a first garbage collection unit (GCU) and GC write commands to subsequently store the retrieved current version data blocks in a second GCU while the first GCU is erased, a rate at which the GC write commands are carried out is selected as a function of the GC read commands, and a rate at which the GC read commands are carried out is selected as a function of a detected type of workload presented to the storage device by the client.