December 28th, 2013
OpenVZ precreated OS templates are tarballs of a pre-installed Linux distributions. While there are other ways to create a container, the easiest one is to take such a tarball and extract its contents. This is what takes 99.9% of
To save some space and improve download speeds, those tarballs are compacted with good ol'
centos-6-x86.tar.gz: 203M
centos-6-x86.tar.xz: 122M
centos-6-x86.tar: 554M
So, why don't we switch to xz which apparently looks way better? Well, there are other criteria to optimize for, except for file size and download speed. In fact, the main optimization target is container creation speed! I just ran a quick non-scientific test on my notebook in order to proof my words, measuring the time it takes to run
time tar xf tar.gz: ~7 seconds
time tar xf tar.xz: ~13 seconds
See, it takes twice the time if we switch to xz! Note that this ratio doesn't change much when I switched from fast SSD to (relatively slow) rotating hard disk drive:
time tar xf tar.gz: ~8 seconds
time tar xf tar.xz: ~16 seconds
Note, while I call it non-scientific, I still ran each test at least three times, with proper syncs, rms and cache drops in between.
Now, do we want to trade a double increase of container creation time for saving 80 MB of disk space. We sure don't!
vzctl create command execution.To save some space and improve download speeds, those tarballs are compacted with good ol'
gzip tool. For example, CentOS 6 template tar.gz is about 200 MB in size, while uncompacted tar would be about 550 MB. But why don't we use more efficient compacting tools, such as bzip2 or xz? Say, the same CentOS 6 tarball, compressed by xz, is as lightweight as 120 MB! Here are the numbers again:centos-6-x86.tar.gz: 203M
centos-6-x86.tar.xz: 122M
centos-6-x86.tar: 554M
So, why don't we switch to xz which apparently looks way better? Well, there are other criteria to optimize for, except for file size and download speed. In fact, the main optimization target is container creation speed! I just ran a quick non-scientific test on my notebook in order to proof my words, measuring the time it takes to run
tar xf on a tarball:time tar xf tar.gz: ~7 seconds
time tar xf tar.xz: ~13 seconds
See, it takes twice the time if we switch to xz! Note that this ratio doesn't change much when I switched from fast SSD to (relatively slow) rotating hard disk drive:
time tar xf tar.gz: ~8 seconds
time tar xf tar.xz: ~16 seconds
Note, while I call it non-scientific, I still ran each test at least three times, with proper syncs, rms and cache drops in between.
Now, do we want to trade a double increase of container creation time for saving 80 MB of disk space. We sure don't!

Comments
Do you still stand by your opinions above now in 2016?…