This is not perfect and will miss some relays in some cases, but this session relevance attempts to give the time per 1000 endpoints for UDP notificaitons, plus the number of computers per relay, plus the relay itself:
unique values of (it as string) of (items 1 of items 0 of it, tuple string items 0 of items 1 of it, tuple string items 1 of items 1 of it) of (items 1 of it, elements of items 0 of it) whose(item 1 of it contains item 0 of item 0 of it) of ( it, ( relay hostname of it | hostname of it, (it * second) of (it / 1000) of ( (1000 / item 0 of it) * item 1 of it ) of (unique value of (it as integer) of values of client settings whose(name of it = "_Enterprise Server_ClientRegister_BatchCount") of it | 100, unique value of (it as integer) of values of client settings whose(name of it = "_Enterprise Server_ClientRegister_BatchDelay") of it | 1000) of it ) of bes computers whose(relay server flag of it OR root server flag of it) ) of sets of (it as string) of (multiplicity of it, it) of unique values of relay servers of bes computers
This goes a step further and attempts to give the time for UDP notifications to go out based upon the actual number of clients using a particular relay:
( (item 0 of it * item 1 of it as integer) / 1000, items 1 of it, items 2 of it) of (items 1 of items 0 of it, tuple string items 0 of items 1 of it, tuple string items 1 of items 1 of it) of (items 1 of it, elements of items 0 of it) whose(item 1 of it contains item 0 of item 0 of it) of ( it, ( relay hostname of it | hostname of it, (it * second) of (it / 1000) of ( (1000 / item 0 of it) * item 1 of it ) of (unique value of (it as integer) of values of client settings whose(name of it = "_Enterprise Server_ClientRegister_BatchCount") of it | 100, unique value of (it as integer) of values of client settings whose(name of it = "_Enterprise Server_ClientRegister_BatchDelay") of it | 1000) of it ) of bes computers whose(relay server flag of it OR root server flag of it) ) of sets of (it as string) of (multiplicity of it, it) of unique values of relay servers of bes computers
A further refinement is to only get this info for computers which have checked into bigfix within the past 48 hours: (computers that have not checked in for too long will not have a client registration and will not get UDP messages sent to them)
( (item 0 of it * item 1 of it as integer) / 1000, items 1 of it, items 2 of it) of (items 1 of items 0 of it, tuple string items 0 of items 1 of it, tuple string items 1 of items 1 of it) of (items 1 of it, elements of items 0 of it) whose(item 1 of it contains item 0 of item 0 of it) of ( it, ( relay hostname of it | hostname of it, (it * second) of (it / 1000) of ( (1000 / item 0 of it) * item 1 of it ) of (unique value of (it as integer) of values of client settings whose(name of it = "_Enterprise Server_ClientRegister_BatchCount") of it | 100, unique value of (it as integer) of values of client settings whose(name of it = "_Enterprise Server_ClientRegister_BatchDelay") of it | 1000) of it ) of bes computers whose(relay server flag of it OR root server flag of it) ) of sets of (it as string) of (multiplicity of it, it) of unique values of relay servers of bes computers whose(last report time of it > (now - 2*day) )
I would say you probably don’t want any relay to have a result that is over an hour unless you really know you need it to be that slow, especially given the default should be around 20 seconds, you probably don’t need to make it 1 hour+ to get a noticeable reduction in peak load.