NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Remote Execution and Speeding it up!?!

Hi all,

I have recently posted a few queries on parallel processing etc and have now sorted that. However (you knew there'd be a however didnt you!) I am using remote sequence calls on the proposed system we are using, due to the large amount of processing going on and the parallel threads scheme I am using.

I have set up a simple sequence (5 LV VIs taking data from the sequence context and squirting the data into the report string, just to verify data flow) and have run this locally and remotely both from a sequence call. the difference in execution times was astonishing to say the least.


Local Execution.
Each vi was approx 15ms.
Overhead was approx 25ms.
Total Time around 100ms

Remote execution
Each vi was approx
15ms again
Overhead was around 2.9s!!!!!

the total time was about 3 seconds to run the same sequence call remotely.

I have tried many many things to help speed things up. I have modified the preload/unload options, I have set the sequence files and code modules up on the remote machines harddrive and set the file paths correctly.

does anyone have any experience of speeding the remote execution up? The overhead is unacceptable for my system (I have a cycle time of 1.2s per remote execution) so I may just have to code the whole thing in LV rather than use TS

My previous discussions...
http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=5065000000080000003D440000&USEARCHCONTEXT_CATEGORY_0=_8_&USEARCHCONTEXT_CATEGORY_S=0&UCATEGORY_0=_8_&UCATEGORY_S=0
0 Kudos
Message 1 of 3
(3,233 Views)
A few ideas

1) What parameters are you passing to the remote sequence? Parameters might end up needing to be duplicated on the other machine, this could be slow if you have a lot or big parameters(i.e. large arrays). You could pass references to the variables instead of the variables themselves to speed things up if needed. Or find other ways to reduce the number or size of parameters

2) are you timing the first run through the uut loop or the second? the first iteration of the uut loop is going to require the remote machine to load the sequence file. This is a one time cost though as the sequence file will stay loaded as long as the sequence call step is loaded.

3) How many step results do you have in the remote sequence (i.e. how many steps with result recordin
g enabled)? The results for the remote sequence must be passed back to the main machine and recreated on that machine. If you have a large number of results this could be slow. You could speed things up by reducing the number of results you are storing either by disabling record results on the steps on which you don't need them, or disabling results for the entire sequence or sequence file that you are running remotely.

Doug Melamed
NI
0 Kudos
Message 2 of 3
(3,233 Views)
Wanted to add one more thing. If the reason for using remote machines is solely for speed benefits of distributing the work, I think you might find you will be better off, even if you switch to using only labview, having everything run on one machine instead. When the test times are so short (a couple seconds), the overhead involved in transferring data across machines becomes more significant, and might end up negating any benefit you get from distributing the load. Of course there might be techinical problems or other reasons for using multiple machines, so I don't know if this really applies to your situation at all.

Anyway, just a thought,
Doug
0 Kudos
Message 3 of 3
(3,233 Views)