- 主题:有没高效率的线程池实现?
我说这是十年前的情况。现在 CPU 已经改进,不太可能还是这样的情况。
如果被限制到 8 倍。那就需要考虑是不是自己程序写的有问题了。
【 在 ylh1969 的大作中提到: 】
: 你说的我有点听不懂。
: 我的测试是8核16超线程。
: 放8个线程,性能是单线程的8倍,CPU50%。放16线程性能还是8倍,CPU100%。如果需要75%,放12个线程,性能还是8。
: ...................
--
FROM 110.84.122.*
不是程序问题。
【 在 hgoldfish 的大作中提到: 】
: 我说这是十年前的情况。现在 CPU 已经改进,不太可能还是这样的情况。
: 如果被限制到 8 倍。那就需要考虑是不是自己程序写的有问题了。
:
--
FROM 221.218.60.*
建议读一下超线程的原理
超线程增不增效,和线程之间是不是相互通讯或者共享内存没有关系,和机器码的能不能乱序执行有关系,是更底层的东西
一个例子就是,如果很多if()这样的branch prediction的代码,超线程用处就不大
【 在 ylh1969 的大作中提到: 】
: 你说的我有点听不懂。
: 我的测试是8核16超线程。
: 放8个线程,性能是单线程的8倍,CPU50%。放16线程性能还是8倍,CPU100%。如果需要75%,放12个线程,性能还是8。
: ...................
--
FROM 183.128.164.*
另外,cpu核之间的效率和cache的共享结构有关系,牙膏厂的L1 cache结构比农厂的好一些,处理相对大一些的数据要好,农厂的核虽然多,共享的cache太多,也限制效率。
--
FROM 183.128.164.*
客户端需求,哈哈
不能把客户端的机器的cpu占高了,不然被投诉
但其实这个在技术上未必有用,因为有的人对占用50%介意,有的人对5%~10%的占用也会感到不满。
有的笔记本电脑在10%左右风扇已经呼呼响了
【 在 hgoldfish 的大作中提到: 】
: 这种需求,多半是跑在 linux 服务器的需求是吧?
: 或许不要在自己应用层去处理,而是使用 linux 的 docker,可以配置使用的 CPU 时间比例,它底层使用的是 cgroups 来控制。
:
--
修改:z16166 FROM 114.241.228.*
FROM 114.241.228.*
这个你还管得了人家用了多少if!
我的测试就是用了一个实际有用的实例,500个节点的有向圖K短路径计算。哪里管得了人家用了多少if!
能够在8核环境得到8倍性能,说明调度器效率很高,性能没问题。
【 在 ziqin 的大作中提到: 】
: 建议读一下超线程的原理
: 超线程增不增效,和线程之间是不是相互通讯或者共享内存没有关系,和机器码的能不能乱序执行有关系,是更底层的东西
: 一个例子就是,如果很多if()这样的branch prediction的代码,超线程用处就不大
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
减少线程数就可以有效减少CPU占用。
除非是单核系统,真没辙了。
其实你要是写出个能把CPU用到100%程序,还真不是个容易的事。总会有IO的。
我是在调度器设法解决IO期间线程空闲的问题。
【 在 z16166 的大作中提到: 】
: 客户端需求,哈哈
: 不能把客户端的机器的cpu占高了,不然被投诉
: 但其实这个在技术上未必有用,因为有的人对占用50%介意,有的人对5%~10%的占用也会感到不满。
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
同鸡讲鸭
8核16超线程,你占8核就显示50%,实际占用100%这个理解是错的
【 在 ylh1969 的大作中提到: 】
: 这个你还管得了人家用了多少if!
: 我的测试就是用了一个实际有用的实例,500个节点的有向圖K短路径计算。哪里管得了人家用了多少if!
: 能够在8核环境得到8倍性能,说明调度器效率很高,性能没问题。
--
FROM 183.128.164.*
我说的是,性能占了100%。
这是既能满足客户要求的CPU占用,又能充分发挥系统性能的好方法。早已经在生产项目中得到应用。
至于真使用16线程,到底性能是8还是8.5我没有精确统计过。你说的那些因素也就这么点影响。
【 在 ziqin 的大作中提到: 】
: 同鸡讲鸭
: 8核16超线程,你占8核就显示50%,实际占用100%这个理解是错的
:
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*
如果是计算密集型,高效率的线程池就是高CPU占用率呀。
不能在调度中或者应用中安排空转,那不是效率就不高了吗?
既要又要的话,就找到这一种方法。
如果是IO密集型,就不存在CPU占用的问题。
【 在 z16166 的大作中提到: 】
: 客户端需求,哈哈
: 不能把客户端的机器的cpu占高了,不然被投诉
: 但其实这个在技术上未必有用,因为有的人对占用50%介意,有的人对5%~10%的占用也会感到不满。
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*