Finally, the length of an epoch, EPOCH_LEN, is a configurable parameter.
At every epoch, we need to run the DRF algorithm and possibly change the bandwidth and memory allocation.
Thus, EPOCH_LEN should be longer than the time taken to perform these operations.
Our measured time is 3\(\mu s\) for running the DRF algorithm, negligible for changing bandwidth, and 15-20\(\mu s\) for swapping out a 2 MB page.
Note that swapping out memory can be done in a lazy fashion and does not complete in an epoch.
Meanwhile, it is desirable to set a short EPOCH_LEN to quickly adapt to load variations and to update rate allocations approximately once per average RTT [1]}, [2]}.
Thus, we set the default value of EPOCH_LEN to 20\(\mu s\).
