Linux is terrible at handling IO to USB drives on my machine
Normally I don't do much with USB disks on my machine,
either flash drives or regular hard drives. When I do, it's mostly
to do bulk read or write things such as blanking a disk or writing
an installer image to a flash drive, and I've learned the hard
way to force direct IO through
dd when I'm doing this kind of
Today, for reasons beyond the scope of this entry, I was copying a
directory of files to a USB flash drive, using USB 3.0 for once.
This simple operation absolutely murdered the responsiveness of my machine. Even things as simple as moving windows around could stutter (and fvwm doesn't exactly do elaborate things for that), never mind doing anything like navigating somewhere in a browser or scrolling the window of my Twitter client. It wasn't CPU load, because ssh sessions to remote machines were perfectly responsive; instead it seemed that anything that might vaguely come near doing filesystem IO was extensively delayed.
ionice was ineffective. I'm not really surprised,
since the last time I looked it didn't do anything for software
While hitting my local filesystems with a heavy IO load will slow
other things down, it doesn't do it to this extent, and I wasn't
doing anything particularly IO-heavy in the first place (especially
since the USB flash drive was not going particularly fast). I also
tried out copying a few (big) files by hand with
dd so I could
oflag=direct, and that was significantly better, so I'm
pretty confident that it was the USB IO specifically that was the
I don't know what the Linux kernel is doing here to gum up its works so much, and I don't know if it's general or specific to my hardware, but it's been like this for years and I wish it would get better. Right now I'm not feeling very optimistic about the prospects of a USB 3.0 external drive helping solve things like my home backup headaches.
(I took a look with
vmstat to see if I could spot something like
a high amount of CPU time in interrupt handlers, but as far as I
could see the kernel was just sitting around waiting for IO all the
PS: We have more modern Linux machines with USB 3.0 ports at work, so I suppose I should do some tests with one just to see. If this Linux failure is specific to my hardware, it adds some more momentum for a hardware upgrade (cf).
(This elaborates on some tweets of mine.)