CPC G06F 12/0253 (2013.01) [G06F 3/0608 (2013.01); G06F 3/0644 (2013.01); G06F 3/0679 (2013.01)] | 14 Claims |
1. A method comprising:
receiving, at a comparator in a closed-loop garbage collection system, a first target time, the first target time indicating when a first superblock of memory is expected to be filled based on a first write rate for a first write cursor writing data units into the first superblock;
receiving, at the comparator, a negative loop feedback, wherein the negative loop feedback includes an adjustable empty superblock delivery time indicating a time prior to the first target time to deliver a free empty superblock to the first write cursor, wherein the adjustable empty superblock delivery time is based on an amount of time to erase the data units from a first garbage collection superblock to produce the free empty superblock;
determining, by the comparator, a first garbage collection rate based on the first target time and the negative loop feedback, the first garbage collection rate calculated to provide the free empty superblock to the first write cursor within a range of time of the first target time, wherein the range of time is based on the adjustable empty superblock delivery time;
sending instructions to a garbage collection manager to perform a garbage collection process at the first garbage collection rate, wherein an outcome of the garbage collection process is incorporated into the negative loop feedback sent to the comparator;
receiving, by the comparator from a write cursor collision detector, an indication that a second target time is within a collision range of the first target time, the second target time indicating when a second superblock is expected to be filled based on a second write rate for a second write cursor writing data units into the second superblock; and
modifying the first garbage collection rate to a second garbage collection rate based on the first target time and the second target time to provide a first empty superblock to the first write cursor prior to the first target time and a second empty superblock to the second write cursor prior to the second target time.
|