慢慢欣赏linux 内核启动时将core0设置为自适应滴答模式失效

本文主要是介绍慢慢欣赏linux 内核启动时将core0设置为自适应滴答模式失效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux 4.19内核使能CONFIG_NO_HZ_FULL编译选项,生成内核之后,在bootloader启动参数指定core 0,4,5,6,7为自适应滴答模式,内核启动之后,发现core0并没有生效

# cat /proc/cmdline 
BOOT_IMAGE=(hd0,gpt1)/boot/Image nohz_full=0,4,5,6,7 root=/dev/nvme0n1p3 rw
# cat /sys/devices/system/cpu/nohz_full
4-7

对应的内核源代码为

drivers\base\cpu.c#ifdef CONFIG_NO_HZ_FULL
static ssize_t print_cpus_nohz_full(struct device *dev,struct device_attribute *attr, char *buf)
{int n = 0, len = PAGE_SIZE-2;n = scnprintf(buf, len, "%*pbl\n", cpumask_pr_args(tick_nohz_full_mask));return n;
}
static DEVICE_ATTR(nohz_full, 0444, print_cpus_nohz_full, NULL);
#endif

查看内核日志,确认内核将core设置为自适应滴答模式之前,会将启动核core0剔除掉

# dmesg | grep NO_HZ
[    0.000000] NO_HZ: Clearing 0 from nohz_full range for timekeeping
[    0.000000] NO_HZ: Full dynticks CPUs: 4-7.
# 

对应的内核代码如下

void __init tick_nohz_init(void)
{int cpu, ret;... ...cpu = smp_processor_id();	// 启动core为core0if (cpumask_test_cpu(cpu, tick_nohz_full_mask)) {	// nohz_full存在core0时进入if分支内部,剔除core0pr_warn("NO_HZ: Clearing %d from nohz_full range for timekeeping\n",cpu);cpumask_clear_cpu(cpu, tick_nohz_full_mask);}... ...pr_info("NO_HZ: Full dynticks CPUs: %*pbl.\n",cpumask_pr_args(tick_nohz_full_mask));
}

参考文档
NO_HZ: 减少调度时钟的滴答
https://blog.csdn.net/zhoudawei/article/details/86427101

有利于提高xenomai/PREEMPT-RT 实时性的一些配置建议
https://blog.csdn.net/qq_22654551/article/details/105475672

这篇关于慢慢欣赏linux 内核启动时将core0设置为自适应滴答模式失效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318525

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动