Setting BES Client Affinity?

(imported topic written by boostaz191)

here is my problem today:

We have lab computers which has a data capture cards for specialized equipment. Regulary but not predictably we are seeing BES and the collection application conflict for processor priority. These conflict only last for a few milliseconds however during this conflict we loose critical data. Our data collection is for several thousands of data points accross only a few milliseconds. We have 2 identical systems and have made no changes on one but have changed the affinity for the collection program on the other to the second HT processor. This seems to have resolved our problem for now, however there is the possibilty that if processro 0 is overloaded then bes could be forced to use processor 1 which could then conflict again with the collection software. I want to know if there is a way to set the affinity for the BES client to always use the first or 0 processor?

(imported comment written by BenKus)

Hi Boostaz1,

I don’t know of any way to force the BES Client to use a specific processor because that is controlled by the OS… Perhaps in your special circumstance, you can set the BES Client process priority to “Low”? That might allow your application to get priority for a few milliseconds.

Ben

(imported comment written by SystemAdmin)

Boostaz1, We have looked at this extensively in our environment as well last year to resolve similar issues. Unless the programs are compiled with the “setaffinity…” code there is no way to bypass how the task scheduler assigns work to given CPU’s.

Just my 2 cents, thought I would save you a lot or researching, it took us over a month to finally come to this conclusion.

PSisk

(imported comment written by boostaz191)

so does the BES client have the setaffinity option in the code?

(imported comment written by BenKus)

Hey boostaz1,

The agent does not have a processor affinity (partly because it never came up and partly because you might run into other issues if you always made the agent use a specific CPU).

Did the process priority approach that I suggested sound interesting?

Ben

(imported comment written by jeremy_spiegel91)

You can temporarily set the BES Client CPU affinity by going to the windows task manager and selecting the “Set Affinity…” option when you right-click in the Processes list. I think what psisk is referring to is that you can build an executable with a processor affinity specified in the executable header. You can do this without BigFix rebuilding the BES Client by using a tool called imagecfg.exe that is included in the Windows 2000 Server Supplement One Resource Kit CD-ROM, or try searching Google for imagecfg.exe. You’d have to redistribute the new executable to your machines and remember to redo this process whenever you upgrade the BES Client. Another thing you could do would be to have another process that runs on startup and calls SetProcessAffinityMask for the BES Client process, giving it the processors that you want the process to run on. See http://msdn2.microsoft.com/en-us/library/ms686223.aspx

(imported comment written by tim7ad91)

Jeremy,

Thanks for the information… that is helpful.

Fyi… the URL posted includes a trailing period “.”, so it’s effectively a broken link.

Here it is again

http://msdn2.microsoft.com/en-us/library/ms686223.aspx

(imported comment written by BenKus)

I fixed the “.” issue for Jeremy’s post.

Note for everyone that this is not a configuration that we test with and we recommend you do extensive testing before implementing something like this.

Ben