• Andrew Morton's avatar
    [PATCH] shrink task_struct by removing per_cpu utime and stime · 8b1f287b
    Andrew Morton authored
    Patch from Bill Irwin.  It has the potential to break userspace
    monitoring tools a little bit, and I'm a rater uncertain about
    how useful the per-process per-cpu accounting is.
    
    Bill sent this out as an RFC on July 29:
    
    "These statistics severely bloat the task_struct and nothing in
     userspace can rely on them as they're conditional on CONFIG_SMP.  If
     anyone is using them (or just wants them around), please speak up."
    
    And nobody spoke up.
    
    If we apply this, the contents of /proc/783/cpu will go from
    
    	cpu  1 1
    	cpu0 0 0
    	cpu1 0 0
    	cpu2 1 1
    	cpu3 0 0
    
    to
    
    	cpu  1 1
    
    And we shall save 256 bytes from the ia32 task_struct.
    
    On my SMP build with NR_CPUS=32:
    
    Without this patch, sizeof(task_struct) is 1824, slab uses a 1-order
    allocation and we are getting 2 task_structs per page.
    
    With this patch, sizeof(task_struct) is 1568, slab uses a 2-order
    allocation and we are getting 2.5 task_structs per page.
    
    So it seems worthwhile.
    
    (Maybe this highlights a shortcoming in slab.  For the 1824-byte case
    it could have used a 0-order allocation)
    8b1f287b
array.c 14 KB