0

0

Linux CPU 时间片是如何分配的?

舞姬之光

舞姬之光

发布时间:2026-01-30 19:43:02

|

424人浏览过

|

来源于php中文网

原创

Linux改用CFS调度器基于vruntime动态调度而非固定时间片,以实现按权重公平分配CPU时间;高nice值进程vruntime增长快、调度少,交互进程唤醒时vruntime被调低而优先运行。

linux cpu 时间片是如何分配的?

Linux 不再用固定时间片分配 CPU,而是靠 CFS 调度器动态计算“虚拟运行时间(vruntime)”来决定谁该上 CPU。你看到的 top 里“正在运行”的进程,绝大多数其实没真在跑——只是被 CFS 选中、排在了当前就绪队列最前面而已。

为什么改用 vruntime 而不是固定时间片?

固定时间片(比如老内核的 10ms)在负载变化时很僵硬:交互任务要低延迟,CPU 密集型任务要高吞吐,一刀切会两头不讨好。CFS 的核心是让每个进程“公平地”获得与其权重匹配的 CPU 时间,数学上近似满足:w_i / Σw_jw_i 是进程权重)。它不承诺“每 5ms 切一次”,而是持续追踪每个进程“本该运行多久了”,然后挑 vruntime 最小的那个上。

  • nice 值(低优先级)→ 权重小 → vruntime 增长快 → 更少被调度
  • 刚唤醒的交互进程(如鼠标点击后唤醒的 GUI 线程)→ vruntime 被主动调低 → 下次极大概率被立即选中
  • 长时间霸占 CPU 的编译进程 → vruntime 持续飙升 → 自动让出机会

怎么查和调一个进程的实际调度行为?

别信 ps -o time 这种累计时间,它不反映调度粒度。要看真实调度节奏,得用:

  • pidstat -t -p 1:每秒输出线程级的 %cpuPriority,观察是否频繁被切走
  • chrt -p :确认当前策略(SCHED_NORMAL 表示走 CFS)和实时优先级(普通进程为 0)
  • cat /proc//sched | grep -E "(vruntime|se\.sum_exec_runtime)":直接读内核调度结构体,vruntime 值越小越“饥饿”

注意:vruntime 是纳秒级数值,且不同 CPU 核心的 runqueue 独立维护,跨核迁移后会做补偿校准——所以绑核(taskset)后看到的 vruntime 才真正可比。

网奇Eshop网络商城系统
网奇Eshop网络商城系统

网奇.NET网络商城系统是基于.Net平台开发的免费商城系统。功能强大,操作方便,设置简便。无需任何设置,上传到支持asp.net的主机空间即可使用。系统特色功能:1、同时支持Access和SqlServer数据库;2、支持多语言、多模板3、可定制缺货处理功能4、支持附件销售功能5、支持会员组批发功能6、提供页面设计API函数7、支持预付款功能8、配送价格分地区按数学公式计算9、商品支持多类别,可

下载

哪些操作会意外破坏 CFS 的公平性?

CFS 很聪明,但人为干预常让它“困惑”:

  • 给多个 CPU 密集型进程设相同 nice 值,却把它们全绑到同一颗 CPU 上 → 它们会按 vruntime 轮着跑,但上下文切换开销暴增(比如 nginx worker 数 > CPU 核数)
  • chrt -f 99 把后台任务设成 SCHED_FIFO → 它会彻底压过所有 CFS 进程,连 ssh 都可能卡住
  • 在 NUMA 机器上只用 taskset 绑核,却不配 numactl --membind → 进程在 CPU0 跑,数据却从远端内存取,延迟翻倍,CFS 以为它“慢”而多给时间片,实则浪费

CFS 的公平是带权重的动态平衡,不是平均主义。真正要调的不是“时间片大小”,而是进程的权重(nice)、执行位置(taskset/numactl)、甚至是否该脱离 CFS(比如硬实时必须用 SCHED_FIFO)。看 /proc/sys/kernel/sched_latency_ns 这类参数前,先确认你面对的是调度延迟问题,还是内存/IO/锁瓶颈——后者调啥都没用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

233

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

502

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

501

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

234

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

341

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3521

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

33

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

54

2026.01.13

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号