从系统卡说起

来源:互联网 发布:乡村旅游数据去哪里找 编辑:程序博客网 时间:2024/05/04 05:28

今天有同事上报说系统启动之后,几分钟后会变得极卡。我过去定位了下,最终发现是系统启用搜索索引的原因。同时也想到几个问题,对一个应用程序来说,一部分时间运行在用户模式下,一部分时间运行在内核模式。那么Windows 下如何查看一个进程多少时间运行在内核模式,多少时间运行在用户模式?方法是Windows提供性能监控工具perfmon,直接在命令行下运行perfmon即可启动。应该是所有Windows系统都自带的工具。具体用法不说了,简单说明几个参数:
processor: % Privileged Time //单个CPU运行在内核模式下的时间比
processor: % User Time //单个CPU运行在用户模式下的时间比
process: % Privileged Time //单个进程运行在内核模式下的时间比
process: % User Time //单个进程运行在用户模式下的时间比
Thread: % Privileged Time //单个线程运行在内核模式下的时间比
Thread: % User Time //单个线程运行在用户模式下的时间比
可以添加某个进程相关监控项。另外有一个很好用的工具qslice.exe也是系统自带的。这些工具基本是对任务管理的一个补充。毕竟任务管理器不能查看单个进程在内核和用户态下的CPU数据。这工具还能看ip,udp,tcp相关的更多数据。

看到某个疑点进程之后,尝试定位该进程是由谁启动的,即找出父进程。
这点可以通过各种工具找到,比如process-explorer,pchunter等工具都能查看,这里介绍windows自带的命令:

wmic process  get  processid, parentprocessid | findstr <pid>

或者

wmic process where (processid=<pid>) get parentprocessid

注意如果能找到,输出的第一列是ppid,第二列才是pid。
定位发现,占用近一半cpu的是SearchIndexer进程。
对应的服务是Windows Search。
默认情况下该服务并不启动。

说点别的,用刚才的办法,我们还可以了解到系统中几个关键进程的启动顺序:
System(4)
smss.exe(1124, 4)
winlogon.exe(1208,1124)/csrss(1176,1124)
services.exe(1312,1208)/lsass.exe(1324,1208)

0 0
原创粉丝点击