[etherlab-users] Performance rating of jitter on PC System
Sebastien Blanchet
blanchet at iram.fr
Fri May 31 12:36:06 CEST 2013
Hi Marcel,
In my opinion a 70 us jitter is a very good number.
I have run some tests in November 2011. It was different from you, because I
measured the whole chain latency and not only the PC performance.
Indeed, I wondered how many time is required to trigger an action after reading
an event.
So my test was:
- Send a square signal on an ADC and when reproduce the signal with a DAC.
Hardware:
- PC: DELL Precision 390 (Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz)
- Network card: Realtek RT8139D with native ethercat master 1.5 driver (8139too)
- Ethercat terminal from Beckhoff: EK1100 + EL3102 + EL4132
- Frequency generator + oscilloscope
- OS: Debian 6.0 i386
Results:
* with kernel 2.6.32.11 + rtai-3.8.1
- maximum latency 200us, maximum jitter 200us
* with kernel 2.6.31.6 + rt-preempt
- maximum latency 600us, maximum jitter 200us
My conclusion was:
- it does not worth using RTAI and ethercat native network driver below 1KHz.
because RT-PREEMPT+generic_driver is much easier to use and offer quite similar
performances for 1ms cycle time.
regards,
--
sebastien
On 05/30/2013 08:56 PM, Marcel Rothgänger wrote:
> Hello everybody,
>
> I have some problems with jitter on the following system:
>
> ASUS P7P55D-E with Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz
> 82574L Gigabit Network Connection with e1000e
> RTL8111/8168B PCI Express Gigabit Ethernet controller with r8169
> 8 GB RAM
>
> Which possible jitter minimum at 250µs cycle time do you expect? What should
> be possible on this system?
>
> As OS I use Ubuntu 10.04.4 and patched the Kernel with RT PREEMPT
> 2.6.31.6-rt19. Both NIC were tried with both native and generic driver (for
> e1000e on another RT Kernel).
>
> The application is the adapted user sample with RT PREEMPT timing. Cycle
> time 250 µs (4 kHz). Abstract below. On the oscilloscope I can see very
> different signal Jitter of 20µs – 70µs. The Jitter depends on system load
> e.g. mouse moving, window moving etc. The ambition is all OS services like
> screensaver, window moving and so on should surge but not my cyclic task.
>
> I am interested in your system hardware configuration, the OS, cycle time
> and of course your jitter. I think it can help to improve our system.
>
> Regards,
> Marcel
>
>
> Maybe the idea of timing and cyclic task below is not the best:
>
>
> printf("Started.\n");
>
> clock_gettime(CLOCK_MONOTONIC ,&t);
>
> /* start after one second */
> t.tv_sec++;
>
> while(1) {
> /* wait until next shot */
> clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &t, NULL);
>
> /* do the stuff */
> cyclic_task();
>
> /* calculate next shot */
> t.tv_nsec += interval;
>
> while (t.tv_nsec >= NSEC_PER_SEC) {
> t.tv_nsec -= NSEC_PER_SEC;
> t.tv_sec++;
> }
> }
>
> void cyclic_task()
> {
> int i;
>
> // receive process data
> ecrt_master_receive(master);
> ecrt_domain_process(domain1);
>
> blink = !blink;
> if (counter) {
> counter--;
> } else { // do this at 1 Hz
> counter = FREQUENCY;
>
> check_master_state();
> }
>
> // write process data
> EC_WRITE_U8(domain1_pd + off_dig_out, blink ? 0x06 : 0x09);
>
> // send process data
> ecrt_domain_queue(domain1);
> ecrt_master_send(master);
> }
>
More information about the Etherlab-users
mailing list