首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >功能强大的服务器上的.Net多线程应用程序在vis常规服务器上缓慢运行

功能强大的服务器上的.Net多线程应用程序在vis常规服务器上缓慢运行
EN

Stack Overflow用户
提问于 2013-08-29 05:40:28
回答 1查看 1.7K关注 0票数 1

我有以下两种服务器配置:

Server1:

处理器Intel(R) Xeon(R) CPU E5-4617 0@2.90 Mhz,2900 Mhz,6 Core(s),6逻辑处理器(S) Intel(R) Xeon(R) CPU E5-4617 0@2.90 Mhz,2900 Mhz,6 Core(s),6逻辑处理器Intel(R) Xeon(R) CPU E5-4617 0@2.90 Mhz,2900 Mhz,6 Core(s),6个逻辑处理器英特尔(R) Xeon(R) CPU E5-4617 0@ 2.90GHz,2900 Mhz,6个Core(s),6个逻辑处理器(S) 操作系统名称2012标准 物理存储器128 GB

Server2:

处理器Intel(R) Xeon(R) CPU X5650 @ 2.67GHz,2659 Mhz,4个核心,4个逻辑处理器 操作系统名称: 2008 R2企业 物理存储器24 GB

我的应用程序使用Task并行化父组件和子组件,父类任务/线程将调用其子类对象,其子类对象再次使用task并行模块。

一开始,我在server2上运行,并获得了性能结果,这比没有任务运行应用程序要好。现在我的理论期望是,当Server1出现时,应该有一些性能提高,因为子组件至少有20-30个任务并行运行,但令我完全惊讶的是,它已经恶化了3-4倍,所以如果更早地执行子组件需要花费2秒,现在需要7-8秒,这对我们来说是一场灾难,因为子组件可能会被调用几百万次,我不知道该如何解决这个问题。特别是因为Server1应该是产品。任何能让我开始解决这个问题的建议都是很棒的。

如果你需要更多的细节/澄清,请告诉我。

谢谢,

梅里纳

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-29 06:01:39

您的问题有点模糊,特别是因为我们没有任何代码可供使用,也没有任何框架的概念。但我能想到一些可能会引起你问题的一般事情。首先,仅仅因为您添加了更多的内核并不意味着您将得到更好的处理,事实上,根据代码的编写方式,您可以得到与您所看到的完全相反的结果。我的主要怀疑是,您有一些共同的对象,您的所有任务都在使用这些对象,而您的任务最终会因为这些对象而发生冲突,从而导致瓶颈。所以我的第一个问题是,你们在任务之间是否有共享的资源?基本上,您正在生成的任务是否是单个工作单位(即,任务之间没有共享依赖关系)?另一个提示您有瓶颈的警告信号是CPU的使用。理论上,如果您有许多独立的工作单元,那么您应该消耗大量的CPU,因为.Net将能够并行地运行它们。如果您有很多任务,但是CPU使用率较低,那么很可能一些共享对象正在扼杀您的并行化。

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

https://stackoverflow.com/questions/18503087

复制
相关文章

相似问题

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