lkml.org 
[lkml]   [2007]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: CFS review
    Hi,

    On Wed, 1 Aug 2007, Ingo Molnar wrote:

    > Please also send me the output of this script:
    >
    > http://people.redhat.com/mingo/cfs-scheduler/tools/cfs-debug-info.sh

    Send privately.

    > Could you also please send the source code for the "l.c" and "lt.c" apps
    > you used for your testing so i can have a look. Thanks!

    l.c is a simple busy loop (well, with the option to start many of them).
    This is lt.c, what it does is to run a bit less than a jiffie, so it
    needs a low resolution clock to trigger the problem:

    #include <stdio.h>
    #include <signal.h>
    #include <time.h>
    #include <sys/time.h>

    #define NSEC 1000000000
    #define USEC 1000000

    #define PERIOD (NSEC/1000)

    int i;

    void worker(int sig)
    {
    struct timeval tv;
    long long t0, t;

    gettimeofday(&tv, 0);
    //printf("%u,%lu\n", i, tv.tv_usec);
    t0 = (long long)tv.tv_sec * 1000000 + tv.tv_usec + PERIOD / 1000 - 50;
    do {
    gettimeofday(&tv, 0);
    t = (long long)tv.tv_sec * 1000000 + tv.tv_usec;
    } while (t < t0);

    }

    int main(int ac, char **av)
    {
    int cnt;
    timer_t timer;
    struct itimerspec its;
    struct sigaction sa;

    cnt = i = atoi(av[1]);

    sa.sa_handler = worker;
    sa.sa_flags = 0;
    sigemptyset(&sa.sa_mask);

    sigaction(SIGALRM, &sa, 0);

    clock_gettime(CLOCK_MONOTONIC, &its.it_value);
    its.it_interval.tv_sec = 0;
    its.it_interval.tv_nsec = PERIOD * cnt;

    while (--i > 0 && fork() > 0)
    ;

    its.it_value.tv_nsec += i * PERIOD;
    if (its.it_value.tv_nsec > NSEC) {
    its.it_value.tv_sec++;
    its.it_value.tv_nsec -= NSEC;
    }

    timer_create(CLOCK_MONOTONIC, 0, &timer);
    timer_settime(timer, TIMER_ABSTIME, &its, 0);

    printf("%u,%lu\n", i, its.it_interval.tv_nsec);

    while (1)
    pause();
    return 0;
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-08-01 15:23    [W:2.780 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site