Sanitize input and check for pg_size==0
parent
56df2248ef
commit
f628587f10
16
afr.js
16
afr.js
|
@ -58,10 +58,16 @@ function failure_rate_fullmesh(n, a, f)
|
||||||
// and decreased linearly by reduced rebalance time.
|
// and decreased linearly by reduced rebalance time.
|
||||||
//
|
//
|
||||||
// TODO Possible idea for future: account for average server downtime during year.
|
// TODO Possible idea for future: account for average server downtime during year.
|
||||||
function cluster_afr({ n_hosts, n_drives, afr_drive, afr_host, capacity, speed, disk_heal_hours, host_heal_hours,
|
function cluster_afr(params)
|
||||||
ec, ec_data, ec_parity, replicas, pgs = 1, osd_rm, degraded_replacement, down_out_interval = 0 })
|
|
||||||
{
|
{
|
||||||
const pg_size = (ec ? ec_data+ec_parity : replicas);
|
for (let k in params)
|
||||||
|
{
|
||||||
|
params[k] = k == 'afr_drive' || k == 'capacity' || k == 'speed' || k == 'disk_heal_hours'
|
||||||
|
? Number(params[k]) : (params[k]|0);
|
||||||
|
}
|
||||||
|
let { n_hosts, n_drives, afr_drive, afr_host, capacity, speed, disk_heal_hours, host_heal_hours,
|
||||||
|
ec, ec_data, ec_parity, replicas, pgs = 1, osd_rm, degraded_replacement, down_out_interval = 0 } = params;
|
||||||
|
const pg_size = (ec ? parseInt(ec_data)+parseInt(ec_parity) : parseInt(replicas));
|
||||||
// <peers> is a number of non-intersecting PGs that a single OSD/drive has on average
|
// <peers> is a number of non-intersecting PGs that a single OSD/drive has on average
|
||||||
const peers = avg_distinct((n_hosts-1)*n_drives, pgs*(pg_size-1))/(pg_size-1);
|
const peers = avg_distinct((n_hosts-1)*n_drives, pgs*(pg_size-1))/(pg_size-1);
|
||||||
// <host_peers> is a number of non-intersecting PGs that a single host has on average
|
// <host_peers> is a number of non-intersecting PGs that a single host has on average
|
||||||
|
@ -101,10 +107,14 @@ function cluster_afr_bruteforce(params)
|
||||||
{
|
{
|
||||||
params[k] = k == 'afr_drive' || k == 'capacity' || k == 'speed' || k == 'disk_heal_hours'
|
params[k] = k == 'afr_drive' || k == 'capacity' || k == 'speed' || k == 'disk_heal_hours'
|
||||||
? Number(params[k]) : (params[k]|0);
|
? Number(params[k]) : (params[k]|0);
|
||||||
|
if (params[k] < 0)
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
let { n_hosts, n_drives, afr_drive, capacity, speed, disk_heal_hours,
|
let { n_hosts, n_drives, afr_drive, capacity, speed, disk_heal_hours,
|
||||||
ec, ec_data, ec_parity, replicas, pgs = 1, osd_rm, degraded_replacement, down_out_interval = 0 } = params;
|
ec, ec_data, ec_parity, replicas, pgs = 1, osd_rm, degraded_replacement, down_out_interval = 0 } = params;
|
||||||
const pg_size = (ec ? ec_data+ec_parity : replicas);
|
const pg_size = (ec ? ec_data+ec_parity : replicas);
|
||||||
|
if (pg_size <= 0)
|
||||||
|
return 0;
|
||||||
let disk_heal_time;
|
let disk_heal_time;
|
||||||
if (speed)
|
if (speed)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue