Jan 3, 2014

Linux kernel. Scheduler

priority to load weight
load balancing, kmigrate

run queues, sched entities:
cat /proc/sched_debug
# Sched Debug Version: v0.11, 3.13.6 #4
# ktime                                   : 11620320.261793
# sched_clk                               : 11629180.728702
# cpu_clk                                 : 11629180.728834
# jiffies                                 : 4297797377
# sched_clock_stable                      : 1
# 
# cpu#0, 3077.541 MHz
#   .nr_running                    : 0
#   .load                          : 0
#   .nr_switches                   : 10802526
#   .nr_load_updates               : 1998334
#   .nr_uninterruptible            : -2228
#   .next_balance                  : 4297.797394
# .....
# rt_rq[0]:/
#   .rt_nr_running                 : 0
#   .rt_throttled                  : 0
#   .rt_time                       : 0.011064
#   .rt_runtime                    : 950.000000
# 
# runnable tasks:
#             task   PID         tree-key  switches  prio     exec-runtime ...
# ------------------------------------------------------------------------ ...
#      ksoftirqd/0     3    875652.689495     83449   120    875652.689495 ...
#     kworker/0:0H     5      3837.050667         6   100      3837.050667 ...
#        rcu_sched     7    875652.806577    388480   120    875652.806577 ...
sudo cat /proc/schedstat
cat /proc/PID/sched
cat /proc/PID/limits
ls /proc/sys/kernel | grep sched
sudo sysctl -A | grep sched
Real time policy (priority 90):
sudo chrt -r -p 90 22336
SCHED_RR implements a round robin method
SCHED_FIFO uses a first in, first out mechanism
schedtool -h

struct thread_info
struct task_struct
struct nsproxy

do_fork()
do_execve()
kernel_thread()

struct sched_class
struct rq
struct sched_entity
scheduler_tick()
context_switch()

struct sched_class fair_sched_class
check_preempt_tick()

struct sched_class rt_sched_class
task_tick_rt()

New in 3.14
Earliest deadline first scheduling
struct sched_class dl_sched_class
task_tick_dl()

find_busiest_queue() compares rqs load weights

No comments: