[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <OF71DD00AE.26643E4D-ONC1257798.00250630-C1257798.002A9748@transmode.se>
Date: Wed, 8 Sep 2010 09:45:12 +0200
From: Joakim Tjernlund <joakim.tjernlund@...nsmode.se>
To: Thomas Gleixner <tglx@...utronix.de>, linux-kernel@...r.kernel.org
Subject: slow nanosleep?
Hi Thomas
while playing with nanosleep I noticed that it is slow
compared to select. This little test program shows what
the effect:
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#define NANO_SLEEP 1
main()
{
struct timespec req, rem;
struct timeval tv1, tv2, tv_res;
int res;
rem.tv_sec = 0;
rem.tv_nsec = 0;
req.tv_sec = 0;
req.tv_nsec = 0;
tv2.tv_sec = req.tv_sec;
tv2.tv_usec = req.tv_nsec/1000;
gettimeofday(&tv1, NULL);
#ifdef NANO_SLEEP
res = nanosleep(&req, &rem);
#else
res = select(0, NULL,NULL,NULL, &tv2);
#endif
gettimeofday(&tv2, NULL);
timersub(&tv2, &tv1, &tv_res);
#ifdef NANO_SLEEP
printf("nanosleep\n");
#else
printf("selectsleep\n");
#endif
printf("req:%d :%d\n", (int)req.tv_sec, (int)req.tv_nsec/1000);
printf("tv_res:%d :%d\n", (int)tv_res.tv_sec, (int)tv_res.tv_usec);
}
root@...alhost ~ # ./nanosleep
nanosleep
req:0 :0
tv_res:0 :119
root@...alhost ~ # ./selectsleep
selectsleep
req:0 :0
tv_res:0 :36
Isn't nanosleep to slow here? The min time is about 120 us compared
to select which is 36 us. I would expect nanosleep to be better than
select.
Kernel 2.6.35 with HIGH_RES timers on Powerpc(MPC8321, 266 MHz)
x86 shows the same effect.
Jocke
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists