繁体   English   中英

堆分配和合适的硬件

[英]Heap allocation and suitable hardware

对于不可避免地在堆上创建大量数据的 C# .net 3.5 应用程序,就硬件而言,我会根据 memory 寻找什么? 它只是最大的套接字总线宽度吗? 还是memory棒的“带宽”? 或者他们运行的实际频率?

我们已经得出结论,我们的应用程序的瓶颈是无法避免的,并且在扩展时,将工作分散到多个线程上,由于许多线程访问 RAM,我们似乎会发生“冲突”。

实际问题是指锁定项目并有许多线程试图访问这些项目。 没有办法进一步优化线程锁定。 由于这与线程有关,我不确定我是否还应该调查其他 CPU 选择并仔细查看 QPI 统计数据? 我们目前使用的是 Westmere 架构,但时钟速度较慢,为 2GHz。

编辑:有人建议 DMA 可以帮助我们。

我将其标记为 C# 和 Java,因为我相信答案不会特定于 C#。

提前致谢,

我会在更快的机器上测试应用程序。 从它的声音来看,你的 memory 带宽是瓶颈,所以我会尝试 4.5 GHz 超频 i7 和 32 GB 1600 MHz memory 或类似的。 您可以花大约 1000 美元购买一个。 您可能会发现,使用更快的系统,您的瓶颈就会移动。

顺便说一句:我怀疑在 C# 中创建 object 是可以避免的,尽管它可能无法实现,因为听起来修复这个问题的时间有限。 在Java,我写了很多每天GC少于一次的高性能服务器,但是你必须客观地编写所有核心代码。 同样,您可以编写一个不锁定代码关键部分的服务,但稍后添加它并非易事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM