lkml.org 
[lkml]   [2012]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 1/5] Alter the amount of steal time reported by the guest.
    From
    Date
    Modify the amount of stealtime that the kernel reports via the /proc interface.
    Steal time will now be broken down into steal_time and consigned_time.
    Consigned_time will represent the amount of time that is expected to be lost
    due to overcommitment of the physical cpu or by using cpu capping. The amount
    consigned_time will be passed in using an ioctl. The time will be expressed in
    the number of nanoseconds to be lost in during the fixed period. The fixed period
    is currently 1/10th of a second.

    Signed-off-by: Michael Wolf <mjw@linux.vnet.ibm.com>
    ---
    fs/proc/stat.c | 9 +++++++--
    include/linux/kernel_stat.h | 1 +
    2 files changed, 8 insertions(+), 2 deletions(-)

    diff --git a/fs/proc/stat.c b/fs/proc/stat.c
    index e296572..cb7fe80 100644
    --- a/fs/proc/stat.c
    +++ b/fs/proc/stat.c
    @@ -82,7 +82,7 @@ static int show_stat(struct seq_file *p, void *v)
    int i, j;
    unsigned long jif;
    u64 user, nice, system, idle, iowait, irq, softirq, steal;
    - u64 guest, guest_nice;
    + u64 guest, guest_nice, consign;
    u64 sum = 0;
    u64 sum_softirq = 0;
    unsigned int per_softirq_sums[NR_SOFTIRQS] = {0};
    @@ -90,10 +90,11 @@ static int show_stat(struct seq_file *p, void *v)

    user = nice = system = idle = iowait =
    irq = softirq = steal = 0;
    - guest = guest_nice = 0;
    + guest = guest_nice = consign = 0;
    getboottime(&boottime);
    jif = boottime.tv_sec;

    +
    for_each_possible_cpu(i) {
    user += kcpustat_cpu(i).cpustat[CPUTIME_USER];
    nice += kcpustat_cpu(i).cpustat[CPUTIME_NICE];
    @@ -105,6 +106,7 @@ static int show_stat(struct seq_file *p, void *v)
    steal += kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
    guest += kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
    guest_nice += kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
    + consign += kcpustat_cpu(i).cpustat[CPUTIME_CONSIGN];
    sum += kstat_cpu_irqs_sum(i);
    sum += arch_irq_stat_cpu(i);

    @@ -128,6 +130,7 @@ static int show_stat(struct seq_file *p, void *v)
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(steal));
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(guest));
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(guest_nice));
    + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(consign));
    seq_putc(p, '\n');

    for_each_online_cpu(i) {
    @@ -142,6 +145,7 @@ static int show_stat(struct seq_file *p, void *v)
    steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL];
    guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST];
    guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE];
    + consign = kcpustat_cpu(i).cpustat[CPUTIME_CONSIGN];
    seq_printf(p, "cpu%d", i);
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user));
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(nice));
    @@ -153,6 +157,7 @@ static int show_stat(struct seq_file *p, void *v)
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(steal));
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(guest));
    seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(guest_nice));
    + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(consign));
    seq_putc(p, '\n');
    }
    seq_printf(p, "intr %llu", (unsigned long long)sum);
    diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h
    index 1865b1f..e5978b0 100644
    --- a/include/linux/kernel_stat.h
    +++ b/include/linux/kernel_stat.h
    @@ -28,6 +28,7 @@ enum cpu_usage_stat {
    CPUTIME_STEAL,
    CPUTIME_GUEST,
    CPUTIME_GUEST_NICE,
    + CPUTIME_CONSIGN,
    NR_STATS,
    };



    \
     
     \ /
      Last update: 2012-11-26 23:01    [W:2.624 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site