32核(每个物理核)2.2 GhZ还是12核(6个物理核)3.0GHZ?

Muk*_*kus 3 intel ssd central-processing-unit

我正在开发一个多线程应用程序(基于 C# 构建的外汇交易应用程序),并将客户端从 12 核 3.0GHZ 机器(英特尔)升级到 32 核 2.2 GHz 机器(AMD)。当使用多核进行整数、浮点和其他计算时,PassMark 基准测试结果明显更高,而对于单核计算,它比包慢一点(其他人与 12 核的配置类似)。哦,它还配备了 64 GB RAM(是另一个 RAM 的 4 倍)和速度更快的 SSD。

因此,在该机器上配置并运行应用程序后,它不仅性能不佳,而且速度明显变慢。我们谈论的是 30 秒 - 在通常在 5-20 秒内完成处理的应用程序上慢 1 分钟。该应用程序使用 MAX DEGREE of PARALLELISM (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 位

相关问题 - /sf/ask/542330141/

编辑 我看到很多有用的信息。我现在想稍微修改一下问题——暂时忘记英特尔处理器。可以用 AMD 系统做些什么来充分利用它?我们正在研究分析。我们让 DBA 查看了索引、碎片和其他参数,如 I/O 使用情况。似乎比基于 Intel 的 CPU 有更多的读取和写入。我看到了一个关于基于 AMD 的优化的答案。除了使用 OpenCL 之外,还有其他方法可以做到这一点吗?超频怎么样?那会煮CPU吗?在拥有方面 - 我看到人们有点生我的气!PC 正在打折,老板和我讨论了可用资源(RAM 的 4 倍,CPU 的几乎 3 倍和更快的 SSD 驱动程序)是否会帮助我们获得很多性能。我们一直希望从软件端对其进行调整,除非它没有 t(我不会说没有)结果证明是我们正在寻找/希望的物有所值的神奇爆炸。我确实对此感到有点悲惨-因此是冗长的帖子。

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

hoo*_*enz 8

让我说清楚。您根据预感和单一基准升级了客户端?

这是一个错误。基准完全是人为的,并不能反映现实世界程序的执行情况。然而,我会说它们确实提供了潜在性能的指示。

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

许多应用程序在编写时并没有考虑到大并发,并且并非所有问题域都适合并发解决方案。您的应用程序的瓶颈可能是围绕共享内存的锁定。

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

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

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

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