extremely long blockages when doing random writes to SSD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Greetings,

we have an app that writes 4k blocks to an SSD partition with more or
less random seeks.  (For the curious: it's called "update engine" and
it's used to install a new Chrome OS version in the background.)  The
total size of the writes can be a few hundred megabytes.  During this
time, we see that other apps, such as the browser, block for seconds,
or tens of seconds.

I have reproduced this behavior with a small program that writes 2GB
worth of 4k blocks randomly to the SSD partition.  I can get apps to
block for over 2 minutes, at which point our hang detector triggers
and panics the kernel.

CPU: Intel Haswell i7
RAM: 4GB
SSD: 16GB SanDisk
kernel: 3.8

>From /proc/meminfo I see that the "Buffers:" entry easily gets over
1GB.  The problem goes away completely, as expected, if I use O_SYNC
when doing the random writes, but then the average size of the I/O
requests goes down a lot, also as expected.

First of all, it seems that there may be some kind of resource
management bug.  Maybe it has been fixed in later kernels?  But, if
not, is there any way of encouraging some in-between behavior?  That
is, limit the allocation of I/O buffers to a smaller amount, which
still give the system a chance to do some coalescing, but perhaps
avoid the extreme badness that we are seeing?

Thank you for any insight!

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]