[etherlab-users] Performance rating of jitter on PC System

Armin Steinhoff armin at steinhoff.de
Fri May 31 14:49:24 CEST 2013


Hello,

what you can expect from PC based hardware shows the OASDL testbed:

https://www.osadl.org/Continuous-latency-monitoring.qa-farm-monitoring.0.html

The results are havely depending on the target motherboards ...

IMHO, small jitters are only possible if the Ethernet controller ( e.g.
i210) drives at hardware level the bus cyccle.

Regards

--Armin


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);
> }
>
>
> _______________________________________________
> etherlab-users mailing list
> etherlab-users at etherlab.org
> http://lists.etherlab.org/mailman/listinfo/etherlab-users




More information about the Etherlab-users mailing list