Max Service Discriminators

Max Service Discriminators

book

Article ID: KB0089477

calendar_today

Updated On:

Products Versions
TIBCO DataSynapse GridServer -
Not Applicable -

Description

Resolution:
The property was introduced in GS5.0 to work around a specific fairly-common issue in which engines are routed to brokers that cannot run tasks due to certain discriminators applied to them.
Example 1: Engines that are homed to Broker B1 can only run excel services. Broker B2 shares its engines with B1 but sends a number of engines that cannot take any tasks because those engines cannot run excel services. This means that the engines from B2 will just 'sit' and wait without taking any work. With the setting in place, B1 will notify the Engine Balancer that it is currently using a discriminator that should be considered. This will optimize the routing decision the balancer needs to take. Only engines from B2 that respect the discriminator on B1 will be routed.

Let's consider a case where many discriminators are in place, eg. 100. The Balancer would be extremely inefficient if it had to consider all 100 discriminators. For every engine, consider every discriminator and compare its properties. The Max Service Discriminators setting allows one to control the maximum number of discriminators that the balancer will look into. When this number is reached, the balancer will ignore the next ones and will not take them into account when routing engines to brokers. All services in excess from "max service discriminators" are not considered. However, the broker will still take engines, however random ones.

When the max number is reached the following message will appear in the log: "Maximum number of discriminators (value) is reached when collecting service level discriminators"

(1) What is the impact of increasing "Max Service Discriminators" to the director cpu-wise and memory-wise?
The higher the value is set, the more balancing information needs to be sent to the director and considered by the balancer. Setting the value too high will result in a performance penalty. This setting is expected to limit CPU and network usage during balancing, hence setting it too high will be counter-productive.

(2) What are Tibco recommendations for the "Max Service Discriminators" value, on a reasonable sized  shared grid?
To consider what's the most efficient value, one needs to look into the existing discriminators and the potential engines that will qualify to them. The bigger the difference - i.e. many discriminators, few potential engines - the bigger the setting should be and consequently the bigger the penalty on balancing will be. To minimize the penalty, decrease the value and accept the likelihood of having disqualified engines sitting idle on a broker with pending requests.

(3) How does the broker pick/order the services and discriminators that will be reported to the director balancer component?  
Which discriminators are reported do not depend on priority etc. This is based purely on the sequence of the submission. Meaning a "first come first serve" basis applies.

Issue/Introduction

Max Service Discriminators