Re: 2.4 Cpu usuage (display oddities more than anything)

From: Pavel Machek (pavel@suse.cz)
Date: Sun Jan 28 2001 - 19:02:02 EST

  • Next message: Pavel Machek: "Re: Linux Post codes during runtime, possibly OT"

    Hi!

    > Some oddities w/kapmd(2.4.0)... If I sit in X and do nothing other than run top or
    > "vmstat 5", I get down to as low as 60% idle and 40% in system -- with kapmd getting
    > 'charged' for the 40%.

    At least you can see how kapmd mechanism actually works.

    > Then I go and run 'freeamp' and the CPU usage goes to 100% idle, presumably because
    > kapmd never gets called because it's never in the idle loop for longer than 333ms.
    >
    > It's just weird and unnatural.
    >
    > Also forgive my ignorance but is it really possible playing VBR MP3's takes 0 measurable
    > CPU? I've run the program for hours and a ps of 'freeamp' show either no measured cpu
    > time or maybe 1 second...the kernel runs at at 100% idle for most of the time.
    > I thought mp3 decompression was a cpu intensive
    > operation....weird...

    Those counters are running. Try this one:

    /*
     * This is simple program which should show weak spots in linux's scheduler
     */

    #include <stdio.h>
    #include <time.h>
    #include <sys/timeb.h>
    #include <unistd.h>

    int startgame;

    int
    ticks( void )
    {
    struct timeb tb;
    int sec, msec;
    ftime( &tb );
    sec = tb.time - startgame;
    msec = tb.millitm;
    return sec * 1000 + msec;
    }

    void
    main( int argc, char *argv[] )
    {
    int delta, badboy = 0, count = 1000000;
    int t1, t2;

    startgame = time(NULL);
    if (argc>1) {
      badboy = 1;
      printf( "I'm a *BAD* boy! " );
      usleep( 100000 );
      t1 = ticks();
      usleep( 100000 );
      t2 = ticks();
      delta = t2-t1;
      printf( "And bad boys know that jiffie is %dmsec\n", delta );
      delta = 10;
      }
    else { printf( "I'm a good boy.\n" ); delta = 20; }
    while(1) {
      if ((ticks()-t1) % delta > ((delta * 17)/20))
        if (badboy)
          usleep(10000);
      if (!((--count)%100000)) { printf( "." ); fflush( stdout ); }
      if (!count) break;
      }
    }

    it used to work. Bad boy used to be charged 0% cpu even if it ate 70%

    > I guess I'm thinking -- maybe time in kapmd should be counted as 'idle'?

    -- 
    I'm pavel@ucw.cz. "In my country we have almost anarchy and I don't care."
    Panos Katsaloulis describing me w.r.t. patents at discuss@linmodems.org
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    Please read the FAQ at http://www.tux.org/lkml/
    



    This archive was generated by hypermail 2b29 : Mon Jan 29 2001 - 09:42:27 EST