Knowledge Base

 
You must be logged in to post Login Register


Register? | Lost Your Password?

Search Forums:


 






Wildcard Usage:
*    matches any number of characters
%    matches exactly one character

I am using a VME system with a Kmax embedded server. Each time the VME has data ready, the server sends the SRQ message and the client reads it out. Everything works fine, but th

UserPost

5:28 pm
January 4, 2010


Tech Support

I am using a VME system with a Kmax embedded server.  Each time the VME has data ready, the server sends the SRQ message and the client reads it out.  Everything works fine, but the performance is not as good as I expected.  How can I get better performance?

Generally speaking, to get the best performance, you should keep the rate of client/server transaction as low as possible and the transfer block size high.  Let the VME do what it does well – handle the VME data IO.  Let the workstation do what it does well – process control and command and display data buffers.

Systems designed to have a client workstation respond to every event generated by the VME system, generally are limited to a few hundred events per second.  This is one reason why VME systems usually have an embedded processor and and embedded data acquisition process — to get higher performance.  In the design of your DAQ process on the VME CPU you should implement a buffering strategy using separate processes or threads for data acquisition and client/server IO. 

A data acquisition process on the VME can service the raw DAQ events and build event buffers in the VME memory.  This should proceed very fast.  When the VME data buffer is full (or based on some other criteria, e.g., timers, client requests, etc.), the DAQ process can signal the embedded server process to send the SRQ message tot he client (which is running on the host workstation).   The client workstation can read out the data as a large event block for processing.  During readout the DAQ process continues to build the next event buffer.  After readout, the workstation client processes the event block.  By keeping the number of client/server transactions to a few per second, but making the transfer blocks large you can get high throughput, and parallel processing in the VME and the client.