darcs, hg, git and bzr on low-end
On 2006-09-24, era commented on this post, saying that bzr is not usable on low end machines. era had a 133MHz laptop with 64MB RAM. He was on a Ubuntu Dapper without X and found that both SVK and bzr fell on their faces after having consumed up all memory. (He has 1G swap.) Then he tried darcs and found darcs just works.
This comment was post on 2006-09-24, roughly two years ago. What’s up now? And what about hg and git? I decided to do a test on my virtual machine.
I tested darcs, hg, git, and bzr on Debian Etch: (some versions are in backports)
- darcs 1.0.9~rc1-0.1
- mercurial 0.9.1-1+etch1
- git 1:1.5.5.1-1~bpo40+1
- bzr 1.5-1~bpo40+1
My virtual machine has 64 MB RAM, 256MB swap and a CPU which is something like old Celeron before the P III generation. Also, I set a more strict limit on the user who is running VCSes. (Much stricter than the default setting on Linux.)
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) 102400 max nice (-e) 0 file size (blocks, -f) 2048 pending signals (-i) 4096 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) 1000 open files (-n) 256 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 max rt priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 100 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
I cloned a 49MB darcs repository and a 36MB hg repository. They all work out.
When I’m trying to clone a 27M git repository, I got a “File size limit exceeded” error. Similarly, I got a “File too large” error when cloning a 46M bzr repository. After changing to Linux’s default ulimit settings:
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited max nice (-e) 0 file size (blocks, -f) unlimited pending signals (-i) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) unlimited max rt priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
git works. However bzr hung out for more than 5 hours. I have to manually kill it at last. (This is not a network problem. Cloning the same bzr repository costs several minutes on a 1.33GHz, 512MB machine.) Then I tried to clone a 15M bzr repository. This time bzr does work on the machine.
So the conclusion is that darcs and hg are more light weight choices than git and bzr. In a limited low end box, git is still acceptable, while bzr is not.
Two years passed and bzr still doesn’t work well on low end boxes.
Leave a Reply