On 04/10/2017 09:45 AM, Valerio Bellizzomi wrote:
> On Mon, 2017-04-10 at 16:30 +0100, andy pugh wrote:
>> On 10 April 2017 at 15:52, Valerio Bellizzomi <vale...@selnet.org> wrote:
>>> Running the servo jitter test program shows a value of around 6000-7000,
>>> but the default is 1000000 !
>>
>> That's because a 1mS servo thread is about right for most machines.
>> Just about the only time that you would need to go faster in the base
>> thread is if you are doing brushless motor commutation in software.
>>
>
> Yes the latency-test, it shows a figure of around 6000-7000 but when I
> use that in the config, linuxcnc doesn't start, and the dmesg shows a
> consistent number of messages related to a cpu being stuck

The jitter that latency-test determines is *not* the number you should 
use for your servo-thread period.

Jitter is the error in scheduling time: the difference between when the 
thread asked to be woken up, and when it actually was woken up.

The servo-thread period is *how often* the servo thread wants to be 
woken up, to perform the next increment of controlling the machine.

Jitter is usually on the order of a few microseconds to a few tens of 
microseconds, and is determined by your hardware.  The servo-thread 
period is usually one millisecond, but sometimes in special 
circumstances a few times less than that, and is chosen by the machine 
integrator (the person building and configuring the machine).

So if pncconf suggested a 1 ms servo-thread period, it did the right thing.

If you try to run with a servo-thread period of 7,000 nanoseconds you'll 
have a bad time, because the servo thread generally takes longer than 
that to run.  So the servo-thread will be unhappy because it doesn't get 
to run as often as you told it to, and the rest of the system will be 
unhappy because there won't be any time for anything *other* than the 
servo-thread.

It's that "no time for anything else" part that caused the hang when you 
start LinuxCNC.

You can see how long the servo-thread takes to do its job by starting 
LinuxCNC, then running (in a terminal window): halcmd show thread

The "Max-Time" is the longest the servo-thread has taken to run (so far, 
it might be more in the future, depending on what it's doing).  If you 
have a servo-thread period that's shorter than that max-time things 
aren't going to work well, and if the period is *close* to the thread's 
max-time there won't be much CPU left over for doing other things (like 
running your GUI and the rest of your Linux system).


-- 
Sebastian Kuzminsky

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to