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 |
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.
|