Re: access to hard drives is "blocked" by writes to a flash drive

From: Alfred Perlstein <bright_at_mu.org>
Date: Tue, 05 Mar 2013 21:56:23 -0800
On 3/5/13 9:37 PM, Don Lewis wrote:
> On  5 Mar, Ian Lepore wrote:
>
>> I've debated playing with the bio work loop in mmcsd to see if moving
>> reads ahead of writes was helpful, but that seems like a dangerous path
>> to go down without some mitigation strategy to ensure that writes go
>> through eventually.  That seems especially important when you consider
>> that writes may be necessary to free up memory to un-wedge other things
>> that are waiting.  (Yeah, people don't often use sd cards as swap
>> storage, but I've done so in a pinch.)  All in all, I've never pursued
>> it because it feels like the wrong layer to address the problem at.
> I was initially concerned about the memory starvation problem, but I
> don't think it's an issue.  If memory is unavailable, then the upper
> layer won't be able to allocate the buffer memory for the read requests
> and will block before sending any more read commands down to the driver.
>
> I think that large numbers of reads causing write starvation are also
> unlikely.  A single thread can generate a large backlog of writes
> (unless the filesystem is mounted in sync mode), but it generally can't
> queue up a lot of reads because the thread is likely to block every time
> it issues a read request until it gets the data back from the drive.  If
> you are still worried about this, you could maintain separate read and
> write queues and alternate between them if both are nonempty.
>
>

What if we ran reads and writes over the loopback via TCP to get some 
kind of windowing?  :)

I am only half kidding... it would make sense to look to TCP to allow 
for some kind of window of IO based on throughput to the device.

-Alfred
Received on Wed Mar 06 2013 - 04:56:28 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:35 UTC