You are here

Git SSD Speed comparison

Benjamin's Personal Blog - Mon, 13/12/2010 - 6:27pm
SSD's provide significant improvement in disk IO. How well does that translate over when using Git? A lot.

After watching prices drop all year long during black friday I picked up a OCZ-Vertex2 120G SSD. I installed it in my current MacBook Pro (2.66 GHz i7 with and 4GB of ram) using a MCE OptiBay to replacing the DVD drive so I can have both a HD and a SSD installed at the same time.

All tests were run in Snow Leopard using the Git pre-built binary package. The HD is a 500G Toshiba MK5055GSXF with a Negotiated Link Speed of only 1.5 Gigabit.

Test 1
Creating a new repo, populating it with the contents of linux-, add commit, create a branch and run git status.

The git add took around ten minutes to run on the hard drive compared to the 40 seconds for the ssd. Committing was also 1/3 of the time taking only 20 seconds v.s. over a minute.

The ten minutes to perform the git add operation on the hd made me think something must be broke and it just seems beyond slow. Turning on/off spotlight and everything I can think of in OS X makes no real difference. To further eliminate variables I mounted an old MacBook HD (Toshiba MK8034GSX 80GB 5400 RPM) I had lying around using a USB connection to my mac and found the following results:
git add - 6m30.422s
git commit - 1m47.226s

In conclusion on OS X slow 5400rpm drives produce slow results and ssd are really that much faster. Moving on...

Zooming in on the graph we can see the improvements to the other commands. The biggest win for me is that git status, a command I run all of the time (I have aliased to gs) runs in half of the time.

Test 2
Cloning a large repository from a local network was the next test. I was hoping to see improved performance on verification and it was faster, but compared to everything run on the server and transfer speeds the seven seconds saved wasn't that much compared to the seven minutes the server (a slow arm based box) was preparing the repo.

Test 3

Removing the network here is a clone of the Qt repository from the hard drive to the ssd and hard drive to hard drive. Followed by some simple walking.

Walking was faster on the SSD, but as soon as the data got into ram it was equally fast for them both.

As expected Git runs faster when its data is on an SSD. For operations like git branch which just create a file with a sha in it the performance isn't much different, but when running an io intensive operation like git add you can see that it is extremely worth it. Git status was probably the big winner by getting a speed improvement of around 50%.

Averaged data:

Creating a new repo and populating it with the contents of linux-

init 0m0.011s 0m0.010s
add 11m2.903s 0m40.041s
status 0m2.323s 0m1.138s
commit 1m4.097s 0m20.410s
status 0m2.027s 0m1.532s
branch 0m0.039s 0m0.009s
checkout 0m1.465s 0m1.473s
status 0m2.414s 0m1.073s

clone qt-snapshots from local network
clone2 7m21.066s 7m13.310s
rev-lis 0m0.082s 0m0.077s

cloning qt (32611 commits) from hd with --no-hardlinks
clone 0m36.770s 0m13.050s
log 0m1.042s 0m0.977s
rev-list 0m1.697s 0m0.767s

For those on Linux checkout some linux ssd tweaks.