Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset e257ae3 in mainline


Ignore:
Timestamp:
2010-03-31T13:42:17Z (12 years ago)
Author:
Stanislav Kozina <stanislav.kozina@…>
Branches:
lfn, master
Children:
0655d64
Parents:
944f2cab
Message:

Counting CPU busy and idle clock ticks.

Location:
kernel/generic
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/cpu.h

    r944f2cab re257ae3  
    6868                                             are disabled. */
    6969
     70        bool idle;
     71        uint64_t idle_ticks;
     72        uint64_t busy_ticks;
     73
    7074        /**
    7175         * Processor ID assigned by kernel.
  • kernel/generic/src/cpu/cpu.c

    r944f2cab re257ae3  
    7474                       
    7575                        cpus[i].id = i;
     76                        cpus[i].idle_ticks = 0;
     77                        cpus[i].busy_ticks = 0;
    7678                       
    7779                        spinlock_initialize(&cpus[i].lock, "cpu_t.lock");
  • kernel/generic/src/proc/scheduler.c

    r944f2cab re257ae3  
    202202                 */
    203203
     204                 CPU->idle = true;
    204205                 cpu_sleep();
    205206                 goto loop;
  • kernel/generic/src/ps/load.c

    r944f2cab re257ae3  
    3737
    3838#include <proc/thread.h>
    39 #include <print.h>
    4039#include <ps/load.h>
    4140#include <arch.h>
     
    117116        while (true) {
    118117                calc_load_global();
    119                 printf("Computed loads: 0x%x 0x%x 0x%x\n", avenrun[0], avenrun[1], avenrun[2]);
    120118                thread_sleep(LOAD_FREQ);
    121119        }
  • kernel/generic/src/time/clock.c

    r944f2cab re257ae3  
    137137        size_t missed_clock_ticks = CPU->missed_clock_ticks;
    138138        unsigned int i;
     139
     140        /* Account lost ticks to CPU usage */
     141        if (CPU->idle) {
     142                ASSERT(missed_clock_ticks == 0);
     143                CPU->idle_ticks++;
     144        } else {
     145                CPU->busy_ticks += missed_clock_ticks + 1;
     146        }
     147        CPU->idle = false;
    139148
    140149        /*
Note: See TracChangeset for help on using the changeset viewer.