Poor desktop responsiveness with background I/O-operations

Ulrich Lukas
2009-09-20T03:28:36Z

[-- Attachment #1: Type: text/plain, Size: 1848 bytes --]

Hi,

using a recent hard-/software setup, I observed that continuous
read/write operations severely degrade the overall system responsiveness
in typical desktop-PC use cases.

Merely doing write/read operations on a data volume leads to stuck text
and mouse cursors, seconds-long delays for simple window-context
switches in X11, dropouts in low-resolution video playback etc.

Test case:
- 64-bit dual-core PC, SATA harddrive, plenty of free RAM
- vanilla Linux 2.6.31, Kubuntu 9.10 packages, all software 64-bit

How to reproduce:
- start KDE/GNOME-session
- open a terminal window and do as a non-root user:
dd if=/dev/zero of=/home/john-doe/testfile
(or dd if=/home/john-doe/big-testfile of=/dev/null)

- a real use scenario would be a daily disk-backup or the
simple extraction of a tarball containing slightly bigger files

Observation:
- The system becomes _really_ slow as described above; unusable for
any multimedia tasks.

- Using an encrypted (dm-crypt/LUKS) /home (e.g. on mobile computers)
compounds the issue to a painful extent.

Possible culprits (I'm guessing) are the Linux I/O- or CPU scheduler.

I realize that a single heavyweight transfer slows down I/O for the
corresponding transactions/processes/volumes etc.

But there needs to be a fair distribution of I/O or CPU time which
leaves enough for other basic operations. And this doesn't seem to be
the case with recent Linux versions.

On a side note, I've tried the BFS-patches (bfs-221 on 2.6.31): This
yields significantly higher throughput when using disk encryption (50%
improvement with dm-crypt/LUKS, 512 bit aes-xts-plain cipher mode). But
with these patches, the responsiveness was even worse during my quick
test. Switching to a text-mode console: several /minutes/ delay...

I'm attaching my .config for linux 2.6.31 (grep ^C and bzip2-ed)

[-- Attachment #2: kernelconfig-linux-2.6.31.bz2 --]
[-- Type: application/octet-stream, Size: 13204 bytes --]