DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

DIAdem performance to slow with single value GPI-driver

Solved!
Go to solution

Hi all,

 

i have a big problem:

I developed an GPI-driver as single value driver in a DLL. I want to display and store a big amount of data but DIAdem is to slow (or has not enought CPU-time) to process the data, coming from driver. 

 

In the my current DAC-setup i use two input blocks having 19 and 16 channels (all of type double) and receiving measurement values from different datasources, in my case a socket (stl::socket) and a local file (istream).

 

Each data source is implemented as a worker thread and is buffering and converting (MSB-LSB) the incoming data from socket and file stream. Each input block in my DAC-plan is connected to a particular datasource and a separate clock system. The input blocks receiving the data in "Blockmode" (hardware clock, external clock) by DAC-kernel transfer via InputValueGet methode of the GPI.

 

For some tests i used some channels to display driver internal information:

-MaxScanNumber from DIAdem in InputValueGet

-Current buffersize of the related worker thread

 

What I can see is, that the thread buffer size increases very fast, but DIAdem is not beeing get the data with a proper speed. It only wants to have between 200-300 scans at one InputValueGet call.

 

Additionally I have made some tests using performance monitor from windows. What i can see is, that the two threads beeing created right and DIAdem runs nearly 100% CPU load. All DLL threads beeing stopped correctly after stop of measurement course.

 

What can I do to increase the DIAdem performance?

 

Best regards

Jörg.

0 Kudos
Message 1 of 2
(3,650 Views)
Solution
Accepted by topic author Hedt

First problem is solved:

A SOCKET in the worker-thread was not in "non-blocking mode" hence the recv(...) call on this was blocking and so DIAdem was always running at 100% CPU-Time in measurement course.

0 Kudos
Message 2 of 2
(3,582 Views)