Evaluation Cycle Question

The client inspector has a property evaluationcycle, but the BigFix Developer docs do not specify the units of time. What are they?

BigFix Developer Link: https://developer.bigfix.com/relevance/reference/client.html#evaluationcycle-of-client-evaluation-cycle

I’m asking because I wasn’t sure if the BigFix.Me “BES Client Info - Universal” analysis properties here are reporting seconds or minutes.

BigFix.Me “BES Client Info - Universal” analysis:
https://bigfix.me/analysis/details/2994765

It’s minutes.

An Evaluation cycle represents a complete run through all the content available on the BigFix Client, measured in milliseconds. These inspectors return statistics based on the time sampled whenever the client returns to the beginning of its content set. These inspectors require a Client context.

ms / 1000 / 60

https://developer.bigfix.com/relevance/reference/evaluation-cycle.html

2 Likes

evaluation cycle is a complex type that itself has a lot of properties. Use the Introspector properties of type "evaluation cycle" to list all of them; most of them return Time Interval types.

q: average duration of evaluationcycle of client
A: 01:30:29.991859
T: 0.021 ms

q: average duration of evaluationcycle of client / minute
A: 90
T: 0.029 ms
3 Likes

This is something I’ve been looking at for the past few days as we see some agents showing average eval cycles of more than 8 hrs, where other systems processing set of content is between the 30 and 60 mins.

I’m curious with one aspect of the “track fixlets of evaluation cycle” inspection. When the data reported shows a the evaluation time for property of an analysis, it that based on just the cycles used during the wait idle time or is it total time taken of wait idle + sleep idle. i.e. wait idle is 10ms, sleep idle is 480ms. If property 1 of analysis 123 has taken 490ms (hypothetically speaking), is that 49 x 10ms work idle cycles, which means realistically its required a time of 49 * work idle value + 48 * sleep idle value, ie 23530ms of actual time or is it 1 work idle of 10 ms + 1 sleep idle of 480ms?

Hope I’m explaining that in a way that isn’t totally confusing :wink:

I think I understand the question - in benchmarking terms it’s whether the ‘track fixlets’ inspector is tracking Processor Time (i.e. number of processor ticks to evaluate content) or “Wall Time” (i.e. how much real time has passed during evaluation, as if watching a clock on the wall).

If the tracking is Processor Time, then the only way to improve it would be to modify the relevance to be more efficient. If the tracking is Wall Time, we could more easily improve the times by increasing the CPU throttling to allow the BESClient to use more resources.

I’m afraid I don’t have the answer though, I’m not sure whether it’s publicly documented but I’ll pose the question on our internal chat.

I do know the “duration of evaluationcycle” inspectors are based on Wall Time, as I see definite improvements by increasing the processor time allocation to the BESClient.

2 Likes

Very much appreciated @JasonWalker

I have also seen outliers for these values, I’m not sure if the device going to sleep and waking or other behaviors can cause one off fixlets to report very long evaluation times.

I would highly recommend looking at the evaluation times in aggregate for a property across a set of devices.

I.e, use the median or mean for evaluation time of a property across your windows laptops to find the slowest properties and ignore any individual devices reporting outlier values

3 Likes

Agree completely. I do have a few Session Relevance queries that may help. I use these from time to time in the Web Reports QNA page.

Assuming you’ve downloaded & activated the “BigFix Client - Audit - Universal” from bigfix.me in one of your custom sites, punch in the Site Name containing the analysis in the queries below:

First, find the average Evaluation Cycle across your entire deployment, only including those computers with the default values for _BESClient_Resource_WorkIdle and _BESClient_Resource_SeelpIdle, and only those computers that have reported in within the last day (so some computer that’s been removed or taken offline doesn’t skew results when you’re comparing before/after making changes). You’d want to capture this before making changes and compare it later to see whether your improvements are having any effect

Q: means of (values of (results (item 0 of it, elements of item 1 of it)) of  (bes properties whose (name of site of source analysis of it = "MY_CUSTOM_SITE" and name of source analysis of it = "BigFix Client - Audit - Universal" and name of it = "Client - Evaluation Cycle (Average) - Universal"), set of bes computers whose (now - last report time of it < 1 * day AND not exists client settings whose ((name of it = "_BESClient_Resource_WorkIdle" and value of it != "10") OR (name of it = "_BESClient_Resource_SleepIdle" and value of it != "480")) of it) ) as floating point)

A: 29.42

Based on the definition of the 'Cleint - Evaluation Cycle (Average) - Universal" property, I think this indicates an average of 29 minutes for my clients to get through a full cycle.

Next, find the content with longest-running evaluation times (on average) across your deployment. Step through each of the Properties - “Client - Evaluations Slower than 1 Hour - Universal”, “Client - Evaluations Slower than 15 Minutes - Universal”, and “Client - Evaluations Slower than 1 Minute - Universal” to see which things to prioritize

q: (multiplicity of it, it) of unique values of following texts of firsts ": " of values of (results (item 0 of it, elements of item 1 of it)) of  (bes properties whose (name of site of source analysis of it = "MY_CUSTOM_SITE" and name of source analysis of it = "BigFix Client - Audit - Universal" and name of it = "Client - Evaluations Slower than 1 Hour - Universal"), set of bes computers whose (now - last report time of it < 1 * day AND (not exists client settings whose ((name of it = "_BESClient_Resource_WorkIdle" and value of it != "10") OR (name of it = "_BESClient_Resource_SleepIdle" and value of it != "480")) of it)) )

q: (multiplicity of it, it) of unique values of following texts of firsts ": " of values of (results (item 0 of it, elements of item 1 of it)) of  (bes properties whose (name of site of source analysis of it = "Test" and name of source analysis of it = "BigFix Client - Audit - Universal" and name of it = "Client - Evaluations Slower than 15 Minutes - Universal"), set of bes computers whose (now - last report time of it < 1 * day AND (not exists client settings whose ((name of it = "_BESClient_Resource_WorkIdle" and value of it != "10") OR (name of it = "_BESClient_Resource_SleepIdle" and value of it != "480")) of it)) )
A: 1, CustomSite_Test.254:Background Evaluation

q: (multiplicity of it, it) of unique values of following texts of firsts ": " of values of (results (item 0 of it, elements of item 1 of it)) of  (bes properties whose (name of site of source analysis of it = "MY_CUSTOM_SITE" and name of source analysis of it = "BigFix Client - Audit - Universal" and name of it = "Client - Evaluations Slower than 1 Minute - Universal"), set of bes computers whose (now - last report time of it < 1 * day AND (not exists client settings whose ((name of it = "_BESClient_Resource_WorkIdle" and value of it != "10") OR (name of it = "_BESClient_Resource_SleepIdle" and value of it != "480")) of it)) )
A: 1, CustomSite_Test.254:Background Evaluation
A: 1, CustomSite_Test.378:Evaluate Property 58

My lab is actually pretty good in this regard. Checking that last query, I only have 1 computer reporting two evaluations that take longer than one minute. The first result, a ‘Background Evaluation’ indicates it is the Relevance of the Fixlet, Task, Baseline, or Analysis with ID 254 in the Custom Site named ‘Test’. The second, “Evaluate Property 58”, indicates it is an Analysis Property in the Custom Site named ‘Test’, Analysis ID 378, and the 58th property of that Analysis.

Knowing that this Fixlet and this Analysis are what I would want to improve, deactivate, or evaluate less frequently, I can then query some details to determine why they are slow -

q: name of fixlet whose (id of it = 254) of all bes sites whose (name of it = "Test")

A: TROUBLESHOOTING:  Kill processes locking __Download folders


q: (name of source analysis of it | "Global", name of it, source evaluation period of it, definition of it) of property 58 of fixlet whose (id of it = 378 ) of all bes sites whose (name of it = "Test")

A: BES Client Info - Universal, Bad Cache Files?, 7 days, items 0 of (name of it, sha1 of it) whose(item 0 of it != item 1 of it) of files of folders of folders "__Global\__Cache" of ( (if (exists properties whose(it as string starts with "data folder of " AND it as string contains "client")) then (data folder of client) else NULL)|(folder "/var/opt/BESClient/__BESData")|(folder "/Library/Application Support/BigFix/BES Agent/__BESData")|(folder "__BESData" of parent folder of client) )

Interesting that the “BES Client Info - Universal” is itself one of the slow evaluations. Looking at the Relevance for that property, I can see why it would be so - it performs a sha1 hash of every file in the cached downloads folder on the client. But, this slow evaluation has already been taken into account - this property only evaluates once a week, and I’m ok with a slow evaluation that only happens weekly.

Hope this helps !

3 Likes

Same. I think it is due to the machine being asleep during the eval for a particular property, but hard to know for sure. If one machine is reporting an 8 hour eval for a property while most other machines are reporting a few minutes at worst case, then it just seems like an outlier that is likely due to something like machine sleeping.

1 Like