Showing posts with label scheduler. Show all posts
Showing posts with label scheduler. Show all posts

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