当出现系统卡慢时,我们如何去诊断到底是哪里出了问题?
首先我们需要定义一下什么是系统卡,还有当前系统速度慢指的是什么慢。
这里要讨论的系统卡是指正常的鼠标或打字操作出现明显的卡顿,比如鼠标在屏幕上画圆出现跳动或转圈的图标。如果鼠标的轨迹无法流畅地画圆,或拖动窗口时出现顿挫感说明当前系统开始卡了。
还有一种情况就是在打字时出现字符跟不上手速的情况,这种情况一般在Linux的命令行比较常见,早期的 windows 10 自带的输入法 bug 也会造成这种情况,换个输入法就明显改善输入卡顿的情况。Linux 如果出现命令行都开始卡顿的情况,说明系统资源出现枯竭,内存被耗尽、CPU负载过高、磁盘IO达到峰值都会造成卡顿。
Linux 系统出现卡顿都是非常严重时才能感知,就像你在 Windows 下只开一个 cmd 窗口,你想通过命令行的流畅度来感知当前系统是否出现性能问题是非常难的。正常情况下,只要我们能流畅地控制电脑,就算各种程序运行的慢点,我们也认为这是正常情况。当发现连正常操作都卡顿时,这时就要解决是哪里导致系统卡顿。
Linux 一般使用 top 、iotop、nload 等工具检查 CPU、内存、磁盘IO、网络使用情况来判断当前系统状态。
Windows 系统比较麻烦,可能CPU占用并不高,内存也用只用了不到50%,但还是感觉操作卡顿。这里提供一下处理思路,首先调用系统的任务管理器检查当前系统状态,Windows 的任务管理器快捷键为 Ctrl+Shift+Esc,如果怀疑 Chrome 出现异常,Chrome 的任务管理器为 Shift+Esc


通过观察当前任务管理器中CPU、内存的状态来进行调整,我们可以切到任务管理器的详细信息Tab页,通过杀掉当前不用的进程的方式来排查到底是哪个进程影响了当前系统的状态。除了通过任务管理器杀进行,我们还可以使用命令行来杀进程,特别是有很多相同执行文件的进行,可以快速杀掉。
C:\Users\hyang0> taskkill f im msedge.exe成功: 已终止进程 "msedge.exe",其 PID 为 13912。成功: 已终止进程 "msedge.exe",其 PID 为 13932。成功: 已终止进程 "msedge.exe",其 PID 为 14276。成功: 已终止进程 "msedge.exe",其 PID 为 14300。成功: 已终止进程 "msedge.exe",其 PID 为 8252。C:\Users\hyang0> taskkill f im igfxEM.exe成功: 已终止进程 "igfxEM.exe",其 PID 为 2768。C:\Users\hyang0> taskkill f im spoolsv.exe错误: 无法终止进程 "spoolsv.exe",其 PID 为 4324。原因: 拒绝访问。C:\Users\hyang0> taskkill /f /im wps.exe成功: 已终止进程 "wps.exe",其 PID 为 16872。成功: 已终止进程 "wps.exe",其 PID 为 9192。C:\Users\hyang0> taskkill /f /im everything.exe错误: 无法终止进程 "Everything.exe",其 PID 为 4608。原因: 拒绝访问。成功: 已终止进程 "Everything.exe",其 PID 为 12224。C:\Users\hyang0> taskkill /f /im sunloginclient.exe错误: 无法终止进程 "SunloginClient.exe",其 PID 为 4896。原因: 拒绝访问。错误: 无法终止进程 "SunloginClient.exe",其 PID 为 6680。原因: 拒绝访问。成功: 已终止进程 "SunloginClient.exe",其 PID 为 11276。
通过慢慢杀掉当前工作不需要的进程的方法,我们边杀边用鼠标画圆来感受系统的流畅度。Windows 是个分时系统,当后台进程过多时它们虽然占用的CPU和内存都不多,但内核还是会分一些时间给它们执行。大多数时候系统慢都是因为后台进程过多造成的,在这个过程中如果能找到导致卡慢的真凶记住它的可执行文件名称,下次直接命令行批量杀掉即可。
还有一些进程是服务,这次处理了下次重启它可以还会造成卡慢。此时就要对开机项进行筛查了。在命令行或运行窗口执行 msconfig,对非 Windows 服务进行关停:


Win10 之后的启动项转到任务管理器中了,对状态进行排序,检查已启用的开机项,禁用掉不用的开机项。

重启之后检查系统流畅度,减少后台进程是优化的方向。因为进程越多,可能造成卡顿的风险就越多。有些进程的优先级比较高,可以优先获得系统资源从而拖慢UI的响应速度。我们优化的目的是让鼠标、输入等操作流畅丝滑,而非让CPU、内存等占用变低。当CPU、内存等占用很高但操作还是很流畅,并不影响我们的主观感受,我们并不介意机器性能被榨干。反而是CPU、内存占用低说明系统性能被浪费了。
进程多开和系统变卡是个渐进的过程,在保障流畅度的情况下尽量多开。同时也要优化后台进行,让偷偷运行的进程在启动前终结掉或后期杀掉,不需要的进行在后台运行就是在浪费电。
管理开机启用还有一个微软自家的小工具 sysinternals 工具包下的 autorun 工具,可以在微软官网下载。
https://learn.microsoft.com/zh-cn/sysinternals/


可以在 autorun 程序中对隐藏的开机启动项进行禁用或删除。
总结
使用排除法杀掉可能引起卡顿的进程;
边杀进程边鼠标画圆验证;
保存杀进程的命令,批量执行;
尽量减少后台用不上进程的数量;
通过优化开机服务和启动项的方式一劳永逸;
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。




