1 ==================== 2 Scheduler Statistics 3 ==================== 4 5 Version 16 of schedstats changed the order of 6 'enum cpu_idle_type', which changed the order 7 columns in show_schedstat(). In particular the 8 and __CPU_NOT_IDLE changed places. The size of 9 10 Version 15 of schedstats dropped counters for 11 yld_exp_empty, yld_act_empty and yld_both_empt 12 identical to version 14. 13 14 Version 14 of schedstats includes support for 15 mainline kernel in 2.6.20 although it is ident 16 12 which was in the kernel from 2.6.13-2.6.19 17 release). Some counters make more sense to be 18 per-domain. Note that domains (and their asso 19 be pertinent and available on machines utilizi 20 21 In version 14 of schedstat, there is at least 22 statistics for each cpu listed, and there may 23 domain. Domains have no particular names in t 24 the highest numbered one typically arbitrates 25 cpus on the machine, while domain0 is the most 26 sometimes balancing only between pairs of cpus 27 are no architectures which need more than thre 28 field in the domain stats is a bit map indicat 29 by that domain. 30 31 These fields are counters, and only increment. 32 of these will need to start with a baseline ob 33 the change in the counters at each subsequent 34 which does this for many of the fields is avai 35 36 http://eaglet.pdxhosts.com/rick/linux/sche 37 38 Note that any such script will necessarily be 39 reason to change versions is changes in the ou 40 to write their own scripts, the fields are des 41 42 CPU statistics 43 -------------- 44 cpu<N> 1 2 3 4 5 6 7 8 9 45 46 First field is a sched_yield() statistic: 47 48 1) # of times sched_yield() was called 49 50 Next three are schedule() statistics: 51 52 2) This field is a legacy array expiratio 53 scheduler. We kept it for ABI compatib 54 3) # of times schedule() was called 55 4) # of times schedule() left the process 56 57 Next two are try_to_wake_up() statistics: 58 59 5) # of times try_to_wake_up() was called 60 6) # of times try_to_wake_up() was called 61 62 Next three are statistics describing schedulin 63 64 7) sum of all time spent running by tasks 65 8) sum of all time spent waiting to run b 66 nanoseconds) 67 9) # of timeslices run on this cpu 68 69 70 Domain statistics 71 ----------------- 72 One of these is produced per domain for each c 73 CONFIG_SMP is not defined, *no* domains are ut 74 will not appear in the output.) 75 76 domain<N> <cpumask> 1 2 3 4 5 6 7 8 9 10 11 12 77 78 The first field is a bit mask indicating what 79 80 The next 24 are a variety of sched_balance_rq( 81 of idleness (idle, busy, and newly idle): 82 83 1) # of times in this domain sched_balanc 84 cpu was idle 85 2) # of times in this domain sched_balanc 86 the load did not require balancing whe 87 3) # of times in this domain sched_balanc 88 more tasks and failed, when the cpu wa 89 4) sum of imbalances discovered (if any) 90 sched_balance_rq() in this domain when 91 5) # of times in this domain pull_task() 92 was idle 93 6) # of times in this domain pull_task() 94 the target task was cache-hot when idl 95 7) # of times in this domain sched_balanc 96 not find a busier queue while the cpu 97 8) # of times in this domain a busier que 98 cpu was idle but no busier group was f 99 9) # of times in this domain sched_balanc 100 cpu was busy 101 10) # of times in this domain sched_balanc 102 load did not require balancing when bu 103 11) # of times in this domain sched_balanc 104 more tasks and failed, when the cpu wa 105 12) sum of imbalances discovered (if any) 106 sched_balance_rq() in this domain when 107 13) # of times in this domain pull_task() 108 14) # of times in this domain pull_task() 109 target task was cache-hot when busy 110 15) # of times in this domain sched_balanc 111 find a busier queue while the cpu was 112 16) # of times in this domain a busier que 113 was busy but no busier group was found 114 115 17) # of times in this domain sched_balanc 116 cpu was just becoming idle 117 18) # of times in this domain sched_balanc 118 load did not require balancing when th 119 19) # of times in this domain sched_balanc 120 tasks and failed, when the cpu was jus 121 20) sum of imbalances discovered (if any) 122 sched_balance_rq() in this domain when 123 21) # of times in this domain pull_task() 124 22) # of times in this domain pull_task() 125 target task was cache-hot when just be 126 23) # of times in this domain sched_balanc 127 find a busier queue while the cpu was 128 24) # of times in this domain a busier que 129 was just becoming idle but no busier g 130 131 Next three are active_load_balance() statis 132 133 25) # of times active_load_balance() was c 134 26) # of times active_load_balance() tried 135 27) # of times active_load_balance() succe 136 137 Next three are sched_balance_exec() statist 138 139 28) sbe_cnt is not used 140 29) sbe_balanced is not used 141 30) sbe_pushed is not used 142 143 Next three are sched_balance_fork() statist 144 145 31) sbf_cnt is not used 146 32) sbf_balanced is not used 147 33) sbf_pushed is not used 148 149 Next three are try_to_wake_up() statistics: 150 151 34) # of times in this domain try_to_wake_ 152 last ran on a different cpu in this do 153 35) # of times in this domain try_to_wake_ 154 waking cpu because it was cache-cold o 155 36) # of times in this domain try_to_wake_ 156 157 /proc/<pid>/schedstat 158 --------------------- 159 schedstats also adds a new /proc/<pid>/schedst 160 the same information on a per-process level. 161 this file correlating for that process to: 162 163 1) time spent on the cpu (in nanoseconds) 164 2) time spent waiting on a runqueue (in n 165 3) # of timeslices run on this cpu 166 167 A program could be easily written to make use 168 report on how well a particular process or set 169 under the scheduler's policies. A simple vers 170 available at 171 172 http://eaglet.pdxhosts.com/rick/linux/sche
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.