lkml.org 
[lkml]   [2010]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Subjectslow nanosleep?
    From
    Date

    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@localhost ~ # ./nanosleep
    nanosleep
    req:0 :0
    tv_res:0 :119
    root@localhost ~ # ./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



    \
     
     \ /
      Last update: 2010-09-08 09:53    [W:2.513 / U:0.808 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site