Redo how BackgroundWrite handles I/O interactivity/throughput
Redo how BackgroundWrite handles I/O interactivity/throughput

1. Rename priorityPct to bandwidthPct. This represents the total amount
of available average bandwidth which we aim to use.

2. Remove "charityRate" and "charityTime"

3. Add "numChunksRateSmoothing" - This defines the number of chunks over
which we determine the current throughput rate on the system. Call the
bandwidth "rate", and the amount of time in this period, "delta". After
we write the first #numChunksRateSmoothing and determine available
bandwidth, we will sleep each block/chunk ( delta * (1.00 - (bandwidthPct /
100)) ) seconds, in order to utilize a total of "bandwidthPct"% of available
bandwidth.

kata198/python-nonblock,kata198/python-nonblock