In prior OneFS releases, SyncIQ only permitted bandwidth settings at a global level, with reservations split evenly among all running policies. However, with OneFS 8.2, in addition to the global settings, administrators can now configure reservations on a per-policy basis, allowing much finer-grained bandwidth control.


synciq_bandwidth_reservation_1.png


SyncIQ will attempt to satisfy these reservation requirements based on what is already running and on the existing bandwidth rules and schedules. If a policy doesn’t have a specified reservation, it is allocated from the reserve specified in the global configuration. If there is insufficient bandwidth available to satisfy a policy’s requested amount, SyncIQ will evenly split the bandwidth across all running policies until they reach the requested reservation. The overarching goal here is to prevent starvation of policies.


Global Bandwidth Reservation is configured via the WebUI by browsing to 'Data Protection > SyncIQ > Performance Rules', or from the CLI via the ‘isi sync rules’ command. Bandwidth limits are typically configured and associated with a schedule. This option still applies in OneFS 8.2, creating a limit for the sum of all policies and applying a schedule.


For example:


synciq_bandwidth_reservation_2.png


Global bandwidth is applied as a combined limit of policies, allowing for a reservation configuration per policy. The recommended practice in OneFS 8.2 is to set a bandwidth reservation for each policy.


Per-policy bandwidth reservation configuration is performed via the OneFS command line interface (CLI), as follows:


1.     Configure one or more bandwidth rules:


# isi sync rules


2.     For each policy, configure desired bandwidth amount to reserve:


# isi sync policy <create | modify> --bandwidth-reservation=#


3.     Optionally, specify global configuration defaults:


# isi sync settings modify --bandwidth-reservation-reserve-percentage=#

# isi sync settings modify --bandwidth-reservation-reserve-absolute=#

# isi sync settings modify --clear-bandwidth-reservation-reserve


These settings relate to how much bandwidth should be allocated to policies that do not have a reservation.


By default, there is a 1% percentage reserve. Bandwidth calculations are based on the bandwidth rule that is set, not on actual network conditions. If a policy does not have a specified reservation, resources are allocated from the reserve defined in the global configuration settings.


If there is more bandwidth available than reservations require, the bandwidth is evenly split across all running policies. This is pre-OneFS 8.2 bandwidth rule behavior. For example, envisage the following scenario:


Total of 80 Mb/s bandwidth

 

 

Policy

Requested

Allocated

Policy 1

10 Mb/s

25 Mb/s

Policy 2

20 Mb/s

25 Mb/s

Policy 3

30 Mb/s

30 Mb/s

 

synciq_bandwidth_reservation_3.png

New in OneFS 8.2, if there is insufficient bandwidth available for all policies to get their requested amounts, the bandwidth is now evenly split across all running policies until they reach their requested reservation. This effectively ensures that the policies with the lowest requirements will reach their reservation before policies with larger reservations, helping to prevent bandwidth starvation.


For example, take the following scenario:

 

Total of 15 Mb/s bandwidth

 

 

Policy

Requested

Allocated

Policy 1

10 Mb/s

5 Mb/s

Policy 2

20 Mb/s

5 Mb/s

Policy 3

30 Mb/s

5 Mb/s

 

All three policies equally share the available 15 Mb/s of bandwidth (5 Mb/s each).


synciq_bandwidth_reservation_4.png

Imagine now that the total bandwidth allocation in the scenario above is increased from 15 Mb/s to 40 Mb/s:

 

Total of 40 Mb/s bandwidth

 

 

Policy

Requested

Allocated

Policy 1

10 Mb/s

10 Mb/s

Policy 2

20 Mb/s

15 Mb/s

Policy 3

30 Mb/s

15 Mb/s

 

The lowest reservation rule, policy 1, now receives its full allocation of 10 Mb/s, and the two other policies split the remaining bandwidth (15 Mb/s each).


synciq_bandwidth_reservation_5.png

 

There are several tools to aid comprehending and troubleshooting SyncIQ’s bandwidth allocation.


For example, the following command will display the SyncIQ policy configuration:


# isi sync policy view <name>


Bandwidth Rules can be viewed with this syntax:


# isi sync rules list


The following command will show the global SyncIQ un-allocated reserve settings


# isi sync settings view