增加 sched_latency_ns 和 sched_min_granularity_ns 的值

增加 sched_latency_ns 和 sched_min_granularity_ns 的值

为什么当我尝试增加这两个参数的值时会收到错误消息:

#cat /proc/sys/kernel/sched_latency_ns
1000000000
#echo 2000000000 > /proc/sys/kernel/sched_latency_ns
bash: echo: write error: Invalid argument
#

当我用 sched_min_granularity_ns 替换 sched_latency_ns 时,我遇到了同样的错误。

有人能告诉我增加这些参数的正确方法吗?

答案1

一秒是该设置可接受的绝对最大值。超过 1000000000 的值无效(一秒内的纳秒数)。

内核源代码

262 static int max_sched_granularity_ns = NSEC_PER_SEC;     /* 1 second */

294 行

294         {
295                 .procname       = "sched_latency_ns",
296                 .data           = &sysctl_sched_latency,
297                 .maxlen         = sizeof(unsigned int),
298                 .mode           = 0644,
299                 .proc_handler   = sched_proc_update_handler,
300                 .extra1         = &min_sched_granularity_ns,
301                 .extra2         = &max_sched_granularity_ns,
302         },

值越大,对性能的改善就越小。过高的值可能会引起问题。一秒已经是一个非常高的设置了。

相关内容