Impact of thread priority on .NET applications and hyper-threading enabled processors
Paper: Hyper Threading Architecture CPU Comparison: With Hyper-Threading Technology, multiple logical processors can share resources on a single physical processor. Yet to applications, logical processors appear to be no different than the processors in systems without HT Technology.

by Eric L. Blair. Intel Corp.

Intel processors that support Hyper-Threading Technology (HT Technology) promote maximum system resource utilization by allowing multiple logical processors to share physical resources within the same physical processor package. To applications, logical processors appear to be no different than the processors in systems without HT Technology. However, to maximize application and system performance, it can be helpful for developers to understand the relationship between application threads, logical processors, physical processors, and performance. Hyper-Threading Technology requires the processor, chipset, BIOS, operating system, and applications that are optimized for HT Technology in order for the technology to provide benefits

Before the introduction of Hyper-Threading Technology, all processors in an IA32 multiprocessor system were identical to each other and each processor was capable of the same performance as the other processors in the system. With HT Technology, all physical processors in the system are still identical to each other; however, each physical processor contains multiple logical processors and each of those logical processors share resources with each other. A side effect of resource sharing is that the performance of one logical processor is dependent upon the resources being used by the other logical processors within the same physical processor. Essentially, all logical processors in a system with HT Technology may not have equal performance at any given time depending on the resources being used by the other logical processor.

Thread Scheduling and Hyper-Threading Technology
Operating systems schedule threads on available processors based on a "ready-to-run" criteria. The set of available threads is contained in a thread pool. A thread is ready-to-run if it has all the resources it needs, except the processor. Threads that are waiting for disk, memory, or other IO, are not in a ready-to-run state. In general, high priority threads will be selected over low priority threads. Over time, a low priority thread will become favored and will eventually be scheduled on an available processor

In the case where there are more ready-to-run threads than logical processors, the operating system will select higher-priority threads to schedule for each available processor. The lower-priority threads will be delayed to allow the higher priority threads more execution time

In the case where there are two ready-to run threads and two logical processors, the operating system schedules each thread on a logical processor. The two threads may contend for the same physical processor resources, because HT Technology shares physical resources without respect to thread priority. As the two threads contend for resources, the high priority thread will complete instructions slower than when it owns the processor's execution resources itself

Subscribers who liked this article also read:
Discovering Multi-Core: Extending the Benefits of Moore's Law
Learn how multi-core processor architecture and software development m...

If you're interested in this topic, these articles may be helpful:

ASP.NET validator controls
by Andrew Ma This tutorial gives a brief overview of how to use the...
Creating C# wrappers for Intel Integrated Performance Primitives using Microsoft .NET interoperability mechanisms
from Intel Corp. One of the beauties of .NET is that an object wri...
Introduction to Eiffel.NET, part one: the Eiffel language basics
by Daniele Pagano Eiffel is an object-oriented language developed...
ASP.NET tutorial: adding records to a database using ADO.NET, Access Database, and Visual Basic.NET (VB.NET)
from EALabs Inc. - EAServe.com Adding records to Access database us...
Non-stop .NET
by Alan Zeichick, principal analyst, Camden Associates Web services...

Related Jobs:

Help Desk Lead #R-256-05 - VA - Arlington - McDonald Bradley, Inc.
R-256-05 Help Desk Lead Sep 14, 2005 Arlington,Virginia Send J...
Help Desk JR Technician #R-264-05 - VA - Arlington - McDonald Bradley, Inc.
R-264-05 Help Desk JR Technician Sep 14, 2005 Arlington,Virginia ...
Help Desk (Junior IT Analyst) #R-258-05 - DC - Washington - McDonald Bradley, Inc.
R-258-05 Help Desk (Junior IT Analyst) Sep 14, 2005 Washington,Distr...
Help Desk (Junior IT Analyst) #R-259-05 - DC - Washington - McDonald Bradley, Inc.
R-259-05 Help Desk (Junior IT Analyst) Sep 14, 2005 Washington,Distr...
Help Desk JR Technician #R-263-05 - VA - Arlington - McDonald Bradley, Inc.
R-263-05 Help Desk JR Technician Sep 14, 2005 Arlington,Virginia ...
Help Desk JR Technician #R-322-05 - VA - Arlington - McDonald Bradley, Inc.
R-322-05 Help Desk JR Technician Oct 27, 2005 Arlington,Virginia...
Help Desk (Entry It Specialist) #R-266-05 - VA - Herndon - McDonald Bradley, Inc.
R-266-05 Help Desk (Entry It Specialist) Sep 14, 2005 Arlington,Vir...
Lead Software Development Engineer #150424 - WA - Redmond - Microsoft Corporation
Help us reach the goal of $1Billion in sales by 2008 for smartphones a...
Software Engineer, System Software and Firmware - CA - Mountain View - Google
We are looking for experienced system software engineers with a strong...
Lead Program Manager #145627 - WA - Redmond - Microsoft Corporation
Are you interested in working in a start up like environment within on...