码迷,mamicode.com
首页 > 系统相关 > 详细

linux调度器的配置参数zz

时间:2017-12-02 22:12:16      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:不能   tun   str   方法   cal   copy   通过   配置   sysctl   

调度器的配置参数

/proc/sys/kernel/sched_min_granularity_ns(4000000ns):

sysctl_sched_min_granularity,表示进程最少运行时间,防止频繁的切换,对于交互系统(如桌面),该值可以设置得较小,这样可以保证交互得到更快的响应(见周期调度器的check_preempt_tick过程)

 

/proc/sys/kernel/sched_latency_ns(20000000ns):

sysctl_sched_latency,表示一个运行队列所有进程运行一次的周期,当前这个与运行队列的进程数有关,如果进程数超过sched_nr_latency(这个变量不能通过/proc设置,它是由(sysctl_sched_latency+ sysctl_sched_min_granularity-1)/sysctl_sched_min_granularity确定的),那么调度周期就是sched_min_granularity_ns*运行队列里的进程数,与sysctl_sched_latency无关;否则队列进程数小于sched_nr_latency,运行周期就是sysctl_sched_latency。显然这个数越小,一个运行队列支持的sched_nr_latency越少,而且当sysctl_sched_min_granularity越小时能支持的sched_nr_latency越多,那么每个进程在这个周期内能执行的时间也就越少,这也与上面sysctl_sched_min_granularity变量的讨论一致。其实sched_nr_latency也可以当做我们cpu load的基准值,如果cpu的load大于这个值,那么说明cpu不够使用了

 

/proc/sys/kernel/sched_features(3183d=110001101111b):

sysctl_sched_features,该变量表示调度器支持的特性,如GENTLE_FAIR_SLEEPERS(平滑的补偿睡眠进程),START_DEBIT(新进程尽量的早调度),WAKEUP_PREEMPT(是否wakeup的进程可以去抢占当前运行的进程)等,所有的features见内核sech_features.h文件的定义

 

/proc/sys/kernel/sched_wakeup_granularity_ns(4000000ns):

sysctl_sched_wakeup_granularity,该变量表示进程被唤醒后至少应该运行的时间的基数,它只是用来判断某个进程是否应该抢占当前进程,并不代表它能够执行的最小时间(sysctl_sched_min_granularity),如果这个数值越小,那么发生抢占的概率也就越高(见wakeup_gran、wakeup_preempt_entity函数)

 

/proc/sys/kernel/sched_child_runs_first(0):

sysctl_sched_child_runs_first,该变量表示在创建子进程的时候是否让子进程抢占父进程,即使父进程的vruntime小于子进程,这个会减少公平性,但是可以降低write_on_copy,具体要根据系统的应用情况来考量使用哪种方式(见task_fork_fair过程)

 

/proc/sys/kernel/sched_cfs_bandwidth_slice_us(5000us):

sysctl_sched_cfs_bandwidth_slice 

 

/proc/sys/kernel/sched_rt_period_us(1000000us):

sysctl_sched_rt_period,该参数与下面的sysctl_sched_rt_runtime一起决定了实时进程在以sysctl_sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sysctl_sched_rt_runtime(代码见sched_rt_global_constraints)

 

/proc/sys/kernel/sched_rt_runtime_us(950000us):

sysctl_sched_rt_runtime,见上sysctl_sched_rt_period变量的解释

 

/proc/sys/kernel/sched_compat_yield(0):

sysctl_sched_compat_yield,该参数可以让sched_yield()系统调用更加有效,让它使用更少的cpu,对于那些依赖sched_yield来获得更好性能的应用可以考虑设置它为1

 

/proc/sys/kernel/sched_migration_cost(500000ns):

sysctl_sched_migration_cost该变量用来判断一个进程是否还是hot,如果进程的运行时间(now - p->se.exec_start)小于它,那么内核认为它的code还在cache里,所以该进程还是hot,那么在迁移的时候就不会考虑它

 

/proc/sys/kernel/sched_nr_migrate(32):

sysctl_sched_nr_migrate,在多CPU情况下进行负载均衡时,一次最多移动多少个进程到另一个CPU上

 

/proc/sys/kernel/sched_tunable_scaling(1):

sysctl_sched_tunable_scaling,当内核试图调整sched_min_granularity,sched_latency和sched_wakeup_granularity这三个值的时候所使用的更新方法,0为不调整,1为按照cpu个数以2为底的对数值进行调整,2为按照cpu的个数进行线性比例的调整

 

linux调度器的配置参数zz

标签:不能   tun   str   方法   cal   copy   通过   配置   sysctl   

原文地址:http://www.cnblogs.com/soul-stone/p/7955609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!