麒麟OS怎么处理由于进程过多导致的系统变慢

阿萱姑娘_5868

阿萱姑娘_5868

2026-09-19

540人浏览

原创

麒麟os因大量短命小进程引发上下文切换风暴导致卡顿,表现为鼠标拖拽卡顿、终端输入延迟等,此时nvcswch/s超8000且%usr低、%sys高,需用pidstat -w 1确认,而非依赖top;可通过禁用d-bus自动激活、冻结非核心小进程、调整内核调度参数及改用线程/事件驱动模型优化。

麒麟os怎么处理由于进程过多导致的系统变慢

麒麟OS因进程过多导致系统变慢,不是CPU总占用率高造成的假象,而是大量短命进程(如Python轮询脚本、监控采集任务、微服务容器)引发内核上下文切换风暴,表现为鼠标拖拽卡顿、终端输入延迟、窗口响应滞后——此时top里可能只显示15% CPU占用,但pidstat -w 1测得nvcswch/s已超12000。

确认是否为小进程调度瓶颈

打开终端,执行:pidstat -w 1,持续观察10秒以上。若nvcswch/s(非自愿上下文切换)稳定高于8000,且%usr低于20%、%sys持续高于35%,即可判定是小进程调度过载。注意:不要依赖top刷新结果,它默认3秒一帧,根本捕获不到几十毫秒生命周期的爆发式进程。

关闭非必要进程自动拉起机制

方法一:禁用D-Bus用户会话自动激活
进入~/.config/autostart/目录,逐个检查所有.desktop文件,在[Desktop Entry]段末尾添加NoDisplay=true;重点排查Exec=行是否调用python3 -c "import time; time.sleep(0.2)"类短命轮询命令。

方法二:冻结已知低优先级小进程组
执行pgrep -f "watcher\|poller\|check_" | xargs -r kill -STOP暂停全部含关键词的进程;后续需恢复时用kill -CONT。【关键前提】必须先确认这些进程非核心服务(如kylin-update-checkernm-applet不能停),否则网络管理或系统更新将中断。

调整内核调度参数降低切换开销

第一步:临时启用SCHED_BATCH策略降低交互敏感度
sudo sysctl kernel.sched_latency_ns=24000000sudo sysctl kernel.sched_min_granularity_ns=3000000sudo sysctl kernel.sched_migration_cost_ns=500000

第二步:永久生效(避免重启丢失)
新建/etc/sysctl.d/99-sched-tune.conf,写入上述三行参数,保存后执行sudo sysctl --system重载。

MarsCode
MarsCode

MarsCode 是一款带有 AI 编程助手和云开发环境的 AI IDE 工具。

下载

第三步:验证效果
运行cat /proc/sys/kernel/sched_latency_ns确认值已变更;再用pidstat -w 1对比调整前后nvcswch/s下降幅度——通常能压降40%~65%,尤其对Python多线程+time.sleep()组合效果显著。

替换高频fork进程为线程或事件驱动模型

若你可控这些小进程的源码(如自研Python监控脚本),立即改用threading.Timer替代os.system("sleep 1 && ./check.sh")类fork调用;或改用asyncio事件循环替代子进程轮询。这一步操作起来很简单,直接把原脚本里所有subprocess.Popenos.system替换成异步HTTP请求或定时器回调即可。

用ps + kill精准终结指定名称进程

第一步:查进程
在终端执行:ps -eo pid,comm,%mem,%cpu,user --sort=-%mem | head -10,这条命令列出内存占用最高的10个进程,含PID、命令名、内存占比、CPU占比和运行用户,比单纯grep更可靠——避免匹配到日志里的字符串。

第二步:温和终止
从上一步输出中抄下目标进程的PID(例如2847),执行:kill 2847。这相当于发送SIGTERM,进程有机会保存状态、释放锁、关闭socket连接。

第三步:强制收尾(仅当第二步无效时)
执行:kill -9 2847。⚠️ 强制终止不会触发进程自身的清理逻辑,可能导致临时文件残留或端口未释放。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

140

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

60

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

60

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

40

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

40

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

360

28

GDB怎么查看变量值
GDB怎么查看变量值

本专题介绍GDB调试过程中查看变量值的具体方法,涵盖局部变量、函数参数、数组、结构体和指针内容查询,同时整理变量持续显示、格式化输出及无法读取变量时的排查思路。

2026.09.11

120

22

GDB C++程序怎么调试
GDB C++程序怎么调试

本专题围绕GDB调试C++程序的实际过程,详细说明程序编译、调试器启动、命令行参数传入、断点命中和程序继续运行等步骤,并介绍条件断点、临时断点和观察点的设置方法,方便开发者跟踪复杂代码的执行状态。

2026.09.11

120

20

Iris框架MVC架构与依赖注入合集
Iris框架MVC架构与依赖注入合集

本专题讲解Iris框架MVC开发模式,包含控制器注册、方法命名与路径映射、By参数绑定、BeforeActivation自定义路由,以及依赖注入容器注册、数据库依赖注入、返回值序列化及MVC下WebSocket与gRPC整合实践。

2026.09.11

80

15

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133万人学习