Original Link: https://www.anandtech.com/show/1515




Out of any type of server that an organization will purchase today, web servers are amongst the most popular. "Web server" is such a generalized term in today's IT environment. Their primary function can be one of many different business requirements: an E-commerce site to sell a company's product, an enterprise web services application performing order fulfillment, corporate intranet, collaboration applications, and the list goes on. Today, web servers are more like distributed application servers than a machine serving static HTML pages from years past. In this installment of the Xeon vs. Opteron series, we're going to take a look at both of the most current offerings from Intel and AMD on three different web platforms.

The one common link between the different types of web applications is the language in which they are written. In the past, we've performed our load testing on one application server (Macromedia ColdFusion); however, in this series of tests, we've included three different platforms. We ran load tests on Macromedia ColdFusion MX 6.1, PHP 4.3.9, and Microsoft .NET 1.1. We used a collaboration application called FuseTalk for our .NET and ColdFusion tests, and we used the popular open-source portal software, PHPNuke for our PHP test. We're hoping to get a real world store front in future tests, to further diversify our testing.

Testing procedure

To load up our servers and applications, we used Microsoft ACT, which is included with Microsoft Visual Studio.NET. A test scenario was created that kept the CPU sustained at 90%+ usage, while not completely flooding the box to the point where everything was queued. The test was run over a Gigabit network to ensure that there were no network bottlenecks, and a separate database server was used for all tests. We used Microsoft Windows 2003 Server Web Edition for the operating system, and therefore, had 2GB of memory for all web servers. 2GB or less is a common configuration for a web server today. We used an IDE drive for the web servers, since none of our tests are I/O intensive.

The test results include 3 measurements: Average time to last byte, Total requests served, and Requests per second. The average time to last byte is the average time that it took to receive the last byte of information from each request. The total requests served is the number of successful requests (HTTP status 200) completed within the test time. The requests per second measurement is the average of requests per second that the test was performing throughout the duration of the test.

Opteron System
Dual 250 Opteron processors
2GB PC3200 DDR (Kingston KRX3200AK2) memory
Tyan K8W motherboard
Windows 2003 Server Web Edition (32 Bit)
1 x 40 GB 7200RPM 8MB Cache IDE Drive

Xeon System
Dual 3.6GHz Xeon processors
2GB DDR2 memory
Intel SE7520AF2 motherboard
Windows 2003 Server Web Edition (32 Bit)
1 x 40 GB 7200RPM 8MB Cache IDE Drive




ColdFusion Test Results

Macromedia ColdFusion MX is a rapid application development language that started off under a company named Allaire. It was originally developed in C++ and then interpreted into HTML by the ColdFusion runtime service. Today, ColdFusion runs on top of a J2EE server, and is compiled into Java byte code, which is then executed in the J2EE server's Java Virtual Machine (JVM). ColdFusion MX 6.1 was the version that we used, with the August 2004 updater applied. We left ColdFusion configured with 8 simultaneous requests, we enabled trusted cache, and we set the JVM to 512MB for minimum and maximum heap size as recommended in the Macromedia performance documentation.

The difference between the Opteron and Xeon here was approximately 3%, which isn't far off our deviation of 2.5%. The JVM isn't optimized for either CPU architecture, so the test is completely impacted by the hardware itself. The results here indicate that either CPU platform would result in very similar performance on the ColdFusion MX 6.1 application server.

FuseTalk ColdFusion MX 6.1

FuseTalk ColdFusion MX 6.1

FuseTalk ColdFusion MX 6.1




PHP Test Results

PHP is an HTML embedded scripting language, which is open source and runs on almost every operating system out there. PHP was originally written by Rasmus Lerdorf in 1994. It gained acceptance and established a user base, and as a result, it has become one of most popular web scripting languages in the world. We chose PHPNuke as our test application because of how well-known it is in the PHP community. Originally, we started by using PHP 5.0, but PHPNuke doesn't seem to work with 5.0. So, we ended up using PHP 4.3.9, the latest 4.x build available at the time of this article's publication.

Due to the fact that all of the operations occurring during this test are interpreted, it's not surprising that the numbers are close to our deviation. The PHP interpreter, obviously, doesn't favor one CPU architecture over another. The results are within approximately 3% of each other.

PHP-Nuke 7.4

PHP-Nuke 7.4

PHP-Nuke 7.4




Microsoft .NET

This was probably the most interesting test out of the bunch, as there was a recognizable difference in the two architectures. Our .NET test was run on the recently released FuseTalk .NET collaboration application.

The .NET platform is the new framework for building Windows-based and web-based applications from Microsoft. It not only replaces the older ASP platform, but introduces some up-to-date languages that run on the Common Language Runtime, which is the backbone of .NET. The three main languages used with .NET are: C# (similar to C++), VB.NET (somewhat similar to VB), and J# (fairly close to JAVA). Whatever language in which you write your code, it is compiled into an intermediate language, CIL (Common Intermediate Language). It is then managed and executed by the CLR (Common Language Runtime).

As you can see from the test results below, the Xeon managed to take the lead by approximately 8%. Why? Well, the one interesting piece of information that the .NET JIT (Just in Time) compiler takes into account during the compilation to native code is CPU architecture. According to a Microsoft MSDN article published by Allan McNaughton from Intel, the .NET JIT compiler takes CPU architecture into account during the last phase of compilation to native code. Specifically, during compilation, the JIT will detect Intel processors and produce code that takes advantage of Intel NetBurstTM and Hyper-Threading technology. With version 1.1 of the JIT compiler, Intel's Streaming SIMD Extensions 2 can also be a factor. At the time of publication, no information regarding any performance enhancing optimizations that occur for the AMD Opteron were found.

FuseTalk .NET

FuseTalk .NET

FuseTalk .NET


Conclusion

The results throughout much of these tests were a draw, right up until the Microsoft .NET tests. The Intel specific optimizations that the .NET compiler makes give Intel the advantage on Microsoft's platform, by a decent 8% margin. Your application server platform would now make an impact on which CPU architecture to choose. Obviously, on the .NET platform, Intel is the choice if you want the fastest there is. Because of the relationship that Intel has with Microsoft, it can only get better as the .NET framework matures. One could hope that Microsoft will work with AMD and get the JIT compiler to optimize for AMD's K8 architecture.

Log in

Don't have an account? Sign up now