I run Debian Jessie on a quad-core i7 processor, which results in 8 cores being shown thanks to hyperthreading. On disk-heavy loads, all eight cores are maxed out with io-wait, as shown by htop. This results in a very sluggish interface (I use Gnome), and the system sometimes freezes completely until the I/O is complete.
How should I go about diagnosing this? Which settings can I tune to prevent this from occurring?
I use a single HDD, and a S.M.A.R.T check shows that its healthy.
Edit: To clarify a few things, I'm not interested in speeding up the I/O. I'd like to just have it run in the background while I do something else. Upgrading to an SSD is currently not an option for me.