Comment 18 for bug 755066

Revision history for this message
Colin Ian King (colin-king) wrote :

SRU Request:

System hangs have been observed when performing heavy I/O on
sandybridge systems with small memory footprints (for example,
less than 2GB of memory). kswapd consumes all the CPU and the
machine effectively becomes unusable because kswapd is missing
every cond_resched(). Also, we need to invert the logic in
commit 1741c877 ("mm: kswapd: keep kswapd awake for high-order
allocations until a percentage of the node is balanced") to
allow kswapd to go to sleep when balanced for high orders.

Testing involved multiply copying ~600MB of files from an install
image on a laptop with 2GB of memory. A 2.5 hour (150 iteration)
soak test cannot trip the hang with these patches, where as
without them the bug occurs in the first 5 to 30 iterations.

Test Case:

600MB of files from Natty ISO image copied to a 1GB ext4 partition on /dev/sda3 and copied via the attached bash
script to an ext4 partition on /dev/sda4. This script contains elements of the original ubiquity installer Python script
that originally tripped the hang.

Without the patches, system hangs after 5 to 30 iterations. kswapd chews up CPU and machine becomes unusable. with the
patch, script can run for hours and hundreds of copy iterations.