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

我正在开发一个multithreading应用程序(基于C#的外汇交易应用程序),并将客户端从12核心3.0GHZ机器(Intel)升级到32核心2.2 Ghz机器(AMD)。 当使用多核进行整数,浮点运算和其他计算时,PassMark基准testing结果显着更高,而对于单核计算来说,它比包(比较其他configuration与12核相似)要慢一些。 哦,它也配备了64 GB的RAM(4倍,另一个)和更快的SSD。

因此,在该机器上configuration和运行该应用程序之后,不仅性能不佳,而且速度也显着降低。 我们正在谈论30秒 – 通常在5-20秒内完成处理的应用程序慢了1分钟。 该应用程序使用MAXALLREE平行主义(TPL),我已经尝试设置核心数量还有一半。 我也尝试运行单线程,并没有设置任何限制并行线程。

虽然它可能是硬件有一些问题,我想知道如果CPU处理速度是问题。 我可以超频到3.0 GHZ。 但是,这是一个好主意吗?

服务器信息 –

AMD http://www.passmark.com/forum/showthread.php?4013-AMD-Dual-6272-performance-is-60-lower-than-benchmarks看起来基准是错误的,从正式开始。

英特尔i7 3930k

操作系统(两者相同)Windows 7 Professional 64位

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

编辑我看到了很多有用的信息。 我想稍微修改这个问题 – 暂时忘记英特尔处理器。 AMD系统可以做些什么来获得更多呢? 我们正在研究分析。 我们有一个DBA看看索引,碎片和其他参数,如I / O的用法。 似乎有更多的读取和写入比在基于Intel的CPU。 我看到了基于AMD优化的答案。 有没有办法做到这一点,而不是使用OpenCL? 超频怎么样? 这会煮CPU吗? 在拥有方面 – 我看到有人生我的气! 个人电脑已经发售,老板和我讨论了可用资源(4倍多的内存,几乎3倍的CPU和更快的驱动程序SSD)将帮助我们获得大量的性能。 我们总是希望从软件的最后调整它,除非它没有(我不会说没有)竟然是我们正在寻找/期望的那种魔力。 我对此感到无比痛苦 – 因此这篇冗长的文章。

更多编辑我只是希望一些AMD代表会说这是公牛****你做错了! 你忽略了这一点,并没有使用这个function。更糟糕的是,我看到AMD今年亏损巨大,正在等待救助。 🙁

让我说清楚。 您是基于预感和单一基准升级客户端的吗?

这是一个错误。 基准是完全人为的,并不反映真实世界的程序将如何执行。 我会说他们确实提供了潜在的performance。

首先,让应用程序在多核上运行良好,并有效使用所有可用内存还有很多。

许多应用程序不是用大并发来编写的,并不是所有的问题域都适用于并发解决scheme。 你的应用程序的瓶颈可能是共享内存locking。

例如,我已经看到了并发应用程序的图表,看起来可以很好地说4个线程,但是没有明显的原因,随着线程数量的增加,性能会呈线性下降。 这是一个资源匮乏的迹象。 锁真的很贵。 考虑使用无锁结构或最小化共享资源和线程间交互的数量。

另一个放缓可以在caching周围。 一个非常有趣的例子是lz4压缩机。 早期的版本非常快,但另一个更复杂的压缩机(snappy)也有类似的performance。 原因是由于使用caching的方式。 不要低估这一点。 如果你知道你在做什么,你可以加快一些algorithm和数据结构的几倍,这正是LZ4的作者所做的。

请查看下面的链接,感兴趣的朋友: http : //fastcompression.blogspot.co.nz/2011/06/lz4-improved-performance.html

我要做的第一件事就是在32核心系统上运行你的代码,看看你是否可以对它进行分析,以了解它在哪里花费时间。 这可能是锁。 此外,请尝试再次减less线程数和基准testing。 你可能会发现性能提高 – 事实上我可能会这样说。

一种思考方式:你从每个核心(HT使能)x 3.0 ghz = 72.0的12个核心×2个线程变为32×1×2.2 = 70.4的系统。

编辑:根据您的更新信息,ARK中描述的3930k具有6×2的弧= 12线程,而不是我build议的12×2弧。 ( http://ark.intel.com/products/63697/Intel-Core-i7-3930K-Processor-12M-Cache-up-to-3_80-GHz

抛开系统的简单视图 – 英特尔具有更高效的物理内核,而“虚拟”(HT)内核效率更低,还有许多其他variables需要考虑 – 三通道内存控制器等。

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

还有一件事要考虑:你是否在为C#应用程序使用AMD优化的编译器,还是仍在使用Intel优化的版本? 编辑:Visual Studio和大多数其他编译器有选项,允许您针对特定的CPU体系结构,即32位与64位,ARM,特定指令集(SSE2 / SSE3 / SSE4等)。 我想知道如果这可能是一个因素发挥?

有很多事情要考虑。

  • SSD是系统中唯一的“驱动器”吗? 如果SSD不是系统中唯一的驱动器,SSD只能用于操作系统? 您是否正在为应用程序使用RAID,如果连接到运行RAID的数据库的其他服务器? 已发现RAID会杀死数据库数据检索的某些方面。

  • 关于CPU,你真的需要芯片型号来知道你正在比较苹果和苹果。 型号会告诉你芯片caching,芯片数量和线程数量,处理器速度,芯片上的总线types,以及核心之间千兆位/秒的stream水线速度。 例如,一个Intel CPU可能具有8.00GT / s的带宽,而另一个CPU可能具有6.5GT / s的带宽……并且在核心之间是非常重要的。 如果数据在完成工作后卡在CPU内核上,就会使整个系统,硬件和软件发生死锁。

英特尔服务器处理器

AMD服务器处理器

  • 您是否检查过数据集的大小,以及在RAM中运行时应用程序有多大? 两个系统之间的内存速度有多快,您购买的芯片是否支持购买的内存的速度! 众所周知,主板支持许多不同的RAM速度,但是您订购系统的CPU可能不支持。 所以你可以订购一个支持1300MHz主板的系统,由于你订购的芯片不到1000MHz。 如果这个系统有这么多的内核,为什么它只有64GB的内存在一个新系统上。 我有一个戴尔T-410家庭系统,我购买了它在2009年左右,它最大的64GB,8核心(2四核心)…和较新的型号有128GB内存可用12核心(2 x 6)。 如果您对系统进行重新sorting,请考虑更多内存(如果您需要的话)…哎,我使用32 GB运行VMware 5.0的8核心主系统。

  • 我认为,根据您的post撰写方式以及查询的types,在订购之前,您并未在硬件方面进行任何修改。 如果你看一下小字,你可以把它换回另一个系统。 只要告诉老板,根据运行的应用程序,性能不是如预期的那样,并且不要拖延,因为回报可能会持续一周到两周,之后您将拥有它。

不要惭愧,只要拥有它,并让pipe理层知道,从最初的testing中得到的数字不在你相信你会得到的现金支出的范围之内……我们需要交换它为另一个系统。

正如其他人已经指出的那样,基准并不总是一个很好的select哪个处理器的指导。 特别是PassMark绝对不是您想要查看的非通用应用程序。

如果您对软件正在使用哪些资源以及哪些资源将成为瓶颈有所了解,则可能需要查看“原始”性能数据,如内存延迟,内存吞吐量以及Spec规格基准testing的独特testing( 英特尔3960 , AMD 6274 )和CFP( 英特尔3990 , AMD 6274 )规范。

请记住, 根据编译选项或用于生成特定二进制文件的编译器版本 ,结果(以及感知或测量的应用程序性能)可能会有很大的不同 。 .NET的情况有些不同,因为编译器只生成元代码,通过JIT运行时将其转换为实际的与架构相关的代码。 但即使在那里,您也可以为特定体系结构指定优化参数 。 此外,您的操作系统的特定修补程序级别也可能很重要 – 微软已经发布了修补程序来修复某些AMD CPU的性能不佳。