btrfs-benchmark.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # !/bin/sh
  2. set -e
  3. # Benchmarks run on a Ubuntu 14.04 VM with 2 cores and 4 GiB of RAM.
  4. # The VM is running on a Macbook Pro with a 3.1 GHz Intel Core i7 processor and
  5. # 16 GB of RAM and an SSD.
  6. # silesia is a directory that can be downloaded from
  7. # http://mattmahoney.net/dc/silesia.html
  8. # ls -l silesia/
  9. # total 203M
  10. # -rwxr-xr-x 1 terrelln 9.8M Apr 12 2002 dickens
  11. # -rwxr-xr-x 1 terrelln 49M May 31 2002 mozilla
  12. # -rwxr-xr-x 1 terrelln 9.6M Mar 20 2003 mr
  13. # -rwxr-xr-x 1 terrelln 32M Apr 2 2002 nci
  14. # -rwxr-xr-x 1 terrelln 5.9M Jul 4 2002 ooffice
  15. # -rwxr-xr-x 1 terrelln 9.7M Apr 11 2002 osdb
  16. # -rwxr-xr-x 1 terrelln 6.4M Apr 2 2002 reymont
  17. # -rwxr-xr-x 1 terrelln 21M Mar 25 2002 samba
  18. # -rwxr-xr-x 1 terrelln 7.0M Mar 24 2002 sao
  19. # -rwxr-xr-x 1 terrelln 40M Mar 25 2002 webster
  20. # -rwxr-xr-x 1 terrelln 8.1M Apr 4 2002 x-ray
  21. # -rwxr-xr-x 1 terrelln 5.1M Nov 30 2000 xml
  22. # $HOME is on a ext4 filesystem
  23. BENCHMARK_DIR="$HOME/silesia/"
  24. N=10
  25. # Normalize the environment
  26. sudo umount /mnt/btrfs 2> /dev/null > /dev/null || true
  27. sudo mount -t btrfs $@ /dev/sda3 /mnt/btrfs
  28. sudo rm -rf /mnt/btrfs/*
  29. sync
  30. sudo umount /mnt/btrfs
  31. sudo mount -t btrfs $@ /dev/sda3 /mnt/btrfs
  32. # Run the benchmark
  33. echo "Compression"
  34. time sh -c "for i in \$(seq $N); do sudo cp -r $BENCHMARK_DIR /mnt/btrfs/\$i; done; sync"
  35. echo "Approximate compression ratio"
  36. printf "%d / %d\n" \
  37. $(df /mnt/btrfs --output=used -B 1 | tail -n 1) \
  38. $(sudo du /mnt/btrfs -b -d 0 | tr '\t' '\n' | head -n 1);
  39. # Unmount and remount to avoid any caching
  40. sudo umount /mnt/btrfs
  41. sudo mount -t btrfs $@ /dev/sda3 /mnt/btrfs
  42. echo "Decompression"
  43. time sudo tar -c /mnt/btrfs 2> /dev/null | wc -c > /dev/null
  44. sudo rm -rf /mnt/btrfs/*
  45. sudo umount /mnt/btrfs
  46. # Run for each of -o compress-force={none, lzo, zlib, zstd} 5 times and take the
  47. # min time and ratio.
  48. # Ran zstd with compression levels {1, 3, 6, 9, 12, 15}.
  49. # Original size: 2119415342 B (using du /mnt/btrfs)
  50. # none
  51. # compress: 4.205 s
  52. # decompress: 3.090 s
  53. # ratio: 0.99
  54. # lzo
  55. # compress: 5.328 s
  56. # decompress: 4.793 s
  57. # ratio: 1.66
  58. # zlib
  59. # compress: 32.588 s
  60. # decompress: 8.791 s
  61. # ratio : 2.58
  62. # zstd 1
  63. # compress: 8.147 s
  64. # decompress: 5.527 s
  65. # ratio : 2.57
  66. # zstd 3
  67. # compress: 12.207 s
  68. # decompress: 5.195 s
  69. # ratio : 2.71
  70. # zstd 6
  71. # compress: 30.253 s
  72. # decompress: 5.324 s
  73. # ratio : 2.87
  74. # zstd 9
  75. # compress: 49.659 s
  76. # decompress: 5.220 s
  77. # ratio : 2.92
  78. # zstd 12
  79. # compress: 99.245 s
  80. # decompress: 5.193 s
  81. # ratio : 2.93
  82. # zstd 15
  83. # compress: 196.997 s
  84. # decompress: 5.992 s
  85. # ratio : 3.01