06 Dec, 2011

2 commits

  • The second call to sched_rt_period() is redundant, because the value of the
    rt_runtime was already read and it was protected by the ->rt_runtime_lock.

    Signed-off-by: Shan Hai
    Reviewed-by: Kamalesh Babulal
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1322535836-13590-2-git-send-email-haishan.bai@gmail.com
    Signed-off-by: Ingo Molnar

    Shan Hai
     
  • rt.nr_cpus_allowed is always available, use it to bail from select_task_rq()
    when only one cpu can be used, and saves some cycles for pinned tasks.

    See the line marked with '*' below:

    # taskset -c 3 pipe-test

    PerfTop: 997 irqs/sec kernel:89.5% exact: 0.0% [1000Hz cycles], (all, CPU: 3)
    ------------------------------------------------------------------------------------------------

    Virgin Patched
    samples pcnt function samples pcnt function
    _______ _____ ___________________________ _______ _____ ___________________________

    2880.00 10.2% __schedule 3136.00 11.3% __schedule
    1634.00 5.8% pipe_read 1615.00 5.8% pipe_read
    1458.00 5.2% system_call 1534.00 5.5% system_call
    1382.00 4.9% _raw_spin_lock_irqsave 1412.00 5.1% _raw_spin_lock_irqsave
    1202.00 4.3% pipe_write 1255.00 4.5% copy_user_generic_string
    1164.00 4.1% copy_user_generic_string 1241.00 4.5% __switch_to
    1097.00 3.9% __switch_to 929.00 3.3% mutex_lock
    872.00 3.1% mutex_lock 846.00 3.0% mutex_unlock
    687.00 2.4% mutex_unlock 804.00 2.9% pipe_write
    682.00 2.4% native_sched_clock 713.00 2.6% native_sched_clock
    643.00 2.3% system_call_after_swapgs 653.00 2.3% _raw_spin_unlock_irqrestore
    617.00 2.2% sched_clock_local 633.00 2.3% fsnotify
    612.00 2.2% fsnotify 605.00 2.2% sched_clock_local
    596.00 2.1% _raw_spin_unlock_irqrestore 593.00 2.1% system_call_after_swapgs
    542.00 1.9% sysret_check 559.00 2.0% sysret_check
    467.00 1.7% fget_light 472.00 1.7% fget_light
    462.00 1.6% finish_task_switch 461.00 1.7% finish_task_switch
    437.00 1.5% vfs_write 442.00 1.6% vfs_write
    431.00 1.5% do_sync_write 428.00 1.5% do_sync_write
    * 413.00 1.5% select_task_rq_fair 404.00 1.5% _raw_spin_lock_irq
    386.00 1.4% update_curr 402.00 1.4% update_curr
    385.00 1.4% rw_verify_area 389.00 1.4% do_sync_read
    377.00 1.3% _raw_spin_lock_irq 378.00 1.4% vfs_read
    369.00 1.3% do_sync_read 340.00 1.2% pipe_iov_copy_from_user
    360.00 1.3% vfs_read 316.00 1.1% __wake_up_sync_key
    342.00 1.2% hrtick_start_fair 313.00 1.1% __wake_up_common

    Signed-off-by: Mike Galbraith
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1321971504.6855.15.camel@marge.simson.net
    Signed-off-by: Ingo Molnar

    Mike Galbraith
     

17 Nov, 2011

1 commit