使用所有可用的内核和 CPU 是不是不负责任?
Posted
技术标签:
【中文标题】使用所有可用的内核和 CPU 是不是不负责任?【英文标题】:Is it irresponsible to use all the available cores and CPU's?使用所有可用的内核和 CPU 是否不负责任? 【发布时间】:2014-04-14 21:14:45 【问题描述】:我正在设计一个 JPG 解码器。一种实现方式支持使用线程并通过扩展支持 CPU 的多个内核。如果底层系统支持 3 个内核,我的程序将使用所有这些内核。使用所有核心资源是不负责任的,还是旨在缓解贪婪程序的系统。
此外,线程实现还需要更多的内存资源(相当于 RGB BMP 大小的 3 倍)。什么时候内存使用过多?
【问题讨论】:
让用户选择他们想为特定任务分配多少核心。 您认为启动线程等对每个文件解码通常的 JPG 文件是否有益?我不是。记忆:代码? @CaptainObvlious 我认为这超出了用户的知识范围。 @CaptainObvlious 大多数用户对微调一无所知。大多数人会坚持使用默认值,如果你不使用所有内核,要么抱怨它太慢,要么抱怨它使用过多的 CPU :-) 有人说设计就是做出选择......无论哪种方式,你都会被激怒。 【参考方案1】:使用所有核心资源是否不负责任
不,不是。考虑一个单核系统:如果以某种方式“不负责任”地使用所有核,那么什么都做不了。
或者是旨在缓解贪婪程序的系统
是的,操作系统是专门为此设计的。一般来说,两个同等优先级的程序各自想要使用所有 CPU 内核将共享 50%-50% 的内核(按时间,而不是按内核分配)。每个应用程序都会认为它正在使用所有内核,但某些内核的运行速度可能会比其他内核慢一些。应用程序不需要关注这种详细程度(尽管如果需要,操作系统通常会提供这样做的方法)。
【讨论】:
好吧,谢谢.. 我立刻明白了。我想这可以解释为什么我的多线程实现偶尔会比单线程实现慢得多。以上是关于使用所有可用的内核和 CPU 是不是不负责任?的主要内容,如果未能解决你的问题,请参考以下文章
“爆到天际线” - TiDB 2021 Hackathon 决赛不负责任点评
看似不负责任的菩提祖师,却用另外一种方式,造就了孙悟空的人生