Linux 内核引导的若干选项

2023-09-25 22 0

在低延迟等场景中,看到了一些引导参数,对提升响应速度,降低延迟有一定效果,记录说明如下。以下均来自网络,描述不一定非常准确,仅供了解。

  • isolcpus=CPU编号列表
    将列表中的CPU从内核SMP平衡和调度算法中剔除。
    可以将特定的CPU隔离出来只给指定进程使用。

  • nohz_full=CPU列表
    在内核"CONFIG_NO_HZ_FULL=y"的前提下,指定哪些CPU核心可以进入完全无滴答状态。
    如果你有一个100Hz的滴答,那么每秒100次,操作系统会唤醒,检查是否有任何定时器已经过期,如果有则执行他们的操作,然后再次进入睡眠状态。在无滴答系统上,操作系统会查看下一个计时器何时到期,然后再睡到那个时间,而不是每秒唤醒100次以查看是否有任何可以处理的内容。
    当cpu上只有一个任务在跑的时候,不发送调度时钟中断到此cpu也就是减少调度时钟中断,不中断空闲CPU,从而可以减少耗电量和减少系统抖动。
    注意

    1. “boot CPU”(通常都是"0"号CPU)会无条件的从列表中剔除。
    2. 这里列出的CPU编号必须也要同时列进"rcu_nocbs=…"选项中。
  • rcu_nocbs=CPU列表
    当cpu有RCU callbacks pending的时候,nohzfull设置可能不会生效,使用rcu_nocbs来指定cpu进行卸载RCU callback processing

  • intel_pstate=disable
    禁用 Intel CPU 的 P-state 驱动(CONFIG_X86_INTEL_PSTATE),也就是Intel CPU专用的频率调节器驱动

  • idle=poll
    对CPU进入休眠状态的额外设置。 {“poll” | “halt” | “nomwait”}
    poll 从根本上禁用休眠功能(也就是禁止进入C-states状态),可以略微提升一些CPU性能,但是却需要多消耗许多电力,得不偿失。不推荐使用。
    halt 表示直接使用HALT指令让CPU进入C1/C1E休眠状态,但是不再继续进入C2/C3以及更深的休眠状态。此选项兼容性最好,唤醒速度也最快。但是电力消耗并不最低。
    nomwait 表示进入休眠状态时禁止使用CPU的MWAIT指令。MWAIT是专用于Intel超线程技术的线程同步指令,有助于提升CPU的超线程效能,但对于不具备超线程技术的CPU没有意义。
    [提示]可以同时使用halt和nomwait,也就是"idle=halt idle=nomwait"(但不是:idle=halt,nomwait)

  • elevator=deadline
    指定默认的IO调度器{“bfq”|“cfq”|“deadline”|“noop”},可以dmesg | grep -i scheduler查看支持的调度器。

    • CFQ(完全公平排队I/O调度程序)
      在最新的内核版本和发行版中,都选择CFQ做为默认的I/O调度器,对于通用的服务器也是最好的选择.
      CFQ试图均匀地分布对I/O带宽的访问,避免进程被饿死并实现较低的延迟,是deadline和as调度器的折中.
      CFQ对于多媒体应用(video,audio)和桌面系统是最好的选择.
      CFQ赋予I/O请求一个优先级,而I/O优先级请求独立于进程优先级,高优先级的进程的读写不能自动地继承高的I/O优先级.
    • NOOP(电梯式调度程序)
      NOOP实现了一个简单的FIFO队列,它像电梯的工作主法一样对I/O请求进行组织,当有一个新的请求到来时,它将请求合并到最近的请求之后,以此来保证请求同一介质.
      NOOP倾向饿死读而利于写.
      NOOP对于SSD等闪存设备,RAM,嵌入式系统是最好的选择.
    • Deadline(截止时间调度程序)
      通过时间以及硬盘区域进行分类,这个分类和合并要求类似于noop的调度程序.
      Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.
      Deadline对数据库环境(ORACLE RAC,MYSQL等)是最好的选择.

参考

http://www.jinbuguo.com/kernel/boot_parameters.html
https://www.sohu.com/a/158417513_610730
https://blog.csdn.net/shipeng1022/article/details/78604910

代码编程
赞赏

相关文章

SEO外链方法之论坛外链心得
seo论坛外链怎么带链接(做论坛外链怎么带链接才不会被删帖)
多仓库手机端erp进销存pc/h5开源版开发
java基于springboot的进销存管理信息系统
毕业设计之基于PHP+uniapp的进销存系统
【原创】基于SSM的超市进销存管理系统(超市管理系统毕业设计)