如何在BIOS中关闭CPU的超线程功能

如何在BIOS中关闭CPU的超线程功能,第1张

在BIOS中关闭CPU的线程功能方法如下:

1.可进入CMOS设置打开 Advanced BIOS SETUP Option (高级BIOS功能设定)选HYper - Theading Technolgy 缺省值是 Enabied (打开) 如要关闭,可选择 Disabled (关闭)

进入BIOS中修改。进入BIOS的方法是在开机的时候按Del键,然后在其中找如:HyperThreading,HT这样的选项,选择Disable就可以关闭

2.延伸阅读,在 *** 作系统中开启/关闭CPU

依次---开始----运行---输入msconfig

打开启动项,在引导-高级选项里,有处理器数,改成1就成单核了,2就是双核;如果有超线程技术,2就是单核双线程。

拓展资料

技术优点

超线程是Intel 所研发的一种技术,于2002年发布。超线程的英文是HT技术,全名为Hyper-Threading,中文又名超线程。超线程技术原先只应用于Intel Xeon处理器中,当时称为Super-Threading。之后陆续应用在Pentium 4中,将技术主流化。

1.超线程技术的优势在于同时进行多任务批处理工作,尽管支持超线程技术的软件不多,也只有少数的软件可以享受到由超线程技术带来的性能提升,但是这符合今后软件等技术的发展方向,今后更多的软件将受益于超线程技术。

2.从来看,部分客户可以发觉在运行某些特定软件时,超线程技术让系统有了30%的性能提升,为超线程技术优化的软件都能够享受到超线程技术的好处。

3.客户同时运行两个以上的软件时候,将可以明显的感受到这两个软件的性能都得到提升相比关闭超线程技术的情况下都有很大的提升,超线程技术的效率优势只有在多任务 *** 作时候才能得到发挥。

4.支持超线程技术的Windows XP *** 作系统,其中的很多系统软件都已经针对超线程技术优化过,因此在使用Windows *** 作系统的时候可以很好的享受到超线程技术带来好处。

技术缺点

1.因为超线程技术是对多任务处理有优势,因此当运行单线程运用软件时,超线程技术将会降低系统性能,尤其在多线程 *** 作系统运行单线程软件时将容易出现此问题。

2.在打开超线程支持后,如果处理器以双处理器模式工作,那么处理器内部缓存就会被划分成几区域,互相共享内部资源。对于不支持多处理器工作的软件在双处理器上运行时出错的概率要比单处理器上高很多。

3.因为很多工作站软件为Windows 2000 *** 作系统进行过优化,但是采用Windows 2000这样的 *** 作系统的工作站无法完全利用超线程技术的优势,也带来不了高的工作效率

4.超线程技术只能提高40%左右的性能(测评时可以看成50%,即Core i3 的执行效率为3核速率,Core i5 4核 HT与Core i7 的执行效率为6核速率)

linux下的单进程多线程的程序,要实现每个线程平均分配到多核cpu,主要有2个方法

1:利用linux系统自己的线程切换机制,linux有一个服务叫做irqbalance,这个服务是linux系统自带的,默认会启动,这个服务的作用就是把多线程平均分配到CPU的每个核上面,只要这个服务不停止,多线程分配就可以自己实现。但是要注意,如果线程函数内部的有某个循环,且该循环内没有任何系统调用的话,可能会导致这个线程的CPU时间无法被切换出去。也就是占满CPU现象,此时加个系统调用,例如sleep,线程所占的CPU时间就可以切换出去了。

2:利用pthread库自带的线程亲和性设置函数,来设置线程在某个CPU核心上跑,这个需要在程序内部实现。同时注意不要和进程亲和性设置搞混淆了

int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize,

const cpu_set_t *cpuset)

int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize, 

cpu_set_t *cpuset)

从函数名以及参数名都很明了,唯一需要点解释下的可能就是cpu_set_t这个结构体了。这个结构体的理解类似于select中的fd_set,可以理解为cpu集,也是通过约定好的宏来进行清除、设置以及判断:

//初始化,设为空

void CPU_ZERO (cpu_set_t *set) 

//将某个cpu加入cpu集中 

void CPU_SET (int cpu, cpu_set_t *set) 

//将某个cpu从cpu集中移出 

void CPU_CLR (int cpu, cpu_set_t *set) 

//判断某个cpu是否已在cpu集中设置了 

int CPU_ISSET (int cpu, const cpu_set_t *set)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11272668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存