LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Loop tempo doesn't work well on SUSE 10.0

I forget to tell you : I've allready tried to send udp datagrams with a 0ms tempo, but the client couln't read every datagram. About 20% of the info was lost, of course the amount of data was much too large. I will try this time with less data, maybe it could work.
0 Kudos
Message 11 of 15
(989 Views)
all measurements have been taken at the same platform with such different results? wow, that's a surprise for me...
 
"Do you think that reducing the jitter (if possible) would solve the problem?"
-> hm, maybe (but on a 2ms or 5ms basis, not 1ms basis). maybe you change the priority of the service thats behind the ms ticker (don't ask me for its name...something with "clock" or "cycles"....), but you can make a test before that: run your vi with a parallel "do nothing" while loop. this will raise the cpu load to 100%. then check the results: if the jitter stays same, then it is NOT dependend on the priority, if it's getting worse, a higher priority may be a solution for your problem.
 
"Have you ever tried to open and close a UDP connexion for each datagram? If it makes a good tempo (1-2ms), this can be a solution"
 
->  i would write the data as fast as possible to the udp port (using the wait (ms) with an input of 0 ms).
Best regards
chris

CL(A)Dly bending G-Force with LabVIEW

famous last words: "oh my god, it is full of stars!"
0 Kudos
Message 12 of 15
(988 Views)
Changing the jitter gave exactly the same result. I suppose I will have to write as fast as possible on UDP port each time a datagram string comes. I hope this won't overflow the UDP buffer.
0 Kudos
Message 13 of 15
(983 Views)

hi there

try this: (no LV at hand right now so if have to use flat ascii)

- create an empty while loop
- place an wait (ms) function inside with an input of 0 (zero) ms (this will wait for the current RTE time slice to finish)
- run the loop once at startup of the app until 1s has elapsed (use the ms ticker output of wait (ms) function, take the ms ticker output of loop index 0 as start time!)
- for waiting ~1ms call a for/while loop until index is index(1s)/1000 with an wait (ms) with input 0 ms

maybe you then can wait ~1ms on ALL systems (cpu load should be ~0%)

Best regards
chris

CL(A)Dly bending G-Force with LabVIEW

famous last words: "oh my god, it is full of stars!"
0 Kudos
Message 14 of 15
(979 Views)
I just tried this solution. I could manage to loop in 1ms on my system, but :
**CPU is under 50% load (with hyper-treading). I guess it will be 100% without it.
**Loop time is code-dependant.That's not a big problem, since my code should not change very much.
**The value determined with the first loop does not fit in the second one. Not a problem, adjusted manually.

Behavior is the same on windows.
Since CPU usage is high, i guess the loop execution will slow down when my application will do something else?!

I don't understand why CPU usage is high, do you have an idea?
0 Kudos
Message 15 of 15
(960 Views)