Solved

Managing the maximum concurrent tasks on repository level.

  • 12 September 2023
  • 10 comments
  • 561 views

Userlevel 2

Hi all,

 

I am looking for the way to manage the number of concurrent tasks on repository. Two questions regarding it.

  1. I was expecting it to be the option of CBackupRepository object but doesn’t seems so. So how to retrieve the current configured number?
  2. Whats the difference between LimitConcurrentJobs and MaxConcurrentJobs options in Set-VBRBackupRepository commandlet and which on is actually reflect the option in UI?

Cheers,

Alexey

icon

Best answer by HangTen416 12 September 2023, 03:43

View original

10 comments

Userlevel 7
Badge +19

Hi @SC Support - the Max Concurrent Tasks option is for the Proxy, and defines you cannot have any more tasks run in parallel than what you configure this setting to be. In other words, it’s an upper limit based on the compute resources of a Proxy server. A Task is defined by Veeam as analogous to processing 1 VM hard disk. Reference here.

Limit Maximum Concurrent Tasks is similar to the above, but for a Repository. The setting controls the load put on the Repository-backed storage device to help prevent possible timeouts of storage I/O operations

 

Userlevel 7
Badge +19

It appears the first option is a Parameter defining how many actual Backup Jobs (I’m guessing here) can use the Repository; whereas the MaxConcurrentJobs is an Int32 used by LimitConcurrentJobs switch defining the amount (max) of concurrent Tasks (as I described what those are above) can run against the Repository. Reference → Veeam PoSH Guide
 

 

Userlevel 7
Badge +10

It looks like the first parameter determines if the concurrent tasks will be limited (equivalent to checking the box). The second parameter sets the maximum number of concurrent tasks. I assume if you set the second parameter but don’t set the first one, it will be ignored (i.e. the box is not checked)

Userlevel 2

Thank you Shane and Hang. It is make sense the first one is the switch and second is actual number of “streams”.  I guess the first question has no answer? How to find the current status?

Maybe I should give more details on the task I a am trying to solve. Running a backup of physical Windows Failover Cluster using managed agents. Problem is my storage and networks seems too good for relatevely old physical servers I am backing up - they are running on 100% CPU during the Incremental job. its critical OT environment so not really acceptable. I want to run the script at the beginning of the job, limit the number of tasks to 1 (cluster has about 10 drives so the utilisation) and return it back to my default 5 tasks after. But want to check the setting at the beginning and end of the script but can’t find how to do it.  

I am aware about the Throttle Agent activity option - I think it is homeopathy unless I can specify the number of cores or max CPU percentage to use, so not acceptable.

 

Userlevel 7
Badge +21

I think Hin has it right as that is how it should work.

Userlevel 2

Raised the support case to answer the first question. Will update here if Support knows the answer.

Userlevel 7
Badge +22

Why not create another repository on the same storage with maximum concurrent tasks set to 1 and let the cluster backup to that rather than constantly changing the number of simultaneous tasks on your repository?

 

You could also look to utilise a maximum MBps speed to keep IO below saturating levels. What storage are you using? If your storage supports Veeam integration you might even be able to use storage snapshots to offload processing further.

Userlevel 2

Because of its Immutable Storage Physical Server. All the available space has already allocated. I thought about throughput management but its a plan B if VEEAM is having a gap with managing the repository via PowerShell. I am expecting limiting the backup to one drive by drive will let me finish backup job faster.

Userlevel 5
Badge +2

Try this regarding your first question:

$x = Get-VBRBackupRepository -Name "Your Repository Name"

$x.Options.IsTaskCountUnlim # false if checkbox is checked
$x.Options.MaxTaskCount # configured number of task slots

 

Userlevel 2

It worked, thank you Matt!

Comment