11

Dual 与 Quadcore 的讨论与 Quadcores 本身一样古老,答案通常是“这取决于您的情况”。所以这里的场景是一个 Web 服务器(Windows 2003(不确定是 x32 还是 x64),4 GB RAM,IIS,ASP.net 3.0)。

我的印象是,Web 服务器中的 CPU 不需要那么快,因为请求通常是相当轻量级的,因此拥有更多(较慢)内核应该是更好的选择,因为我们有很多小请求。

但是由于我在IIS负载平衡方面没有太多经验,而且我不想花很多钱才发现我做出了错误的选择,所以有经验的人可以评论一下是否更慢或更少更快的核心更好?

4

4 回答 4

16

对于像网络服务器这样的东西,划分处理每个连接的任务是(相对)容易的。我可以肯定地说,Web 服务器是并行代码最常见的(并且已经解决的)用途之一。而且由于您能够将大部分处理拆分为多个离散线程,因此更多的内核确实对您有利。这是共享主机成为可能的重要原因之一。如果像 IIS 和 Apache 这样的服务器软件不能并行运行请求,这意味着每个页面请求都必须以队列方式发出……可能会使加载时间变得难以忍受。

这也是为什么像 Windows 2008 Server Enterprise 这样的高端服务器操作系统支持 64 核和 2TB 内存的原因。这些应用程序实际上可以利用这么多内核。

此外,由于每个请求都可能具有较低的 CPU 负载,因此您可能(对于某些应用程序)可以使用更慢的内核。但显然,让每个核心更快意味着能够更快地完成每项任务,并且理论上可以处理更多任务和更多服务器请求。

于 2008-08-06T18:40:08.393 回答
3

我们在 linux 上使用 apache,它分叉了一个进程来处理请求。我们发现更多的内核有助于我们的吞吐量,因为它们减少了等待放入运行队列的进程的延迟。我对 IIS 没有太多经验,但我想同样的场景也适用于它的线程池。

于 2008-08-06T18:33:50.530 回答
3

马克哈里森说:

我对 IIS 没有太多经验,但我想同样的场景也适用于它的线程池。

确实 - 更多内核 = 更多线程同时运行。IIS 本质上是多线程的,并且很容易利用这一点。

于 2008-08-06T18:40:39.813 回答
1

越多越好。随着编程语言开始变得更加复杂和抽象,将需要更多的处理能力。

Atleat Jeff 认为Quadcore 更好

于 2008-08-06T18:31:14.793 回答