1.9 KiB
Filesystem Performance Benchmarking
Filesystem performance has a big impact on overall GitLab performance, especially for actions that read or write to Git repositories. This information will help benchmark filesystem performance against known good and bad real-world systems.
Normally when talking about filesystem performance the biggest concern is with Network Filesystems (NFS). However, even some local disks can have slow IO. The information on this page can be used for either scenario.
Executing benchmarks
The following one-line commands provide a quick benchmark for filesystem write and read performance. This will write 1,000 small files to the directory in which it is executed, and then read the same 1,000 files.
-
Change into the root of the appropriate repository storage path.
-
Create a temporary directory for the test so it's easy to remove the files later:
mkdir test; cd test -
Run the command:
time for i in {0..1000}; do echo 'test' > "test${i}.txt"; done -
To benchmark read performance, run the command:
time for i in {0..1000}; do cat "test${i}.txt" > /dev/null; done -
Remove the test files:
cd ../; rm -rf test
The output of the time for ... commands will look similar to the following. The
important metric is the real time.
$ time for i in {0..1000}; do echo 'test' > "test${i}.txt"; done
real 0m0.116s
user 0m0.025s
sys 0m0.091s
$ time for i in {0..1000}; do cat "test${i}.txt" > /dev/null; done
real 0m3.118s
user 0m1.267s
sys 0m1.663s
From experience with multiple customers, this task should take under 10 seconds to indicate good filesystem performance.
NOTE: Note: This test is naive and only evaluates write performance. It's possible to receive good results on this test but still have poor performance due to read speed and various other factors.