On Sat, May 28, 2011 at 22:06, Marcus D. Leech<mle...@ripnet.com> wrote:
I evaluated latency of a FIFO (actually an ordinary pipe, but the kernel
mechanisms are identical), and measured 30usecs average on my
1.2GHz AMD Phenom system with plenty 'o memory.
I sent timestamps across the FIFO (struct timeval), and the reader grabbed
the local time of day, and computed the difference. There's
a fair amount of uncertainty on the reader due to gettimeofday() call
overhead. But 30usec on a wimpy CPU is certainly comfortably
below 1msec.
gettimeofday() is a fast function. But if you want real high-fidelity
- read CPU clock counter. Just make sure your app runs on a one
selected core.
Could you post your app and raw results? I'm interested in
min/mean/max values and distribution graphs. Because max values do
play role when playing with real-time.
====== latency_writer.c ========
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
main ()
{
struct timeval tv;
while (1)
{
gettimeofday (&tv, NULL);
fwrite (&tv, sizeof(tv), 1, stdout);
fflush (stdout);
usleep (250000);
}
}
============ latency_reader.c ==============
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
main ()
{
struct timeval now;
struct timeval sender;
long long int t1, t2;
while (fread (&sender, sizeof(sender), 1, stdin) != 0)
{
gettimeofday (&now, NULL);
t1 = sender.tv_sec * 1000000;
t1 += sender.tv_usec;
t2 = now.tv_sec * 1000000;
t2 += now.tv_usec;
fprintf (stderr, "%lld\n", t2 - t1);
}
}
I just run it like:
./latency_writer | ./latency_reader
--
Marcus Leech
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio