• Martin Schwidefsky's avatar
    [PATCH] cputime: introduce cputime · 0a71336b
    Martin Schwidefsky authored
    This patch introduces the concept of (virtual) cputime.  Each architecture
    can define its method to measure cputime.  The main idea is to define a
    cputime_t type and a set of operations on it (see asm-generic/cputime.h).
    Then use the type for utime, stime, cutime, cstime, it_virt_value,
    it_virt_incr, it_prof_value and it_prof_incr and use the cputime operations
    for each access to these variables.  The default implementation is jiffies
    based and the effect of this patch for architectures which use the default
    implementation should be neglectible.
    
    There is a second type cputime64_t which is necessary for the kernel_stat
    cpu statistics.  The default cputime_t is 32 bit and based on HZ, this will
    overflow after 49.7 days.  This is not enough for kernel_stat (ihmo not
    enough for a processes too), so it is necessary to have a 64 bit type.
    
    The third thing that gets introduced by this patch is an additional field
    for the /proc/stat interface: cpu steal time.  An architecture can account
    cpu steal time by calls to the account_stealtime function.  The cpu which
    backs a virtual processor doesn't spent all of its time for the virtual
    cpu.  To get meaningful cpu usage numbers this involuntary wait time needs
    to be accounted and exported to user space.
    
    From: Hugh Dickins <hugh@veritas.com>
    
    The p->signal check in account_system_time is insufficient.  If the timer
    interrupt hits near the end of exit_notify, after EXIT_ZOMBIE has been set,
    another cpu may release_task (NULLifying p->signal) in between
    account_system_time's check and check_rlimit's dereference.  Nor should
    account_it_prof risk send_sig.  But surely account_user_time is safe?
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    0a71336b
binfmt_elf32.c 4.12 KB