之前一直没闹懂cpu核数和线程数的关系什么,我一直以为2核8线程是指:两个物理上的核同时可以处理8个线程。( 这里的同时是绝对意义上的同步处理。 )但是我搜了一下,貌似并不是,之前理解完全错误。
参考:https://zhidao.baidu.com/question/564747175879215284.html
https://www.cnblogs.com/hitwhhw09/p/4718404.html
最近做个http请求。有点大 几千万次。给我的机器是2核40线程。所以我想啊40线程可以同时处理40个线程,按照网上说的设置2-3倍,让他跑吧。然后我设置了80个,跑了一两天。崩了!带我的那个人更牛逼,直接设置3w个线程。然后觉得慢,就说你去做个试验看看,线程设置多少合适。然后实现数据如下:
connectionTimeOut指http请求超时设置,soTimeOut指等待返回时间超时。我们场景是希望请求获得有效返回。
从试验数据上看,单纯从处理速度,不管suc的话,设置在机器线程数量的10倍左右合适。如果从成功结果上看(抛开超时设置)越接近物理核数设置,请求成功率越高。
具体原因因为大概可以猜到,但是抱着严谨精神,我就不说了(我没查,但是学过计算机组成原理和操作系统,所以大概理解)。希望大家自己去查吧。
尽然数据贴出来了,就结合着数据找点经验吧。抛开 http因素。多核多线程情况下 线程数 设置 为线程数的10倍左右处理速度应该最快。
http请求照顾到成功率情况,request超时设置大点更为合理,根据http 响应服务器来定,我们这个应该2-4s直接合理,response超时设置500足够。线程数量应设置在50-240之间,具体大小应该计算或者再细测获得。
步骤:
1、先右击鼠标右键点击屏幕最下方的任务栏空白处,会弹出一个菜单,在菜单中用鼠标左键点击启动任务管理器。
2、然后点击任务管理器的“性能”选项。在“性能”选项的“cpu使用记录”项中有几个方框就说明cpu有几个线程。
cpu线程数不一定等于cpu的核心数,因为有些cpu采用了超线程技术,一个核心可以有两个线程。
3、如果想查看cpu的核心数可以安装一个CPU-Z软件,打开后就可以看见有几个核心和线程。
4、打开安装的CPU-Z软件,在处理器即可看到核心数和线程数。
PS:超线程处理器的cpu线程数不等于cpu的核心数。cpu线程数不一定等于cpu的核心数,因为有些cpu采用了超线程技术,一个核心可以有两个线程。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)