中移(苏州)软件技术有限公司面试问题与解答(5)—— Linux进程调度参数调优是如何通过代码实际完成的1

接前一篇文章:中移(苏州)软件技术有限公司面试问题与解答(0)—— 面试感悟与问题记录

本文对于中移(苏州)软件技术有限公司面试问题中的“(11)Linux进程调度参数调优是如何通过代码实际完成的?”进行解答与解析。

本文中的进程调度调优参数主要指的是以下参数:

它们可以在不重新启动机器的情况下使用Linux提供的命令sysctl进行更改。每个参数的含义如下:

  • sched_latency_ns

CFS(完全公平调度器)是从内核2.6.23版本开始采用的进程调度器。基本原理:设定一个调度周期(sched_latency_ns),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法也就是每个进程等待CPU的时间最长不超过这个调度周期;然后根据进程的数量,平分这个调度周期内的 CPU 使用权,由于进程的优先级即 nice 值不同,分割调度周期的时候要加权。

参数对应路径为:/proc/sys/kernel/sched_latency_ns。

对应内核代码中的变量为:sysctl_sched_latency(kernel/sched/fair.c中)。

  • sched_migration_cost_ns

这是在上次执行之后,任务在迁移决策中被视为热缓存的时间量。热任务更少可能迁移到另一个CPU,因此,增加此变量会减少任务迁移。当存在可运行进程时,如果CPU空闲时间高于预期,则建议降低此值;如果任务在CPU或结点之间频繁切换,最好增加它。

参数对应路径为:/proc/sys/kernel/sched_migration_cost_ns

对应内核代码中的变量为:sysctl_sched_migration_cost(kernel/sched/fair.c中)。

  • sched_min_granularity_ns

CFS设定了进程占用CPU的最小时间值,正在CPU上运行的进程如果不足这个时间是不可以被调离CPU的。如果进程数量太多的话,就会造成CPU时间片太小,如果小于 sched_min_granularity_ns 的话就以sched_min_granularity_ns为准;而调度周期也随之不再遵守 sched_latency_ns,而是以(sched_min_granularity_ns * 进程数量)的乘积为准。

参数对应路径为:/proc/sys/kernel/sched_min_granularity_ns。

对应内核代码中的变量为:sysctl_sched_min_granularity(kernel/sched/fair.c中)。

  • sched_nr_migrate

此参数控制了出于负载平衡目的可以跨处理器迁移的任务数量。当负载平衡使用禁用的中断(softirq)迭代运行队列时,它可能会导致实时任务的irq延迟损失。因此,增加此值可能会以增加实时任务的irq延迟为代价,提高大型SCHED_OTHER线程的性能。即在多CPU情况下进行负载均衡时,一次最多移动多少个进程到另一个CPU上。

参数对应路径为:/proc/sys/kernel/sched_nr_migrate。

对应内核代码中的变量为:sysctl_sched_nr_migrate(kernel/sched/core.c)。

  • sched_rr_timeslice_ms

此参数可以调整SCHED_RR策略中的量程(时间片)。

参数对应路径为:/proc/sys/kernel/sched_rr_timeslice_ms。

对应内核代码中的变量为:sysctl_sched_rt_runtime(kernel/sched/rt.c中)。 

  • sysctl_sched_rt_period/sysctl_sched_rt_runtime

参数对应路径分别为:/proc/sys/kernel/sched_rt_period_us和/proc/sys/kernel/sched_rt_runtime_us 。

对应内核代码中的变量分别为:sysctl_sched_rt_period和sysctl_sched_rt_runtime(均在kernel/sched/rt.c中)。

sysctl_sched_rt_period和sysctl_sched_rt_runtime两个参数一起决定了实时进程在以sysctl_sched_rt_period为周期的时间内,实时进程最多能够运行的总的时间不能超过sysctl_sched_rt_runtime。

  • sched_cfs_bandwidth_slice_us

当使用CFS带宽控制时,此参数控制从任务的控制组带宽池传输到运行队列的运行时(带宽)量。较小的值允许在任务之间以细粒度的方式共享全局带宽,而较大的值则减少了传输开销。

参数对应路径为:/proc/sys/kernel/sched_cfs_bandwidth_slice_us。

对应内核代码中的变量为:sysctl_sched_cfs_bandwidth_slice(kernel/sched/fair.c中)。

  • sched_wakeup_granularity_ns wakeup

该变量表示进程被唤醒后至少应该运行的时间的基数,它只是用来判断某个进程是否应该抢占当前进程,并不代表它能够执行的最小时间(sysctl_sched_min_granularity),如果这个数值越小,那么发生抢占的概率也就越高。

参数对应路径为:/proc/sys/kernel/sched_wakeup_granularity_ns。

对应内核代码中的变量为:sysctl_sched_wakeup_granularity。

下一篇开始,将结合实际Linux内核代码看看这些参数是如何在内核中通过代码起作用的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Expect交互工具与字符处理

目录 一、免交互应用 1. Here Document 1.1 定义与语法 1.2 注意事项 1.3 eof 1.4 tee 2. expect 2.1 定义与格式 2.2 expect基本命令 2.3 interact与expect eof区别演示(免交互ssh主机) 2.4 批量远程新建用户 二、字符处理 1. 字符串切片…

python爬虫爬取网站

流程: 1.指定url(获取网页的内容) 爬虫会向指定的URL发送HTTP请求,获取网页的HTML代码,然后解析HTML代码,提取出需要的信息,如文本、图片、链接等。爬虫请求URL的过程中,还可以设置请求头、请求参数、请求…

老卫带你学---Bazel学习笔记(一)

今天来开始学习Bazel这个工具,其实在Google等大公司都会推崇Bazel来作为自己项目构建以及测试的标准工具(标准玩法就是Monorepobazel主干开发) Bazel是什么 Bazel 是一个类似于 Make、Maven的开源构建和测试工具,支持多种语言多…

湘潭大学-计算机网络-补考

背景 卷面分23,平时分85,各占百分之50,最终54,遗憾挂科 大学第一次补考 计划 首先把湖科大教书匠的计算机网络视频看一遍,并做一些笔记 然后看教材 刚看到老师说最好的复习资料是书和课后作业(想起来…

EasyExcel使用,实体导入导出

简介 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中…

深入浅出AI落地应用分析:AI个人助手Monica

前言:铺天盖地的大模型以及所谓的应用到目前为止实际还是很少有像Monica这样贴合个人工作习惯的产品落地,比如像Chatgpt等这样的产品,绝大多数人不会专门买🪜翻墙出去用,而且大多数场景下素人或小白都不知道该怎么用,但是Monica这款产品就很好的以浏览器的插件的形式始终…

PyTorch][chapter 12][李宏毅深度学习][Semi-supervised Linear Methods-1]

这里面介绍半监督学习里面一些常用的方案: K-means ,HAC, PCA 等 目录: K-means HAC PCA 一 K-means 【预置条件】 N 个样本分成k 个 簇 step1: 初始化簇中心点 (随机从X中抽取k个样本点作为) Repeat: For all in X: 根据其到 &…

[Bug] [OpenAI] [TypeError: fetch failed] { cause: [Error: AggregateError] }

[Bug] [OpenAI] [TypeError: fetch failed] { cause: [Error: AggregateError] } ubuntu20 win10 edge浏览器访问 服务器部署 页面打开后想使用chatgpt报错了 rootcoal-pasi1cmp:/www/wwwroot/ChatGPT-Next-Web# PORT3000 yarn start yarn run v1.22.19 warning package.json:…

LeetCode160. 相交链表

160. 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,…

【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第23套

少儿编程 蓝桥杯青少组科技素养题真题及解析第23套 1、英国计算机科学家艾伦图灵于 1950 年提出了著名的“图灵测试”,用于判断计算机是否具有智能。“图灵测试”是通过()的方法进行判断的 A、让两台计算机对话 B、让人类与计算机对话 C、给计算机出题 D、让计算机分辨图…

力扣:122 买卖股票的最佳时机 II(贪心)

一. 链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode) 二. 题目 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有…

【轮式平衡机器人】——TMS320F28069片内外设之ADC

一、ADC概述 这一部分不是我们的重点,原理分类啥的这里简要说明! 步骤:采样、保持、量化、编码 将采样电平(模拟值)转换为数字值的方法:直接比较型(并行ADC、逐次逼近型ADC)&…

2024.1.30 GNSS 学习笔记

站星双差Kalman滤波伪距差分定位流程 1. RTK定位技术(实时载波相位差分技术)原理-站间单差浮点解 1.RTK技术其实就是在RTD技术的基础上增加载波观测值的使用。由于伪距的噪声在分米量级,即使我们通过站间单差消除了绝大部分的误差影响&…

面试手写第二期 Promsie相关

文章目录 一. 手写实现PromiseA规范二. Promise.all实现三. Promise.race实现四. Promise.allsettled实现六. Promise.any实现六. 如何实现 Promise.map,限制 Promise 并发数七. 实现函数 promisify,把回调函数改成 promise 形式八. 并发请求控制 一. 手…

adb控制设备状态

屏幕设置 屏幕亮度 # 当前屏幕亮度 adb shell settings get system screen_brightness# 更改屏幕亮度adb shell settings put system screen_brightness屏幕休眠时间 # 当前屏幕休眠时间 adb shell settings get system screen_off_timeout#更改屏幕休眠时间 adb shell sett…

【React】前端项目引入阿里图标

【React】前端项目引入阿里图标 方式11、登录自己的iconfont-阿里巴巴矢量图标库,把需要的图标加入到自己的项目中去;2、加入并进入到项目中去选择Font class 并下载到本地3、得到的文件夹如下4. 把红框中的部分粘贴到自己的项目中(public 文…

爬虫入门到精通_基础篇4(BeautifulSoup库_解析库,基本使用,标签选择器,标准选择器,CSS选择器)

1 Beautiful说明 BeautifulSoup库是灵活又方便的网页解析库,处理高效,支持多种解析器。利用它不用编写正则表达式即可方便地实线网页信息的提取。 安装 pip3 install beautifulsoup4解析库 解析器使用方法优势劣势Python标准库BeautifulSoup(markup,…

Web3.0初探

Web3.0初探 一、互联网发展史二、什么是Web3.0?三、现在的发展方向(衍生出来的产品):四、目前问题五、Web3.0与元宇宙 一、互联网发展史 Web3.0也就是第三代互联网。最新版本的Web3.0是以太坊的创始合伙人Gavin Wood在2014年提出…

Redis核心技术与实战【学习笔记】 - 7.Redis GEO类型 - 面向 LBS 应用的数据类型

前言 前面,介绍了 Redis 的 5 大基本数据类型:String、List、Hash、Set、Sorted Set,它们可以满足绝大多数的数据存储需求,但是在面对海里数据统计时,它们的内存开销很大。所以对于一些特殊的场景,它们是无…

全面解析msvcr100.dll丢失的解决方法,关于msvcr100.dll文件丢失是如何显示的

msvcr100.dll文件的丢失是一个常见的问题,它会导致一些应用程序无法正常运行或出现错误。为了解决这个问题,我们可以采取多种方法。下面将介绍几种常用的msvcr100.dll丢失的解决方法,通过采用合适的方法,我们可以轻松解决该问题&a…