We have our server app on a machine (tested on 2 cores, no hyper-threading, WS2012R2 VM on VmWare) along with PI AF Client, connecting to a pair of PI servers, PIPoint and AF
Most of our accesses are for PIPoints (non-AF, not via the AF server)
A few accesses are AF, all for TableLookup DataReferences to linked to external database servers
We have one particular call for Recorded values over an 18 month period... there won't be too many datapoints, maybe 1 a day per attribute
Because of other (external) reasons, it seems as if the query takes a long time (8 seconds) on the external server... that is (I believe) being looked at
But... during the query the *client* side takes 50% CPU and if we run 2 queries at the same time, it's roughly 100% CPU
I have created a simplified test app that just queries using the minimum AF SDK calls to check it's not my code and it does seem to be during the call into the PI AF Client
This is just for a single attribute so the method is...
rv.Data = attribute.Data.RecordedValues( timeRange, AFBoundaryType.Inside, null, null, false, maxCount );
It's as if something is busy-waiting in a tight loop in PI AF Client, but that would be very odd. My code is executing on a "ThreadPool.QueueUserWorkItem"
I tried ... RecordedValuesAsync ... but that's not supported (so the exception says)
I believe we are now at the very latest PI AF Client version (recently updated from another not too old version)
Any thoughts on how I should start to look at this would be most welcome