您现在的位置是: 首页 > 计算机系统 计算机系统

windows管理器cpu 电源_windows资源管理器cpu

tamoadmin 2024-08-27 人已围观

简介1.如何解决win10管理器占用CPU过高现象2.管理器中cpu使用率一根实线一根虚线分别代表什么?3.为什么管理器占用CPU50啊?01关闭家庭组控制面板–管理工具–服务– HomeGroup Listener和HomeGroup Provider禁用。02关闭磁盘碎片整理、自动维护任务选中磁盘C-属性–工具–对驱动器进行优化和碎片整理–优化–更改设置–取消选择按运行。03关闭Windows D

1.如何解决win10管理器占用CPU过高现象

2.管理器中cpu使用率一根实线一根虚线分别代表什么?

3.为什么管理器占用CPU50啊?

windows管理器cpu 电源_windows资源管理器cpu

01关闭家庭组

控制面板–管理工具–服务– HomeGroup Listener和HomeGroup Provider禁用。

02关闭磁盘碎片整理、自动维护任务

选中磁盘C-属性–工具–对驱动器进行优化和碎片整理–优化–更改设置–取消选择按运行。

03关闭Windows Defender(视情况而定)

控制面板–Windows Defender –设置–实施保护-去掉勾和管理员–启用 Windows Defender –去掉勾。

控制面板–管理工具–服务- Windows Defender Service禁用。

04关闭Windows Search

控制面板–管理工具–服务- Windows Search禁用。

05设置好 Superfetch 服务

控制面板–管理工具–服务– Superfetch -启动类型–自动(延迟启动)。

06清理Windows.old文件夹

C盘–右键–属性-磁盘清理-选中以前的Windows 安装复选框–确定清理。

07设置自动登陆

Win+R–输入netplwiz-取消使用计算机必须输入用户名和密码的选项–然后双击需要自动登录的账户–输入你的密码。

08关闭ipv6

网络共享中心–网络连接–以太网–属性–取消 ipv6 。

09关闭特效

系统属性–高级-性能-设置–视觉效果-关闭淡出淡入效果。

10关闭虚拟内存

系统属性–高级-性能-设置,选择“高级”,点击虚拟内存中的“更改”,将“自动管理驱动器的分页文件大小”对勾去掉,点击下面的“无分页文件”,点击“设置”并“确定”即可。

如何解决win10管理器占用CPU过高现象

右侧共有3类CPU图表,其中一类是CPU总计,代表物理计算机总体的CPU占有率情况,

其中蓝色粗线条代表CPU当前的运行频率所占标称频率的百分比,绿色细线条代表当前系统的CPU占有率。

另外一类是服务CPU使用率,显示Windows系统中服务的占有率。第三类是物理计算机中每个逻辑处理器的CPU占有率,会给这两个逻辑处理器分别显示CPU占有率图表。

扩展资料:

电脑上的监视器是一个MMC管理单元,它是一个可以帮助用户分析系统性能的工具。通过它可以实时监控计箅机系统的使用情况,可以随时了解当前计算机的运行情况。

如哪些应用使汁算机变得缓慢,哪些操作使系统出现错误等。可以让系统有效地分配到最需要的服务、程序和进程中去,提髙计算机的工作效率。

主要用来监控CPU,内存,磁盘,网络的实时使用状况,例如那些进程和服务占用了多少CPU,内层,硬盘,消耗了多少网络,以及外网和内网的详细IP地址端口。

管理器中cpu使用率一根实线一根虚线分别代表什么?

方法一:减少电脑启动项

按Win+R键打开运行窗口,输入msconfig,点击确定;

在系统配置窗口中,切换至启动项,点击打开任务管理器,禁用一些不必要的启动项。

方法二:在任务管理器中结束相应的进程

按Ctrl+Alt+Del键打开任务管理器,查看哪个内存占用率高就结束该程序。

方法三:查看电脑是否中

CPU使用率过高也有可能是电脑中了。使用杀毒软件对电脑进行全盘查杀,需断网。

方法四:关闭电脑上的各种应用效果

右击桌面上的此电脑图标,选择属性,然后点击左侧的高级系统设置;

点击性能下面的设置按钮,取消勾选一些没有用的视觉特效。

方法五:禁用Connected User Experiences and Telemetry服务

按Win+R键打开运行窗口,输入services.msc,点击确定;

找到并双击打开Connected User Experiences and Telemetry,将启动类型设置为禁用,并停止该服务。 设置好 Superfetch 服务 控制面板–管理工具–服务– Superfetch

-启动类型–自动(延迟启动)。

为什么管理器占用CPU50啊?

CPU性能管理器有两条线是任务管理器默认勾选显示内核时间导致的,实线是CPU利用率,虚线是内核时间。

内核时间是线程执行操作系统代码已经经过了多少个100ns(纳秒)的时间,也就是CPU在内核态(kernel mode)运行的时间,相对于用户态(user mode),一个用户进程的线程调用某些api后会进入内核态,此时的CPU占用会被记入内核时间。

查看该图表可以知道您当前使用的处理时间是多少。如果您的计算机运行较慢,该图表就会显示较高的百分比。

这里CPU主频比较高是CPU处于超频工作状态导致的。

先说说我在没查阅任何资料之前的做法:

这里要先明确一点,

任务管理器(taskmgr)里面显示50%并非意味着当前cpu真就工作在一半的频率下,

仔细观察可以发现,

taskmgr的cpu使用率图表是周期性刷新的,

也就是说每经过一个interval期间,

cpu活动(执行指令)的时间和空闲(挂起)时间刚好相等的话,

那么就可以认为cpu占用率为50%,

表面上看就可以认为cpu的运行频率降低了(实际上没有).

有了上面的认识,

就可以得到一个大致的思路:

在程序中首先执行一定规模的代码,

然后调用sleep()函数让线程挂起x(ms),

如此周而复始,

如果代码执行花费的时间和挂起时间大致相等,

那么从一个interval来看,

cpu占用率正好就是50%.

有了这个初步想法,

那么难点就在于如何估算执行代码所花费的时间了,

要执行一定规模的的代码,

最简单的方法就是写一个busy

loop(也就是空循环),

比如for(i

=

0;

i

<

n;

i++);如果能合理估算出这段代码的运行时间,

那么就可以知道需要挂起多长时间了.

之所以选用busy

loop而不是其他api之类的,

是因为它不需要调用任何privilege

instruction(没有io操作等),

这样就不会在运行中影响内核时间,

因为内核在运行privilege

instruction时我们是无法控制的,

要使得50%的曲线更加平滑,

就应该尽量减少uncontrolable的内核时间.

所以busy

loop是最简单最容易估算的代码段了.

接下来是估算:

分析for(i

=

0;

i

<

n;

i++);可以大致推算出每次循环需要5行汇编代码

loop:

mov

dx

i

add

dx

1

mov

i

dx

cmp

i

n

jmp

loop

(很久以前学的汇编,

忘记了那个判断大小后跳转的语句怎么写了...凑合一下吧)

我的cpu是p4

2.4ghz,

等于2.4

*

10的9次方个时钟周期每秒,

记得以前上微机原理时说现代cpu每个时钟周期可以执行2条以上的代码,

那么我就取平均2条,

于是让

(2400,000,000

*

2)

/

5

=

960000000(循环/秒),

也就是说,

cpu一秒钟可以运行那个循环960000000次.

不过我们还是不能简单地将n

=

960000000,

然后sleep(1000)了事.

因为windows并不是一个独占的实时系统,

而是一个抢先式多任务系统,

分配给某个线程的运行时间片是会被其他更高优先级的线程抢先的,

而且taskmgr的刷新率也小于1s,

如果我们让cpu工作1s,

挂起1s,

波形很有可能就是呈现锯齿状的,

先达到一个峰值(大于>50%),

然后跌到一个很低的占用率!

于是我尝试着降低两个数量级,

令n

=

9600000,

而sleep(10).

用10ms是因为它不大也不小,

1ms的话会造成线程频繁地被唤醒和挂起,

无形中又是增加了内核时间的不确定性影响.

可以得到代码如下:

#include

int

main()

{

for(;

{

for(i

=

0;

i

<

9600000;

i++);

sleep(10);

}

return

0;

}

编译,

尽量关闭其他应用程序,

停掉能停的服务,

然后运行,

bingo!

在我的机器上,

已经显示cpu在50%附近了,

但是还有小幅度抖动,

此时适当调整n的大小,

几次尝试运行后就可以得到一个相对平滑的结果了!

为了验证我的推算正确性,

我又找了几台机器试了一下,

发现不同的cpu得到的结果会有所不同,

在一个p4

3.2ghz

ht的cpu上,

关掉ht功能,

得到7680000

6ms是比较好的结果,

同时还发现一个好玩的现象,

就是开了ht功能后,

就不用sleep()函数了,

直接写一个无限循环就可以让cpu跑在50%左右,

这可谓是最简单的方法

:),

而在迅驰和mobile系列cpu上由于运行频率会动态改变,

所以实现起来估算和实际情况出入比较大.

在程序运行起来后,

在taskmgr里面将它的优先级设置为最高(减少争用)也可以一定程度上让波形平滑一些.

而打开内核时间的显示后可以发现,

波形的抖动基本上都是由内核活动影响的.

根据这个原理,

让cpu波形维持在50%以外的数值也不是不可能的,

关键是让循环次数和挂起时间进行匹配,

而且它们的数量级还与cpu时间片分配和taskmgr波形刷新周期有关.

先估算一个值,

然后根据比例放大或者缩小,

再进行细微调整,

找到两个合适的数值不是难事.

而且,

有了根据这个原理,

还可以让cpu波形呈现sin()函数的形式,

比如先对0'~180'间取10'区间进行取样,

得到一个函数值数组,

然后根据数组的值对busy

loop中的循环数和挂起时间进行换算修改,

从理论上来说是这肯定可行的,

不过指令数一多一复杂估算的精确性就会降低.

为了了解taskmgr的工作原理,

我查阅了一下相应的api资料,

发现两个函数queryperformancefrequency()和queryperformancecounter()可以精确得到一段代码的运行时间,

于是想到可以构造两个相同的大busy

loop,

先在程序开头算出运行所需的精确时间,

然后用它来对sleep()函数进行赋值,

这样也可以实现某种意义上的自动化(不用估算了xd...)

修改程序如下:

#include

int

main()

{

int

i

=

96000000,

j

=

0;

large_integer

freq

=

{0};

large_integer

start

=

{0};

large_integer

end

=

{0};

dword

elapse

=

0;

queryperformancefrequency(&freq);

printf("freq

=

%u\n",

freq.quadpart);

queryperformancecounter(&start);

queryperformancecounter(&end);

longlong

overhead

=

end.quadpart

-

start.quadpart;

printf("overhead

=

%d\n",

overhead);

queryperformancecounter(&start);

for(i

=

0;

i

<

9600000;

i++);

queryperformancecounter(&end);

longlong

temp

=

(end.quadpart

-

start.quadpart

-

overhead);

printf("temp

=

%d\n",

temp);

elapse

=

(dword)(((double)temp

/

(double)freq.quadpart)

*

1000.0);

printf("elapse

=

%lf\n",

temp2);

for(;

{

for(i

=

0;

i

<

9600000;

i++);

sleep(elapse);

}

return

0;

}

不过精确计算的结果似乎并不能得到更平滑的图像,

因为我甚至连两次调用api的花费都减掉了,

也许是过犹不及吧...总之我实验的结果是比较粗糙.

最后总结一下两个心得:

1.

尽量减少sleep/aweak的频率和花费,

如果频繁发生的话影响会很大.

2.

尽量不要调用system

call(i/o这些privilege

instruction),

因为它会导致很多uncontrolable的kernel

time.

3.

由于抢先式多任务的争用性质,

想要精确控制曲线几乎是不可能的...

(不知这个结论是不是很绝对,

如果有办法用hack的方法hook入taskmgr的函数调用点,

修改它的返回值,

那么想显示什么波形就显示什么波形了,

我是没有功力做这么"伟大"的事情了...)