-
Notifications
You must be signed in to change notification settings - Fork 3
Minio calculator
Krishna Srinivas edited this page May 21, 2021
·
13 revisions
Number of servers (num_servers)
Number of drives per server (drives_per_server)
Drive capacity (drive_capacity)
EC Stripe size (stripe_size)
EC Parity (parity_count)
num_servers_per_shard is calculated as follows:
var num_servers_per_shard = num_servers
num_shards = 1
while(num_servers_per_shard > 16) {
num_shards++
if ((num_servers % num_shards) == 0) {
num_servers_per_shard = num_servers/num_shards
}
}
if (num_servers_per_shard == 2 || num_servers_per_shard == 1 ) {
// raise exception
}
User will first input num_servers and drives_per_server - this will result in specific choices in the drop down list of stripe_size. Once the user selects a stripe_size, it will further result in specific choices in drop down list of parity_count Once the user selects parity_count, the rest of the fields (in the right side of the calculator gets calculated and filled)
stripe_size drop down values are populated like this:
if (num_shards == 1) {
stripe_size = [num_servers_per_shard*1, num_servers_per_shard*2, num_servers_per_shard*3 ...., num_servers_per_shard*n] WHERE num_servers_per_shard*n <= 16 AND (num_servers_per_shard*drives_per_server)%stripe_size == 0
} else {
stripe_size = [num_servers_per_shard]
}
(num_servers_per_shard*drives_per_server)%stripe_size == 0 : this ensures that all the drives get utilized
for ex.
if num_servers_per_shard=4 drives_per_server=12, stripe_size = [4,8,12,16]
if num_servers_per_shard=4 drives_per_server=10, stripe_size = [4,8]
if num_servers_per_shard=4 drives_per_server=7, stripe_size = [4]
parity_count = [2, 3, .. n] where n <= stripe_size/2
for ex.
if stripe_size = 4, then parity_count = [2]
if stripe_size = 5, then parity_count = [2]
if stripe_size = 6, then parity_count = [2,3]
if stripe_size = 7, then parity_count = [2,3]
if stripe_size = 8, then parity_count = [2,3,4]
if stripe_size = 9, then parity_count = [2,3,4]
if stripe_size = 10, then parity_count = [2,3,4,5]
Once all the fields on the left side of the calculator is filled, the fields on the right side can be calculated automatically.
dft = parity_count
if (dft == stripe_size/2) {
dft--
}
raw_capacity = num_servers*drives_per_server*drive_capacity
storage_efficiency = (stripe_size-parity_count)/stripe_size
usable_capacity = raw_capacity * storage_efficiency
drive_failure_tolerance = (dft/stripe_size)*num_servers*drives_per_server in total
( dft out of stripe_size )
server_failure_tolerance = (dft*num_servers_per_shard)/stripe_size)*num_shards in total
( (dft*num_servers_per_shard)/stripe_size out of num_servers_per_shard )