为什么我cpu只开了cpu单核性能排行

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
比如说,我cpu有四个线程,那么运行一个只能利用单线程的软件为什么不是这个进程把第一个核心的所有资源占用,而是每个线程占用百分之25?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
现代的操作系统对cpu的操作是抢占式多线程机制,在获取cpu控制时获得时间片,时间片结束后就控制权交付给别的线程。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你想要的是可以实现的,这个在不同的操作系统上有不同的API可以调用,在linux是调用sched_setaffinity ,在windows上可以用SetProcessAffinityMask ,这就是把特定的线程绑定运行在特定的cpu核上运行。当然,你说的,一个线程完全占用一个CPU的所有运行,这个在用户态不能实现的,现在的操作系统是调度会把程序调度出去;内核态可以运行,这个要你自己来主动调度,否则,整个机器会出现假死的现象,机器没有反应,但实际是无限循环。
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。以上由提供
您的位置:
> Win8禁用多核处理器并强制开启单核模式的方法
Win8禁用多核处理器并强制开启单核模式的方法
  现在一般电脑都配置了多核处理器,相对于单核处理器,多核处理器集成度高,且芯片性能也得到了很好的提升,但经常会被系统的故障带到处理器内部,所以很多用户更愿意在单核处理器下运行。下面我们就来看下Win8如何禁用多核处理器并强制开启单核模式的。
  步骤:
  1、单击桌面左下方的&Windows&图标,接着单击&运行&,如图:
  2、这时候就会弹出来运行窗口,在里面直接输入&msconfig&命令,然后点击&确定&选项,如下图:
  3、找到系统配置的&引导&选项并将其选中,然后单击&高级选项&,如下图:
  4、找到引导高级选项后,将前面的&处理器数&勾选,然后下拉菜单直接选择&1&,接着再单击&确定&选项,如下图所示:
  上述的步骤操作完成之后,还需要重新启动系统才能够生效,这样再次启动系统的时候,系统就会自动在单核模式下运行了,这样就不用担心把系统的问题带入到处理器内部了。
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
Copyright (C)2014 www.xitongcheng.cc All rights reserved
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
黔ICP备号-1为什么高通处理器的单核性能总是比不过苹果呢?为什么高通处理器的单核性能总是比不过苹果呢?杂谈商铺百家号论单线程苹果是无敌的,为什么无敌是因为苹果A系处理器和高通处理器完全不是一个路子,A10的一颗大核的晶体管面积都快相当于高通835四大核面积的总和了,和这样一个怪物比单核性能不是找难受吗?请点击此处输入图片描述这么多年来,安卓系统已经对多核心处理器做了许多优化了,这时候再慢慢提升单核性能也是一个很好的方案啊。联发科的十核处理器已经告诉我们核太多反而不美,高通820告诉我们核太少也不好走,835告诉我们还是八核心处理器比较适合当前的安卓。所以果粉不要再吹了,能量守恒定律像铁一样维持着平衡,想要苹果那样单核性能,你只有堆到同样的晶体管数量才有机会,但八颗那么大核心的恐怖功耗不是这小小手机能承受的,强如iOS接近完美的资源调度和利用,都不得不加两颗物理小核心来支持低功耗场景。请点击此处输入图片描述苹果给处理器项目的研发经费是很恐怖的,毕竟苹果有野心直接把A系处理器直接放到MacBook上,从这两年的iPad Pro上我们已经很明显的看到了这个势头。而高通主要做基带,处理器只是随便做做,方便和基带打包出售的。二者目的不一样,也别怪高通不给力,这玩意烧钱的很,810的耻辱让高通在820上砸了许多资金,结果浮点和内存性能做的偏高了,刷分容易对日常使用没什么太大帮助,毕竟日常使用还是整数性能更重要一些,这也是geekbench前后几次调整分数结算策略的原因。835为了提高日常体验,砍了许多浮点性能和内存性能,提高了整数性能。当然,效果也是很明显的,自主架构的成长不就是磕磕绊绊的吗?其实也别老纠结单核性能了,用惯了这些旗舰处理器你就会发现你用到这些巅峰性能的时间只占你用手机时间的百分之一而已,厂商为了防止耗电过快和发热严重而设定的温度阈值也会限制处理器发挥巅峰性能的时间。国内移动端处理器做的最好的,目前也只有华为麒麟960,而960的CPU和GPU(图形处理器,类似电脑显卡)不能同时发挥最高性能。但不得不说,势头很好,小米也在研发高性能处理器,期待的很。最后小米6跑分镇楼,今年高通835吸取了之前做处理器的经验,又托了10nm工艺的福,高性能,低发热,低耗电,对于现在的安卓阵营来讲,完美。请点击此处输入图片描述有条友对a10大核心面积是835大核心面积四倍有疑惑,我这里上个图吧,这个图是16nm工艺制程下的数据,不过只有a72的数据,835大核心是a73魔改,面积差不多,a73又比a72面积小不少,算下来差不多四倍吧请点击此处输入图片描述本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。杂谈商铺百家号最近更新:简介:用科技资讯影响看世界的眼光作者最新文章相关文章对于单核 cpu 而言,开多线程的目的难倒只能是为了防止阻塞么?
20:25:32 +08:00 · 6313 次点击
以下是一些单核 cpu 多线程的疑问,求解答(都指单核)。
1.如果一个进程有 n 个任务要处理,因为终究是在一个 cpu 上跑,所以这 n 个任务在一个线程还是多个线程上跑,执行的总时间是一样的(多线程,线程切换可能更浪费时间)?
2.是否进程开多线程就能抢到更多的 cpu 时间, python 这种带 GIL 的估计是没戏了,那么 java 呢?
3.自己抢到更多 cpu ,机器上的其它程序不就 cpu 时间少了么?是因为 cpu 大部分时间都是空闲的,不怕抢?还是因为在做应用层开发的时候,是不用考虑其它程序能不能抢到 cpu 时间的。
4.一个进程所有线程能抢到的时间片总和是有最大值吗?一个线程一次能拿到多长的 cpu 时间?
综上,我的最大疑问就是:对于单核 cpu 而言,开多线程难倒只能防止阻塞么?
34 回复 &| &直到
18:00:05 +08:00
& & 20:39:08 +08:00
我也有这疑惑,不知单核 cpu 跑程序编译时要不要开启多线程。
& & 20:45:55 +08:00
写个应用程序, 就准备跑在单核上?
& & 20:48:37 +08:00
为什么用 python , java 那么慢的语言却在操心操作系统的调度开支?
& & 20:51:56 +08:00
& & 20:54:28 +08:00
通常一个任务不光 cpu 上要花时间, io 上也要花时间(不如去数据库查数据,去抓网页登)。
一个进程在等 io 的时候, cpu 是闲置的,另一个进程正好可以利用 cpu 把 cpu 该做的事做完。
多几个进程一起跑,可以把 io 和 cpu 都跑满了。
大概就是这个意思
& & 21:10:32 +08:00
充分利用 CPU 空闲啊。超线程技术也是一样。
& & 21:14:20 +08:00
java 不慢了....
& & 21:25:30 +08:00 via Android
如果自己实现任务 A 阻塞时去运行 B ,效率有可能比多线程要高,多线程就是把这种调度转交给了操作系统。而且还有设计和逻辑上的便利,比如一个线程负责一个不同类型的工作。
& & 21:33:33 +08:00
看是什么认为。如果完全是 cpu ,开多线程只会更慢。上下文切换的开销。
抢 CPU 时间前提是同一优先级。如果其他进程优先级高,那怎么抢都抢不到。
@ 这不就是协程么
& & 21:34:15 +08:00
1 、不一定,多线程可以在 io 的时候切换到其他线程执行。如果单线程那就只能等了。2 、一般是的,一个要看你线程的操作。一般你在单核机器上写一个死循环,基本整个机器都卡了。但是如果你起下次一百个线程都是 sleep ,那也不会太占用 cpu 。另外操作系统调度线程不依赖进程。3 、当然要考虑啊!要不把用户机器卡死了,人家就不用你的程序了。4 、看什么平台吧, windows 好像不支持抢占。线程只能被系统调用。
& & 21:42:11 +08:00
& & 21:54:46 +08:00
真是 iV2ex 啊,这都能黑到 windows
& & 21:55:54 +08:00
& & 21:56:32 +08:00
@ java 早就不是黑执行效率了,它在有 GC 功能语言中已经算足够快的了。 Java 该黑的是它的内存消耗....
& & 21:58:01 +08:00
是的,就是为了防止堵塞。
& & 22:05:52 +08:00
@ 神了,这是奔腾 D 吗
& & 22:50:21 +08:00
1 、如果一个进程执行 N 个任务,而这些任务又属于 I/O 型的任务,通过 CPU 的调度是可以提高效率的,通常网络 I/O 阻塞的时间比线程 context switch 的时间要长多了。
2 、在 Linux 下线程进程的调度策略相同,如果一个进程中包含更多线程的话,我猜会拿到更多的执行时间。 CPython 的 GIL 只是给多线程的执行加了锁,限制了多线程的并行执行,单核下 GIL 应该就跟没有一样。
? 3 、 CPU 的计算速度太快了,进程的调度已经比较完善,通常应用层面程序不需要考虑底层进程的调度对程序的影响,但是要考虑程序 CPU 资源的消耗,写一个死循环跑一会儿 CPU 都能煎鸡蛋了。
大多数情况下 CPU 的计算都是不饱和的,通常服务器 CPU 利用率达到 80%的时候就要扩容了。
4 、没有听过类似这种限制,太细的东西不清楚。
开多线程并一定是为了性能,很多场景下你的业务逻辑是并发的,所以你的程序逻辑也是并发的。
& & 23:08:48 +08:00
你说的是系统级的线程还是 CPU 级的线程?照你的描述,你想表达的是多进程。一句话,单核 CPU 没法跑系统级的多进程。单核多线程主要是为了增加 I/O 利用率。如果有支持超线程技术(HT)的单核 CPU ,请告诉我。
线程的概念其实有些模糊,比如: CPU 级线程就是操作系统级进程。程序自己也可以把系统级线程看做进程,并自己实现多线程。这种程序自己实现的多线程就是所谓的协程(coroutine)或纤程(fiber thread)。
& & 23:48:26 +08:00
@ 这里的“系统级的多进程”指的是操作系统内核实现的进程还是 CPU 的 HW Thread ?如果是前者,操作系统的还是可以实现多进程的啊?只是这样的多进程只具备 currency 而不具备 parallelism 。
& & 00:03:23 +08:00
我仅仅从一个 5 年单片机码农所理解的角度回答一下这些问题:
1.如果一个进程有 n 个任务要处理,因为终究是在一个 cpu 上跑,所以这 n 个任务在一个线程还是多个线程上跑,执行的总时间是一样的(多线程,线程切换可能更浪费时间)?
A :对于单核 CPU 来说,所谓的线程,就是 task , CPU 就是依靠调度器在这 N 个 task 之间来回切换,同一时刻只有一个 task 在运作。
2.是否进程开多线程就能抢到更多的 cpu 时间, python 这种带 GIL 的估计是没戏了,那么 java 呢?
A :这个涉及到操作系统的设计原理, windows 和 linux 本质上都不是实时系统,如何分配 CPU 时间在不同的操作系统上有不同的规则,一般来说是按优先级分配。但你一个人开了多个任务,总概率上讲分配到更多 CPU 资源的概率是更高的。
3.自己抢到更多 cpu ,机器上的其它程序不就 cpu 时间少了么?是因为 cpu 大部分时间都是空闲的,不怕抢?还是因为在做应用层开发的时候,是不用考虑其它程序能不能抢到 cpu 时间的。
A:这个取决于你应用到底能 CPU 密集到什么程度,对一般的应用来说,你是不需要担心别的程序没有 CPU 资源可用的,唯一需要注意的是避免进入死循环,在单片机中,中断里出现一个死循环的结果就是占用全部 CPU 资源。
4.一个进程所有线程能抢到的时间片总和是有最大值吗?一个线程一次能拿到多长的 cpu 时间?
综上,我的最大疑问就是:对于单核 cpu 而言,开多线程难倒只能防止阻塞么?
A :这个依然取决于操作系统的设计。对于单核 CPU 而言,多线程是几乎唯一合理的利用 CPU 资源的方式,一颗 CPU 如果只有一个线程,那基本就是个弱智级别的 CPU 。
& & 00:29:13 +08:00 via iPhone
@ 抱歉还是没说清楚。用单核 cpu 的系统不可能有真正的多进程,虽然咱可以调用多进程 API ,但那是假的。楼上也说了,现在 cpu 是靠分配时间来分配资源,在切换( switch )到另一个任务( task )的时候,上一个任务的上下文) context )要保留下来,如此往复。这和线程有什么区别?所以,所谓的进程、线程、协程都是线程(thread), 一层套一层。明白人为了区分他们搞出来一大堆新术语,结果大家更迷了。你说的最后一句很对,单核只有 concurrency ,没有 parallelism 。可以去搜搜 Linus 为什么喷“ parallel 浪费大家时间”。
& & 01:14:28 +08:00
LZ ,你没有完全理解多线程的意义。或者没有完全理解什么是多线程,包括现在很多写代码的人,总在说多线程,有时候甚至把多线程和多并发或者多线程和多吞吐处理给混为一谈。
首先说一下一个进程里面为何要开多线程问题,和 cpu 是否多核,或者主板是否多路 cpu 关系是有的,但也是有限定条件的,具体内容如下:
1 ,由于部分 api 不支持异步方式执行,仅仅支持同步执行。例如读取一个文件,当每次读取的文件的数据很大时,内存缓存中没有足够的内存提交给调用者,这时 api 或者操作系统会代用户去从磁盘上读取文件,而磁盘相对于内存和 cache 来说属于慢速设备,并且在操作系统调度层面,对于此类操作是,现成被阻塞住(即挂起),然后转为执行其他任务。
为了让整个进程不进入假死(僵死)情况,需要在开一个线程来维持其他任务的执行。
2 ,在多路 cpu 的系统中,多线程可以提高任务处理的效率。即理想情况下,每个线程独占一路 cpu 处理能。
3 ,特殊多路系统,在非对称多路系统中,每个线程(进程)都执行在不同的核上,所访问的硬件资源不同,所以需要开多个线程。
至于你说的抢 cpu 执行时间问题,要分操作系统看,目前我们常用的 windows 和 linux 都是抢占式操作系统。对于 linux 我不是很熟,对 windows 略知一二:
1 ,操作系统调度粒度是线程+进程。即操作系统调度的最小单位是线程,但是否决定该线程执行,除了看线程执行时间和未执行间隔以外,还需要看总进程内的执行情况。
其中还存在进线程优先级问题,中断优先级, cpu 执行平衡问题,就近执行原则等。
2 ,一个进程中,线程并非越开越多就好。因为非分时的非实时操作系统的任务调度周期很有可能是不准的,操作系统是否要打断一个线程的执行,转而交给另外一个线程执行,除了调度周期到来的调度扫描,还有任务执行的优先级, IRQL 级别,线程处于什么状态等。
3 ,过多的线程不仅不能抢到有效的 cpu 执行时间,还会导致线程环境切换的浪费。因为每次线程的切换其中伴随的态转换,以及堆栈移动、寄存器恢复、内存调度等问题。频繁切换线程,只会得不偿失,不管是 python 或者 java 或者 c++或者 c#都是一样的,因为是操作系统在管理线程执行。
至于你提出的第四个疑问,在单核 cpu 里面开多线程的事情。我只能和你说,设计决定一切。
& & 07:36:36 +08:00 via Android
单核纯计算不要开多线程。有 io 的话性能瓶颈可能不在 cpu 上。参考 amdahl 定律。
& & 09:01:20 +08:00 via Android
@ P4 就有单核超线程。 MIPS 产品也有,有些架构还有单核四线程或更多的。
& & 09:18:40 +08:00 via iPhone
@ 涨姿势了,谢谢。:D
& & 09:43:44 +08:00
CPU 快, IO 慢,不多线程, CPU 效率不高,操作系统效率也不高。
& & 10:22:30 +08:00
@ 这什么意思。。。大多程序只跑一个核?
& & 10:26:20 +08:00
@ 感谢, 最后一句是“并不一定”么?
& & 10:36:29 +08:00
@ 那么是不是说,瓶颈如果是 io ,使用异步 io ,比如 nodejs , nginx , epoll ,之流比多线程更合适?
& & 11:18:41 +08:00
两位说的很清楚了。感觉楼主把多线程和多核搞混了,把操作系统和执行程序搞混了。这个可能和和市面上的多核宣传有关系吧,多核就可以一边看电影一边压缩文件之类的宣传,然后把单核或者少核鄙视一把,让人们更新换代,增加自己的销量。
还有一个叫多任务的概念,是对比以前 DOS 系统的单任务,也是宣传。
计算机科学貌似在很早很早的时候,就进行了时分多任务的改进了,和多核没关系,唯一的目的就是让 cpu 的空闲时间变少(等待用户操作,等待网络、磁盘等输入输出设备 io)。
而这个改进是操作系统完成的,和硬件关系相对较少。如果真的有兴趣想理解计算机,操作系统和编译原理的基础知识必不可少。
说完了。
& & 11:34:45 +08:00
@ 兄弟,你的代码功底还有待加强。你问的这个问题,我没法给你答复。
我说了设计决定一切
& & 12:49:59 +08:00 via Android
& & 14:27:21 +08:00
单核要跑多线程,有多大意义?
& & 18:00:05 +08:00 via iPhone
多线程对 GUI 程序非常有用,因为没有多线程支持, javascript 要实现一个 并行的任务有多难
& · & 802 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 35ms · UTC 18:16 · PVG 02:16 · LAX 11:16 · JFK 14:16? Do have faith in what you're doing.(独身の吐槽君)
(yuge.jennifer)
(rejoice )
第三方登录:}

我要回帖

更多关于 cpu单核性能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信