
cpu的使用率 是怎么计算的 高手说说
我是想知道CPU是按照什么加大他的可使用率变大的!~比如我以前的电脑CPU是AMD3200运行一个游戏他的使用率的90%现在我换的是AMD440三核的运行同样的游戏使用率...
我是想知道 CPU是按照什么加大 他的可使用率变大的!~ 比如我以前的电脑CPU是AMD3200 运行一个游戏他的 使用率的90% 现在我换的是AMD 440 三核的 运行同样的游戏使用率是40% 他们的使用率是怎么算的 ? 核数 的增加? 还是 住频外频 还是 CPU的 一级二级三级 缓存 而变大的, 我现在的CPU 也不够用了 玩的玩的就80%多了, 我还想换个 想 调 个能同时运行好多东西 而 CPU 还够我用的。所以我想知道看他的什么就知道他能带动多少东西, 不知道我说清楚没 你们勉强的看吧 知道的 好好说说
展开
4个回答
展开全部
方法1: 使用CPU的处理能力基准计算实时CPU占用率
具体描述:
(1) 在RTOS系统启动前, 使用Tick中断测试CPU的处理能力基准 CPUPerformanceBase;
(2) 在系统进入运行后, 使用空闲任务执行与测试CPU处理能力基准完全相同的算法, 得到RTCPUPerformance.
(3) 周期地计算CPU占用率, 并清除RTCPUPerformance的值, 一般每秒钟计算一次:
RealTime CPU Load = 1 - (RTCPUPerformance/CPUPerformanceBase) * 100%
优点:
(1) 实现简单
(2) 所得到的CPU占用率非常准确, 误差只取决于CPUPerformanceBase的测试结果和整除时的余数, 通常误差小于1%
(3) 不占用硬件资源
缺点:
(1) CPU必须一直全速运行, 不能修改CPU主频, 也不能使CPU进入掉电保护模式
(2) 不能得到系统中每个任务对CPU占用率的贡献
(3) 必须有一个空闲任务才能计算
评价:
这个算法只适用于工控, 电信等对不需要使CPU进入掉电保护模式的领域.
方法2: 在Tick中断中对RTOS中的任务进行采样
具体描述:
(1) 系统进入运行后, 每次Tick中断发生时, 采样一下当前正在执行的任务, 如果CPU处于HALT态, 累加haltTimes
(2) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除haltTimes:(tickIntFrequance表示Tick中断的发生频率)
RealTime CPU Load = haltTimes / tickIntFrequance
某个任务对CPU占用率的贡献 = 一个周期内该任务被采样到的次数 / tickIntFrequance * 100%
优点:
(1) 实现简单
(2) 支持CPU掉电模式
(3) 可以大致得到每个任务对CPU占用率的贡献
缺点:
(1) 误差取决于Tick的频率和OS中每个任务的运行时长, 因此误差非常大
评价:
这个算法适用于对CPU占用率精度要求不高的消息电子产品.
方法3: 精确计算每个任务对CPU占用率的贡献
具体描述:
(1) 除Tick中断外,另开一个比Tick中断频率快若干倍的周期中断(就叫AUXTimer中断吧), 这个中断只对一个计数器执行一次累加.
(2) 在OS每次执行任务切换时读取该计数器的值(AUXTimer), 并保存到TCB中, 比如, 从任务Task1切换到任务Task2, 算法如下:
Task1, 换出动作:
task1的结束运行时间 = AUXTimer的当前值
task1的总运行时间 = task1的总运行时间 + task1的结束运行时间 - task1的开始运行时间
Task2, 换入动作:
task2的开始运行时间 = AUXTimer的当前值
(以上算法中没有考虑数字回绕, 在工程实现时应当考虑, 发生回绕后任务的结束运行时间小于任务的开始运行时间.
(3) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除每个任务的总运行时间, 下面的公式中, 一个周期内的总时间等于AUXTimer周期除以Tick周期得到的倍数:
某个任务对CPU占用率的贡献 = 一个周期内该任务的总运行时间 / 一个周期内的总时间
RealTime CPU Load = 所有任务的CPU占用率之和
对这个方法进行简单改进, 就可以实现对CPU占用率进行实时测量, 看官自己动动脑筋吧.
优点:
(1) 误差取决于AUXTimer中断的频率, 可以非常精确地得到每个任务对CPU占用率的贡献
缺点:
(1) 复杂, 加大了任务切换时的开销
(2) 和前两种算法相比, 这个算法要多占用一个硬件资源
参考链接:http://blog.chinaunix.net/uid-21067667-id-447556.html
具体描述:
(1) 在RTOS系统启动前, 使用Tick中断测试CPU的处理能力基准 CPUPerformanceBase;
(2) 在系统进入运行后, 使用空闲任务执行与测试CPU处理能力基准完全相同的算法, 得到RTCPUPerformance.
(3) 周期地计算CPU占用率, 并清除RTCPUPerformance的值, 一般每秒钟计算一次:
RealTime CPU Load = 1 - (RTCPUPerformance/CPUPerformanceBase) * 100%
优点:
(1) 实现简单
(2) 所得到的CPU占用率非常准确, 误差只取决于CPUPerformanceBase的测试结果和整除时的余数, 通常误差小于1%
(3) 不占用硬件资源
缺点:
(1) CPU必须一直全速运行, 不能修改CPU主频, 也不能使CPU进入掉电保护模式
(2) 不能得到系统中每个任务对CPU占用率的贡献
(3) 必须有一个空闲任务才能计算
评价:
这个算法只适用于工控, 电信等对不需要使CPU进入掉电保护模式的领域.
方法2: 在Tick中断中对RTOS中的任务进行采样
具体描述:
(1) 系统进入运行后, 每次Tick中断发生时, 采样一下当前正在执行的任务, 如果CPU处于HALT态, 累加haltTimes
(2) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除haltTimes:(tickIntFrequance表示Tick中断的发生频率)
RealTime CPU Load = haltTimes / tickIntFrequance
某个任务对CPU占用率的贡献 = 一个周期内该任务被采样到的次数 / tickIntFrequance * 100%
优点:
(1) 实现简单
(2) 支持CPU掉电模式
(3) 可以大致得到每个任务对CPU占用率的贡献
缺点:
(1) 误差取决于Tick的频率和OS中每个任务的运行时长, 因此误差非常大
评价:
这个算法适用于对CPU占用率精度要求不高的消息电子产品.
方法3: 精确计算每个任务对CPU占用率的贡献
具体描述:
(1) 除Tick中断外,另开一个比Tick中断频率快若干倍的周期中断(就叫AUXTimer中断吧), 这个中断只对一个计数器执行一次累加.
(2) 在OS每次执行任务切换时读取该计数器的值(AUXTimer), 并保存到TCB中, 比如, 从任务Task1切换到任务Task2, 算法如下:
Task1, 换出动作:
task1的结束运行时间 = AUXTimer的当前值
task1的总运行时间 = task1的总运行时间 + task1的结束运行时间 - task1的开始运行时间
Task2, 换入动作:
task2的开始运行时间 = AUXTimer的当前值
(以上算法中没有考虑数字回绕, 在工程实现时应当考虑, 发生回绕后任务的结束运行时间小于任务的开始运行时间.
(3) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除每个任务的总运行时间, 下面的公式中, 一个周期内的总时间等于AUXTimer周期除以Tick周期得到的倍数:
某个任务对CPU占用率的贡献 = 一个周期内该任务的总运行时间 / 一个周期内的总时间
RealTime CPU Load = 所有任务的CPU占用率之和
对这个方法进行简单改进, 就可以实现对CPU占用率进行实时测量, 看官自己动动脑筋吧.
优点:
(1) 误差取决于AUXTimer中断的频率, 可以非常精确地得到每个任务对CPU占用率的贡献
缺点:
(1) 复杂, 加大了任务切换时的开销
(2) 和前两种算法相比, 这个算法要多占用一个硬件资源
参考链接:http://blog.chinaunix.net/uid-21067667-id-447556.html

2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据...
点击进入详情页
本回答由东莞市友贸实业有限公司_提供
2013-10-11
展开全部
方法1: 使用CPU的处理能力基准计算实时CPU占用率
具体描述:
(1) 在RTOS系统启动前, 使用Tick中断测试CPU的处理能力基准 CPUPerformanceBase;
(2) 在系统进入运行后, 使用空闲任务执行与测试CPU处理能力基准完全相同的算法, 得到RTCPUPerformance.
(3) 周期地计算CPU占用率, 并清除RTCPUPerformance的值, 一般每秒钟计算一次:
RealTime CPU Load = 1 - (RTCPUPerformance/CPUPerformanceBase) * 100%
优点:
(1) 实现简单
(2) 所得到的CPU占用率非常准确, 误差只取决于CPUPerformanceBase的测试结果和整除时的余数, 通常误差小于1%
(3) 不占用硬件资源
缺点:
(1) CPU必须一直全速运行, 不能修改CPU主频, 也不能使CPU进入掉电保护模式
(2) 不能得到系统中每个任务对CPU占用率的贡献
(3) 必须有一个空闲任务才能计算
评价:
这个算法只适用于工控, 电信等对不需要使CPU进入掉电保护模式的领域.
方法2: 在Tick中断中对RTOS中的任务进行采样
具体描述:
(1) 系统进入运行后, 每次Tick中断发生时, 采样一下当前正在执行的任务, 如果CPU处于HALT态, 累加haltTimes
(2) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除haltTimes:(tickIntFrequance表示Tick中断的发生频率)
RealTime CPU Load = haltTimes / tickIntFrequance
某个任务对CPU占用率的贡献 = 一个周期内该任务被采样到的次数 / tickIntFrequance * 100%
优点:
(1) 实现简单
(2) 支持CPU掉电模式
(3) 可以大致得到每个任务对CPU占用率的贡献
缺点:
(1) 误差取决于Tick的频率和OS中每个任务的运行时长, 因此误差非常大
评价:
这个算法适用于对CPU占用率精度要求不高的消息电子产品.
方法3: 精确计算每个任务对CPU占用率的贡献
具体描述:
(1) 除Tick中断外,另开一个比Tick中断频率快若干倍的周期中断(就叫AUXTimer中断吧), 这个中断只对一个计数器执行一次累加.
(2) 在OS每次执行任务切换时读取该计数器的值(AUXTimer), 并保存到TCB中, 比如, 从任务Task1切换到任务Task2, 算法如下:
Task1, 换出动作:
task1的结束运行时间 = AUXTimer的当前值
task1的总运行时间 = task1的总运行时间 + task1的结束运行时间 - task1的开始运行时间
Task2, 换入动作:
task2的开始运行时间 = AUXTimer的当前值
(以上算法中没有考虑数字回绕, 在工程实现时应当考虑, 发生回绕后任务的结束运行时间小于任务的开始运行时间.
(3) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除每个任务的总运行时间, 下面的公式中, 一个周期内的总时间等于AUXTimer周期除以Tick周期得到的倍数:
某个任务对CPU占用率的贡献 = 一个周期内该任务的总运行时间 / 一个周期内的总时间
RealTime CPU Load = 所有任务的CPU占用率之和
对这个方法进行简单改进, 就可以实现对CPU占用率进行实时测量, 看官自己动动脑筋吧.
优点:
(1) 误差取决于AUXTimer中断的频率, 可以非常精确地得到每个任务对CPU占用率的贡献
缺点:
(1) 复杂, 加大了任务切换时的开销
(2) 和前两种算法相比, 这个算法要多占用一个硬件资源
具体描述:
(1) 在RTOS系统启动前, 使用Tick中断测试CPU的处理能力基准 CPUPerformanceBase;
(2) 在系统进入运行后, 使用空闲任务执行与测试CPU处理能力基准完全相同的算法, 得到RTCPUPerformance.
(3) 周期地计算CPU占用率, 并清除RTCPUPerformance的值, 一般每秒钟计算一次:
RealTime CPU Load = 1 - (RTCPUPerformance/CPUPerformanceBase) * 100%
优点:
(1) 实现简单
(2) 所得到的CPU占用率非常准确, 误差只取决于CPUPerformanceBase的测试结果和整除时的余数, 通常误差小于1%
(3) 不占用硬件资源
缺点:
(1) CPU必须一直全速运行, 不能修改CPU主频, 也不能使CPU进入掉电保护模式
(2) 不能得到系统中每个任务对CPU占用率的贡献
(3) 必须有一个空闲任务才能计算
评价:
这个算法只适用于工控, 电信等对不需要使CPU进入掉电保护模式的领域.
方法2: 在Tick中断中对RTOS中的任务进行采样
具体描述:
(1) 系统进入运行后, 每次Tick中断发生时, 采样一下当前正在执行的任务, 如果CPU处于HALT态, 累加haltTimes
(2) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除haltTimes:(tickIntFrequance表示Tick中断的发生频率)
RealTime CPU Load = haltTimes / tickIntFrequance
某个任务对CPU占用率的贡献 = 一个周期内该任务被采样到的次数 / tickIntFrequance * 100%
优点:
(1) 实现简单
(2) 支持CPU掉电模式
(3) 可以大致得到每个任务对CPU占用率的贡献
缺点:
(1) 误差取决于Tick的频率和OS中每个任务的运行时长, 因此误差非常大
评价:
这个算法适用于对CPU占用率精度要求不高的消息电子产品.
方法3: 精确计算每个任务对CPU占用率的贡献
具体描述:
(1) 除Tick中断外,另开一个比Tick中断频率快若干倍的周期中断(就叫AUXTimer中断吧), 这个中断只对一个计数器执行一次累加.
(2) 在OS每次执行任务切换时读取该计数器的值(AUXTimer), 并保存到TCB中, 比如, 从任务Task1切换到任务Task2, 算法如下:
Task1, 换出动作:
task1的结束运行时间 = AUXTimer的当前值
task1的总运行时间 = task1的总运行时间 + task1的结束运行时间 - task1的开始运行时间
Task2, 换入动作:
task2的开始运行时间 = AUXTimer的当前值
(以上算法中没有考虑数字回绕, 在工程实现时应当考虑, 发生回绕后任务的结束运行时间小于任务的开始运行时间.
(3) 周期性地计算CPU占用率, 一般每秒钟计算一次, 并清除每个任务的总运行时间, 下面的公式中, 一个周期内的总时间等于AUXTimer周期除以Tick周期得到的倍数:
某个任务对CPU占用率的贡献 = 一个周期内该任务的总运行时间 / 一个周期内的总时间
RealTime CPU Load = 所有任务的CPU占用率之和
对这个方法进行简单改进, 就可以实现对CPU占用率进行实时测量, 看官自己动动脑筋吧.
优点:
(1) 误差取决于AUXTimer中断的频率, 可以非常精确地得到每个任务对CPU占用率的贡献
缺点:
(1) 复杂, 加大了任务切换时的开销
(2) 和前两种算法相比, 这个算法要多占用一个硬件资源
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-11
展开全部
这个问题需要给你举一个例子你就明白了 假设有2个人 他们同时在做一道都不会的数学题 那么这个时候他们的大脑可能都需要100%的来解决这道数学题那么同样的 2个人都不会这道题 但是一个智商120 一个智商70 那么他们在做同样的题目的时候 智商120的可能就会很轻松的解决 只用了60% 而另一个却要100% 换做CPU差不多 因为运行3D游戏时几乎CPU都会使用率较高 但是性能好的可以短时间内处理好 性能差的就需要时间长些
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-11
展开全部
说简单一点,CPU主要是看主频,单核的主频如果和双核或三核的主频一样,那么他门的速度其实是一样的,双核或三核并不是同时计算,而是交换计算,就象一个人跑累了休息在换一个人跑。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |