1.1CPU
来源:互联网 发布:深圳网络推广培训 编辑:程序博客网 时间:2024/05/07 07:00
1.1CPU
看到这个CPU使用率就想到:
以前使用电脑的时候,有时候会遇到这样的情况:有些进程“死”掉了(可以认为是僵死),这个时候看到那个进程的CPU使用率是50%。于是我想,我的笔记本貌似是双核的?所以,这样一个进程(线程)最多也就占用一个核?
所以,写了一个程序cpu.cpp,一直循环。
int main() {
while(1) {}
return 0;
}
cl /EHsc cpu.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86
运行的时候,发现占用率是25%;然后再开了一个cmd,运行,两个每个是是25%,加起来就是50%。
这个现象让我去考虑这几个问题:
1、CPU占用率的是如何计算出来的?【上网查】
2、我的笔记本CPU是双核的?双核双线程?这个以前没关注过【上网查】
3、既然开两个是50%,我可以写一个程序,启动两个线程,然后达到50%,可行吗?【关于多线程编程,以前都没有研究过】
查资料:
2、笔记本的CPU为Intel 酷睿 i5 450M,2.4G Hz,具备双核心四线程处理能。
l Multi-core processor,是在一个单一的计算组件中,加入两个或两个以上的独立实体中央处理单元(在此,称为core,核心)。
l 超线程(HT, Hyper-Threading)是英特尔研发的一个技术,实现在一个实体CPU中,提供两个逻辑线程。
每个单位时间内,一个CPU只能处理一个线程(thread),如果想要在一单位时间内处理超过一个线程是不可能的,除非是有两个CPU的实体单元。双核心技术是将两个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的HT技术是在CPU内部仅复制必要的资源、让CPU模拟成两个线程;也就是一个实体核心,两个逻辑线程,在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作。
1、查到Windows下CPU使用率的定义
a) CPU使用率:在任务管理器的刷新周期内CPU忙的时间与整个刷新周期的比值。
b) 任务管理器默认的刷新周期是1s。
3、于是想到,每秒设置一定百分比的sleep时间,这样可行?经查,Sleep函数可以设定sleep时间,但是如何让程序在非sleep的其他时间保持工作呢?能够使用一个时间的设置像sleep那样?
【方法1】
想到采用循环一定的次数,但是没有想过这个次数可以通过汇编代码大致判断。
CPU 2.4G Hz,循环次数采用9,600,000(间隔10ms),看到CPU占用率20%左右。之后需要做的就是调整循环的次数。
9,600,000 20%
4,800,000 17-18%
2,400,000 14% (设置成100ms,同时次数×10,差别不大)
这个方法确实不方便。
【方法2】
能够使用一个时间的设置像sleep那样,这个就是用GetTickCount。
设置间隔为10ms,cpu占用率20%左右。(猜测,调度开销比较大?)
设置间隔为20ms,cpu占用率17%左右。
设置间隔为100ms,cpu占用率13-14%左右。
- 1.1 CPU
- 1.1CPU
- 1.1 CPU占用率
- 1.1 CPU使用率(0518)
- cpu
- cpu
- CPU
- cpu
- cpu
- cpu
- cpu
- cpu
- cpu
- CPU
- CPU
- CPU
- CPU
- cpu
- Linux 0.1 版本内核 setup.s 代码解析
- 一个不断提出的问题:Linux下JDK到底应该安装在哪儿?
- Linux test命令
- 【C++】浙大PAT (Basic Level)1020. 月饼 (25)
- 复制对象(二)<NSCopying>协议和属性的copy特性
- 1.1CPU
- MSSQL查看存储过程定义
- java线程之Condition、ReentrantLock
- ThoughtWorks读书雷达
- JavaScript回忆之-表达式和语句
- windows XP 的SP2升级SP3引起的蓝屏,错误码C0000139的解决办法
- java学习之static
- 算法复习之一 -----链表
- windows XP升级SP3导致的ping 域名显示 Ping request could not find host 但是nslookup能正常解析的解决办法