欢迎大家来到IT世界,在知识的湖畔探索吧!
在做DPDK开发时许多人对于CPU的超线程是否打开是迷惑的,intel在DPDK的叙述中也没有明确的说法(至少我没看到)。在这里我通过理论分析和实际工程试图说明白这个问题:一个核开启两个线程必然是共同竞争同一个核的硬件资源的,因而理论上说开启多线程会让执行效率降低。但实际情况如何呢?我在用DPDK做网络数据包收发和查表处理时,发现我写的程序是关闭超线程性能更好;在用DPDK做网络数据包收发和查表且使用Hyperscan进行包内容匹配时刚开始发现打开超线程性能更好,这让我怀疑整个处理流程存在较大的“锁开销”造成的,通过优化了流程,将一些比较明显的锁逻辑做了优化,发现关闭超线程性能更高了!这才是符合我的认知的:并行性优良的程序会高效的使用一个核的硬件资源,如果在这样的情况下开启超线程反而是帮倒忙:将处理平摊到两个超线程上 核的运算能力平均分给每个线程 但线程之间总存在调度开销的 无形中损失了核资源。而并行性不好的程序,比如并行优化不好或者确实存在必须串行的逻辑,则开启超线程性能会更好。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/145936.html