Chinaunix首页 | 论坛 | 博客
  • 博客访问: 419718
  • 博文数量: 124
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 872
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-29 14:38
个人简介

默默的一块石头

文章分类

全部博文(124)

文章存档

2022年(26)

2021年(10)

2020年(28)

2019年(60)

我的朋友

分类: LINUX

2022-03-02 15:14:55

/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的个数进行线性比例的调整



参考文献:

http://doc.opensuse.org/documentation/html/openSUSE/opensuse-tuning/cha.tuning.taskscheduler.html
--------------------- 
作者:wudongxu 
来源:CSDN 
原文:https://blog.csdn.net/wudongxu/article/details/8574753 
版权声明:本文为博主原创文章,转载请附上博文链接!
阅读(1356) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~