慢慢欣赏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

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2