首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >32核(每个物理核) 2.2 GhZ或12核心(6个物理核) 3.0GHZ?

32核(每个物理核) 2.2 GhZ或12核心(6个物理核) 3.0GHZ?
EN

Server Fault用户
提问于 2012-12-19 03:13:17
回答 4查看 802关注 0票数 3

我正在开发一个多线程应用程序(建立在C#上的外汇交易应用程序),客户端从12核心3.0GHZ机器(英特尔)升级到32核心2.2GHz机器(AMD)。当使用多核进行整数计算、浮动计算和其他计算时,PassMark基准测试结果要高得多,而对于单个核心计算,则要比软件包慢一些(其他的计算结果与12核心计算的配置相似)。哦,它还有64 GB内存(是另一个内存的4倍)和更快的SSD。

因此,在该机器上配置和运行应用程序之后,它不仅不能执行,而且速度也要慢得多。我们谈论的是30秒-1分钟的应用程序,通常在5-20秒内完成处理。应用程序使用最大并行度(TPL),我尝试将其设置为核数,也是其中的一半。我还尝试运行单线程,没有设置任何限制并行线程。

虽然硬件可能有一些问题,但我想知道CPU处理速度是否是问题所在。我可以超频到3.0千兆赫。但这是个好主意吗?

服务器信息-

AMD http://www.passmark.com/forum/showthread.php?4013-AMD-Dual-6272-performance-is-60-lower-than-benchmarks似乎一开始就认为基准是错误的--正式的。

英特尔i7 3930k

操作系统(两种操作系统相同) Windows 7专业64位

相关问题- https://stackoverflow.com/questions/7747573/net-performance-on-amd-processor

编辑我看到了很多有用的信息。我现在想稍微修改一下这个问题--暂时忘掉英特尔处理器吧。用AMD系统可以做些什么来获得更多呢?我们在做侧写。我们已经对索引、碎片和其他参数(如I/O用法)进行了DBA检查。似乎有更多的读写比在英特尔的CPU。我看到了一个基于AMD优化的答案。除了使用OpenCL之外,还有其他方法可以这样做吗?超频怎么样?那会烧掉CPU吗?说到认输-我看到人们对我很生气!PC正在出售,老板和我讨论了是否可用的资源(4倍的RAM,几乎3倍的CPU和更快的驱动程序SSD)将帮助我们获得很多的性能。我们总是希望从软件端来调整它,只不过它还没有(我不会说没有)是我们所期待/希望的那种神奇的效果。我对此感到非常痛苦

更多的编辑,我只是希望一些AMD的代表会说这是牛*你是错误的方式!你忽略了这一点而没有使用这个特性。更糟糕的是,我读到AMD今年亏损巨大,正在等待救援。:(

EN

回答 4

Server Fault用户

回答已采纳

发布于 2012-12-19 04:18:55

让我把这事说清楚。您基于预感和单一基准对客户进行了升级?

这是个错误。基准完全是人为的,并不能反映真实世界程序的表现。不过,我要说的是,它们确实表明了潜在的表现。

首先,要让应用程序在多个内核上表现良好,并有效地使用所有可用内存,还有很多事情要做。

许多应用程序的编写没有考虑到大量并发性,并不是所有的问题域都适合并发解决方案。应用程序的瓶颈可能是共享内存周围的锁。

例如,我已经看到了一些并发应用程序的图表,这些应用程序似乎可以扩展到4个线程,但是没有明显的原因,性能随着线程数量的增加而线性下降。这是一种资源饥饿的迹象。锁真的很贵。考虑使用无锁结构或最小化共享资源的数量和线程之间的交互。

另一个放缓可能就在缓存中。一个非常有趣的例子是lz4压缩器。早期版本非常快,但另一个更复杂的压缩机(snappy)提供了类似的性能。原因在于缓存的使用方式。别低估这点。如果你知道你在做什么,你可以用很多倍数来加速一些算法和数据结构,这正是LZ4的作者所做的。

为了兴趣起见,请参阅以下链接:http://fastcompression.blogspot.co.nz/2011/06/lz4-improved-performance.html

不过,我要做的第一件事是在32核心系统上运行您的代码,看看您是否可以对它进行分析,以了解它在哪里花费时间。可能是带锁的。另外,尝试减少线程的数量并再次进行基准测试。你可能会发现性能的提高--事实上,我认为这是可能的。

票数 8
EN

Server Fault用户

发布于 2012-12-19 03:40:08

考虑这个问题的一种方法是:从12个内核x2个内核线程(启用HT)x3.0GHz= 72.0,过渡到一个32 x1x2.2= 70.4的系统。

编辑:根据你更新的信息,在方舟中描述的3930 K有一个6x2拱形=12个线程,而不是我建议的12x2拱形。(http://ark.intel.com/products/63697/Intel-Core-i7-3930K-Processor-12M-Cache-up-to-3_80千兆赫)

过于简化的系统视图-英特尔有更有效的物理核心,而“虚拟”(HT)核心的效率较低,还有许多其他的变量-三通道内存控制器等。

但有一件事可能很突出:线程阻塞。如果存在阻止/阻止其他线程执行的线程,则更快的时钟速率+更高效的架构将赢得更多线程能力。这更像是一个软件优化问题。

另一件事是:你是在为C#应用程序使用AMD优化的编译器,还是还在使用英特尔优化的版本?编辑: Visual和大多数其他编译器都有允许您针对特定CPU体系结构的选项,例如32位对64位、ARM、特定指令集(SSE3 2/SSE3/SSE4等)。我很想知道这是否是起作用的一个因素?

票数 4
EN

Server Fault用户

发布于 2012-12-19 06:38:24

有很多事情要考虑。

  • SSD是系统上唯一的“驱动器”吗?如果SSD不是系统上唯一的驱动器,那么SSD是否只用于操作系统?您是否为应用程序使用RAID,如果是,它是否连接到运行RAID的数据库的其他服务器?已经发现RAID会扼杀数据库数据检索的某些方面。
  • 关于CPU,你确实需要芯片型号来知道你在比较苹果和苹果。模型号会告诉你芯片的高速缓存,内核的#和线程的#,处理器的速度,芯片上的总线类型,以及内核之间每秒千兆字节的流水线速度。例如,一个Intel CPU可能有8.00GT/S带宽,而另一个CPU在核心之间可能有一个6.5GT/S bandwidth...and,这是非常重要的。如果数据在完成工作后被卡在CPU核心上.它有效地使整个系统、硬件和软件陷入僵局。

英特尔服务器处理器

AMD服务器处理器

  • 您是否检查过数据集有多大,以及应用程序在RAM中运行时有多大?两个系统之间的RAM比较速度有多快,您购买的芯片是否支持所购买的RAM的速度!众所周知,主板支持许多不同速度的RAM,但您订购系统的CPU可能不支持。所以你可以订购一个支持1300兆赫主板的系统,因为你订购的芯片不到1000兆赫。如果这个系统有这么多的核心,为什么它只有64 of的RAM为一个新的系统。我有一个家庭系统的戴尔T-410,我购买它在2009年左右,它的最大值为64 12,8核(2四核)...and更新的模式有128 12的内存与12个核心(2x6)。如果您重新排序系统考虑更多的内存,如果您需要it...heck,我使用32 an的8核心家庭系统运行VMware 5.0。
  • 我认为,根据你写文章的方式,以及正在进行的查询类型,在订购之前,你并没有深入研究硬件方面的问题。如果你看小字..。您可以将它返回到另一个系统。只需告诉老板,基于它正在运行的应用程序,性能并不像预期的那样,而且不要延迟,因为返回可能会有一周到两周的时间,然后您就拥有了IT。

不要感到羞愧,只要承认这一点,并让管理层知道,你从最初测试中得到的数字并不在你认为你会得到的cash...and支出的大致范围内--我们需要把它换成另一个系统。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/459218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档