Ionization

The performance of today's desktop computers is rarely, if ever, limited by raw CPU power or GFX speed. Instead, the bottleneck in most cases is the hard disk. Even if you own the latest quadcore CPU and 8 GB of RAM, your system will temporarily slow to a crawl once you try to, let's say, unpack a 4 GB 7z-archive on the disk which also holds your system. And, mind you, this will happen despite your state-of-the-art SAS RAID 0 capable of 175 MB/s serial read/write throughput.

An obvious hardware workaround consists of the use of two separate disks (or disk arrays), one dedicated to the system, the other for your data. As long as data are copied/packed/unpacked exclusively on the latter, the former is free to do whatever you want it to do (starting programs, for example). This strategy indeed frees your system from the worst lags. It does not help, of course, as soon as there is the need for massive I/O operations on your system disk such as as during the daily crontab runs at 4 am. 😏

A universal tool for dealing with this problem is ionice (the name comes from I/O nice, and is pronounced just like “ionize”). ionice allows you define the I/O priority of running processes only. That seems like an unfortunate restriction, but in fact, you can easily ionice an entire shell by issuing

ionice -c3 -p$$

with $$ being the pid of the current shell. Every command from that shell will now be ioniced. 😊

Now, unpacking the 4 GB 7z archive from above within an ioniced shell will not affect your system any more: it will silently proceed in the background without bothering you a bit. You'll be surprised by the silky smoothness of your system's reactions after ionicing it. 😉