php 如何在多核服务器上发挥性能
答案:1 悬赏:0 手机版
解决时间 2021-04-19 03:19
- 提问者网友:書生途
- 2021-04-18 20:57
php 如何在多核服务器上发挥性能
最佳答案
- 五星知识达人网友:北城痞子
- 2021-04-18 21:37
IBM有篇文章简述线程数,CPU数量(核心)对性能的影响曲线
不过是一年前看到的,刚去找了找没找到...我仅就我记得的一部分说下
IBM根据大量实际任务中的数据画了个曲线图(所统计的程序都是能尽可能多的利用cpu核心的程序)
在4个核心以内的机器上运行,程序性能几乎与核心数成正比
而在4-8个核心的机器上,其性能虽然也随核心数量增长而增长,但增长幅度一步步减弱
直到8个核心及以后,即便再增加核心,性能几乎不会再增长.(一般的程序比这更糟糕)
------(以上这部分我记得比较清,下边的比较模糊)-------
原因是同步等等因素的存在,导致cup核心数量在增长到一定程度后,多线程已经无法完全把cpu的性能发挥出来了
后来,文章说了一些规则以及一些新的关于锁的算法等等,却依然只说有一定的帮助,但效果不是很明显...
------(这部分是个人意见)------
然后再来说说线程数量的问题
不同的操作系统所允许一个进程的线程数量不同
而靠增加线程数量是比较好的完全利用上cpu资源的手段
但是假设是只有一个核心的cpu,一个程序开单线程就可以完全耗尽cpu资源,那么它开双线程就无法获得性能的提升,甚至由于启动一个线程的开销,性能还会有下降.
那么,是不是有多少个核心就只开多少线程就是最佳效果,倒也不至于...因为现在的cpu资源,普通程序,单靠一个线程很难利用完...那就可以再多开几个互不影响的线程来压榨cpu,具体多开的比例是多少,可以看看单线程对cpu的利用率以及实际情况而定...
不过,再来看看IBM的那个曲线图,恐怕也就8个线程的样子(这还得你优化的好),再往后提升就不大了...
但是,是不是就只能开这么多,那肯定不是
比如你开启某个服务,给很多人用,你是只允许每次8个人同时使用来获得最优整体性能,还是牺牲一部分整体性能来服务更多的人?
只是个人见解...如有错误还请包涵指正
不过是一年前看到的,刚去找了找没找到...我仅就我记得的一部分说下
IBM根据大量实际任务中的数据画了个曲线图(所统计的程序都是能尽可能多的利用cpu核心的程序)
在4个核心以内的机器上运行,程序性能几乎与核心数成正比
而在4-8个核心的机器上,其性能虽然也随核心数量增长而增长,但增长幅度一步步减弱
直到8个核心及以后,即便再增加核心,性能几乎不会再增长.(一般的程序比这更糟糕)
------(以上这部分我记得比较清,下边的比较模糊)-------
原因是同步等等因素的存在,导致cup核心数量在增长到一定程度后,多线程已经无法完全把cpu的性能发挥出来了
后来,文章说了一些规则以及一些新的关于锁的算法等等,却依然只说有一定的帮助,但效果不是很明显...
------(这部分是个人意见)------
然后再来说说线程数量的问题
不同的操作系统所允许一个进程的线程数量不同
而靠增加线程数量是比较好的完全利用上cpu资源的手段
但是假设是只有一个核心的cpu,一个程序开单线程就可以完全耗尽cpu资源,那么它开双线程就无法获得性能的提升,甚至由于启动一个线程的开销,性能还会有下降.
那么,是不是有多少个核心就只开多少线程就是最佳效果,倒也不至于...因为现在的cpu资源,普通程序,单靠一个线程很难利用完...那就可以再多开几个互不影响的线程来压榨cpu,具体多开的比例是多少,可以看看单线程对cpu的利用率以及实际情况而定...
不过,再来看看IBM的那个曲线图,恐怕也就8个线程的样子(这还得你优化的好),再往后提升就不大了...
但是,是不是就只能开这么多,那肯定不是
比如你开启某个服务,给很多人用,你是只允许每次8个人同时使用来获得最优整体性能,还是牺牲一部分整体性能来服务更多的人?
只是个人见解...如有错误还请包涵指正
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯