Skip to content

Instantly share code, notes, and snippets.

@irvingpop
Last active November 19, 2018 03:23
Show Gist options
  • Save irvingpop/ee80fc71233403758afb to your computer and use it in GitHub Desktop.
Save irvingpop/ee80fc71233403758afb to your computer and use it in GitHub Desktop.
LVM + Snapshot performance testing
#!/usr/bin/env ruby
LVM_LV = '/dev/opscode/drbd'
LVM_LV_MOUNT = '/var/opt/opscode/drbd/data'
LVM_SNAP_SIZE = '16G'
FILE_SIZE_MB = 1024
NUM_FILES = 15
def write_files(iterations)
aggregate_speed = 0
(1..iterations).each do |iter|
start_time = Time.now
filename = ::File.join(LVM_LV_MOUNT, "testfle#{iter}.bin")
system("dd if=/dev/zero of=#{filename} bs=1M count=#{FILE_SIZE_MB} > /dev/null 2>&1")
end_time = Time.now
total_time = end_time - start_time
speed = FILE_SIZE_MB / total_time
aggregate_speed += speed
puts "WRITE TIME: #{total_time.round(2)} | SPEED: #{speed.round(2)} MB/s"
end
avg_speed = aggregate_speed / iterations
puts "AVERAGE WRITE SPEED: #{avg_speed.round(2)}"
end
def read_files(iterations)
aggregate_speed = 0
(1..iterations).each do |iter|
start_time = Time.now
filename = ::File.join(LVM_LV_MOUNT, "testfle#{iter}.bin")
system("cat #{filename} > /dev/null")
end_time = Time.now
total_time = end_time - start_time
speed = FILE_SIZE_MB / total_time
aggregate_speed += speed
puts "READ TIME: #{total_time.round(2)} | SPEED: #{speed.round(2)} MB/s"
end
avg_speed = aggregate_speed / iterations
puts "AVERAGE READ SPEED: #{avg_speed.round(2)}"
end
def cleanup_files(iterations)
(1..iterations).each do |iter|
filename = ::File.join(LVM_LV_MOUNT, "testfle#{iter}.bin")
system("rm -f #{filename}")
end
end
puts "Testing speed WITHOUT an LVM snapshot:"
write_files(NUM_FILES)
read_files(NUM_FILES)
cleanup_files(NUM_FILES)
puts "\n\nTesting speed with an LVM snapshot:"
system("lvcreate -L #{LVM_SNAP_SIZE} -s -n backup #{LVM_LV}")
write_files(NUM_FILES)
read_files(NUM_FILES)
cleanup_files(NUM_FILES)
system("lvremove -f /dev/opscode/backup")
[root@ip-rh-backend1 ~]# ruby lvm-snapshot-perftest.rb
Testing speed WITHOUT an LVM snapshot:
WRITE TIME: 0.77 | SPEED: 1331.2 MB/s
WRITE TIME: 3.64 | SPEED: 281.53 MB/s
WRITE TIME: 12.74 | SPEED: 80.35 MB/s
WRITE TIME: 13.6 | SPEED: 75.28 MB/s
WRITE TIME: 13.24 | SPEED: 77.35 MB/s
WRITE TIME: 13.96 | SPEED: 73.37 MB/s
WRITE TIME: 10.98 | SPEED: 93.25 MB/s
WRITE TIME: 10.35 | SPEED: 98.91 MB/s
WRITE TIME: 13.27 | SPEED: 77.18 MB/s
WRITE TIME: 14.98 | SPEED: 68.36 MB/s
WRITE TIME: 15.51 | SPEED: 66.02 MB/s
WRITE TIME: 17.93 | SPEED: 57.12 MB/s
WRITE TIME: 19.27 | SPEED: 53.13 MB/s
WRITE TIME: 18.16 | SPEED: 56.38 MB/s
WRITE TIME: 23.02 | SPEED: 44.48 MB/s
AVERAGE WRITE SPEED: 168.93
READ TIME: 55.52 | SPEED: 18.45 MB/s
READ TIME: 4.33 | SPEED: 236.75 MB/s
READ TIME: 4.31 | SPEED: 237.62 MB/s
READ TIME: 4.42 | SPEED: 231.69 MB/s
READ TIME: 4.47 | SPEED: 229.31 MB/s
READ TIME: 4.42 | SPEED: 231.67 MB/s
READ TIME: 4.48 | SPEED: 228.76 MB/s
READ TIME: 4.45 | SPEED: 229.96 MB/s
READ TIME: 4.43 | SPEED: 231.22 MB/s
READ TIME: 3.92 | SPEED: 260.94 MB/s
READ TIME: 4.34 | SPEED: 235.69 MB/s
READ TIME: 3.72 | SPEED: 275.24 MB/s
READ TIME: 4.4 | SPEED: 232.67 MB/s
READ TIME: 4.47 | SPEED: 229.22 MB/s
READ TIME: 4.65 | SPEED: 220.28 MB/s
AVERAGE READ SPEED: 221.96
Testing speed with an LVM snapshot:
Logical volume "backup" created
WRITE TIME: 0.78 | SPEED: 1321.26 MB/s
WRITE TIME: 0.73 | SPEED: 1395.2 MB/s
WRITE TIME: 30.53 | SPEED: 33.54 MB/s
WRITE TIME: 57.6 | SPEED: 17.78 MB/s
WRITE TIME: 45.21 | SPEED: 22.65 MB/s
WRITE TIME: 50.27 | SPEED: 20.37 MB/s
WRITE TIME: 51.37 | SPEED: 19.93 MB/s
WRITE TIME: 51.29 | SPEED: 19.96 MB/s
WRITE TIME: 53.17 | SPEED: 19.26 MB/s
WRITE TIME: 60.68 | SPEED: 16.88 MB/s
WRITE TIME: 45.62 | SPEED: 22.45 MB/s
WRITE TIME: 55.05 | SPEED: 18.6 MB/s
WRITE TIME: 46.44 | SPEED: 22.05 MB/s
WRITE TIME: 42.37 | SPEED: 24.17 MB/s
WRITE TIME: 47.0 | SPEED: 21.79 MB/s
AVERAGE WRITE SPEED: 199.73
READ TIME: 113.46 | SPEED: 9.03 MB/s
READ TIME: 4.62 | SPEED: 221.8 MB/s
READ TIME: 4.65 | SPEED: 220.21 MB/s
READ TIME: 4.68 | SPEED: 218.57 MB/s
READ TIME: 4.67 | SPEED: 219.32 MB/s
READ TIME: 4.62 | SPEED: 221.81 MB/s
READ TIME: 3.6 | SPEED: 284.26 MB/s
READ TIME: 0.29 | SPEED: 3554.93 MB/s
READ TIME: 1.41 | SPEED: 725.21 MB/s
READ TIME: 4.77 | SPEED: 214.58 MB/s
READ TIME: 4.73 | SPEED: 216.49 MB/s
READ TIME: 4.73 | SPEED: 216.32 MB/s
READ TIME: 4.83 | SPEED: 212.07 MB/s
READ TIME: 4.67 | SPEED: 219.14 MB/s
READ TIME: 4.67 | SPEED: 219.5 MB/s
AVERAGE READ SPEED: 464.88
[root@ip-rh-backend1 ~]# ruby lvm-snapshot-perftest.rb
Testing speed WITHOUT an LVM snapshot:
WRITE TIME: 0.7 | SPEED: 1464.17 MB/s
WRITE TIME: 3.25 | SPEED: 315.33 MB/s
WRITE TIME: 10.23 | SPEED: 100.12 MB/s
WRITE TIME: 14.94 | SPEED: 68.53 MB/s
WRITE TIME: 14.57 | SPEED: 70.27 MB/s
WRITE TIME: 12.85 | SPEED: 79.71 MB/s
WRITE TIME: 18.4 | SPEED: 55.66 MB/s
WRITE TIME: 17.9 | SPEED: 57.21 MB/s
WRITE TIME: 15.31 | SPEED: 66.88 MB/s
WRITE TIME: 14.46 | SPEED: 70.83 MB/s
WRITE TIME: 11.72 | SPEED: 87.36 MB/s
WRITE TIME: 14.37 | SPEED: 71.27 MB/s
WRITE TIME: 17.05 | SPEED: 60.07 MB/s
WRITE TIME: 18.09 | SPEED: 56.62 MB/s
WRITE TIME: 15.48 | SPEED: 66.14 MB/s
AVERAGE WRITE SPEED: 179.34
READ TIME: 43.14 | SPEED: 23.74 MB/s
READ TIME: 3.84 | SPEED: 266.92 MB/s
READ TIME: 3.86 | SPEED: 265.39 MB/s
READ TIME: 3.81 | SPEED: 268.56 MB/s
READ TIME: 3.77 | SPEED: 271.26 MB/s
READ TIME: 3.71 | SPEED: 276.37 MB/s
READ TIME: 3.82 | SPEED: 267.87 MB/s
READ TIME: 3.8 | SPEED: 269.29 MB/s
READ TIME: 3.79 | SPEED: 270.04 MB/s
READ TIME: 1.4 | SPEED: 730.02 MB/s
READ TIME: 2.97 | SPEED: 345.08 MB/s
READ TIME: 3.72 | SPEED: 275.31 MB/s
READ TIME: 3.45 | SPEED: 297.24 MB/s
READ TIME: 3.46 | SPEED: 295.86 MB/s
READ TIME: 3.75 | SPEED: 272.83 MB/s
AVERAGE READ SPEED: 293.05
Testing speed with an LVM snapshot:
Logical volume "backup" created
WRITE TIME: 0.72 | SPEED: 1432.06 MB/s
WRITE TIME: 0.75 | SPEED: 1368.8 MB/s
WRITE TIME: 20.23 | SPEED: 50.62 MB/s
WRITE TIME: 33.98 | SPEED: 30.13 MB/s
WRITE TIME: 34.96 | SPEED: 29.29 MB/s
WRITE TIME: 42.16 | SPEED: 24.29 MB/s
WRITE TIME: 34.06 | SPEED: 30.07 MB/s
WRITE TIME: 38.21 | SPEED: 26.8 MB/s
WRITE TIME: 33.3 | SPEED: 30.75 MB/s
WRITE TIME: 33.93 | SPEED: 30.18 MB/s
WRITE TIME: 39.29 | SPEED: 26.06 MB/s
WRITE TIME: 35.34 | SPEED: 28.97 MB/s
WRITE TIME: 36.19 | SPEED: 28.29 MB/s
WRITE TIME: 35.85 | SPEED: 28.56 MB/s
WRITE TIME: 34.35 | SPEED: 29.81 MB/s
AVERAGE WRITE SPEED: 212.98
READ TIME: 12.7 | SPEED: 80.62 MB/s
READ TIME: 85.13 | SPEED: 12.03 MB/s
READ TIME: 3.76 | SPEED: 272.14 MB/s
READ TIME: 3.81 | SPEED: 268.79 MB/s
READ TIME: 3.77 | SPEED: 271.32 MB/s
READ TIME: 3.73 | SPEED: 274.59 MB/s
READ TIME: 3.76 | SPEED: 272.02 MB/s
READ TIME: 1.89 | SPEED: 541.36 MB/s
READ TIME: 1.23 | SPEED: 833.23 MB/s
READ TIME: 3.7 | SPEED: 277.11 MB/s
READ TIME: 3.71 | SPEED: 275.78 MB/s
READ TIME: 3.68 | SPEED: 277.89 MB/s
READ TIME: 3.75 | SPEED: 272.82 MB/s
READ TIME: 3.8 | SPEED: 269.38 MB/s
READ TIME: 3.71 | SPEED: 276.02 MB/s
AVERAGE READ SPEED: 298.34
Logical volume "backup" successfully removed
Testing speed WITHOUT an LVM snapshot:
WRITE TIME: 0.8 | SPEED: 1274.99 MB/s
WRITE TIME: 0.83 | SPEED: 1227.21 MB/s
WRITE TIME: 5.78 | SPEED: 177.02 MB/s
WRITE TIME: 5.7 | SPEED: 179.73 MB/s
WRITE TIME: 6.06 | SPEED: 169.03 MB/s
WRITE TIME: 5.14 | SPEED: 199.37 MB/s
WRITE TIME: 6.29 | SPEED: 162.73 MB/s
WRITE TIME: 6.27 | SPEED: 163.4 MB/s
WRITE TIME: 6.4 | SPEED: 159.9 MB/s
WRITE TIME: 5.96 | SPEED: 171.68 MB/s
WRITE TIME: 6.05 | SPEED: 169.33 MB/s
WRITE TIME: 6.3 | SPEED: 162.63 MB/s
WRITE TIME: 6.96 | SPEED: 147.21 MB/s
WRITE TIME: 7.13 | SPEED: 143.68 MB/s
WRITE TIME: 6.92 | SPEED: 147.89 MB/s
AVERAGE WRITE SPEED: 310.39
READ TIME: 10.48 | SPEED: 97.68 MB/s
READ TIME: 11.86 | SPEED: 86.31 MB/s
READ TIME: 3.22 | SPEED: 317.87 MB/s
READ TIME: 3.22 | SPEED: 317.59 MB/s
READ TIME: 3.22 | SPEED: 318.48 MB/s
READ TIME: 3.26 | SPEED: 314.43 MB/s
READ TIME: 3.21 | SPEED: 319.03 MB/s
READ TIME: 3.22 | SPEED: 317.64 MB/s
READ TIME: 3.22 | SPEED: 317.7 MB/s
READ TIME: 3.23 | SPEED: 317.29 MB/s
READ TIME: 3.22 | SPEED: 318.36 MB/s
READ TIME: 3.27 | SPEED: 313.31 MB/s
READ TIME: 3.22 | SPEED: 317.8 MB/s
READ TIME: 3.22 | SPEED: 318.43 MB/s
READ TIME: 3.24 | SPEED: 316.53 MB/s
AVERAGE READ SPEED: 287.23
Testing speed with an LVM snapshot:
Logical volume "backup" created
WRITE TIME: 0.77 | SPEED: 1335.31 MB/s
WRITE TIME: 0.82 | SPEED: 1247.62 MB/s
WRITE TIME: 8.77 | SPEED: 116.81 MB/s
WRITE TIME: 19.43 | SPEED: 52.7 MB/s
WRITE TIME: 16.57 | SPEED: 61.81 MB/s
WRITE TIME: 16.02 | SPEED: 63.91 MB/s
WRITE TIME: 16.2 | SPEED: 63.19 MB/s
WRITE TIME: 15.98 | SPEED: 64.06 MB/s
WRITE TIME: 15.86 | SPEED: 64.56 MB/s
WRITE TIME: 16.28 | SPEED: 62.88 MB/s
WRITE TIME: 16.27 | SPEED: 62.95 MB/s
WRITE TIME: 16.58 | SPEED: 61.75 MB/s
WRITE TIME: 17.37 | SPEED: 58.95 MB/s
WRITE TIME: 17.89 | SPEED: 57.23 MB/s
WRITE TIME: 17.71 | SPEED: 57.81 MB/s
AVERAGE WRITE SPEED: 228.77
READ TIME: 20.03 | SPEED: 51.12 MB/s
READ TIME: 6.3 | SPEED: 162.55 MB/s
READ TIME: 21.52 | SPEED: 47.59 MB/s
READ TIME: 3.12 | SPEED: 328.47 MB/s
READ TIME: 3.13 | SPEED: 326.87 MB/s
READ TIME: 3.17 | SPEED: 323.2 MB/s
READ TIME: 3.14 | SPEED: 326.16 MB/s
READ TIME: 3.15 | SPEED: 324.99 MB/s
READ TIME: 3.18 | SPEED: 322.46 MB/s
READ TIME: 3.16 | SPEED: 323.57 MB/s
READ TIME: 3.16 | SPEED: 323.63 MB/s
READ TIME: 3.15 | SPEED: 325.5 MB/s
READ TIME: 3.15 | SPEED: 324.69 MB/s
READ TIME: 3.12 | SPEED: 328.12 MB/s
READ TIME: 3.17 | SPEED: 323.39 MB/s
AVERAGE READ SPEED: 277.49
Logical volume "backup" successfully removed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment