Dual core issue resolution (also Hyperthreading).

edited January 2009 in Support
Dual cores should work fine after you patch your OS and / or processor.
[H]ardOCP has a great guide that I keep forgetting exists. Check it out. Only the AMD dual core fix seems relevant in Vista.

http://www.hardforum.com/showthread.php?t=983781

For intel with Nvidia graphics (and possibly AMD, although unlikely) in WINXP:

There are intermittent application compatibility issues with dual core
CPUs.
This issue can be worked around be toggling off multi-thread optimizations
using the following instructions:
1 Launch regedit and determine the current primary display card by
looking in
HKey_Local_Machine\Hardware\DeviceMap\Video
and note the GUID (global unique identifier assigned by Windows),
which is the long string in brackets { } at the end of the entry
"\device\video0".
2 Look in
HKey_Local_Machine\SYSTEM\CurrentControlSet\Control\Video\
{GUID}\0000
where {GUID} is the number derived from the previous step.
3 Open the "0000" directory and create a new DWORD called
OGL_ThreadControl and give it a value of 2.
This will disable multithreading in the driver for all OpenGL applications.
4 If you want to disable driver multithreading for all Direct3D applications�
In the same "0000" directory, create a new DWORD called WTD_EXECMODEL
and give it a value of 0.


After all of this, if you are still having issues, you can alway use the set affinity option. Typically set it to processor 1 or 4. If you are running a server on the same machine set them on diff CPU cores, and on a quad core, I recommend 1 and 3, as the Core2 line uses essentially 2 core 2 processors that cannot access each others L2 cache directly. They have to go through the system bus. The advantage is that you can avoid cache contention by keeping the client and server workloads on "different" sets of CPU caches. This is a minor performance tweak, and is not required.

For maximum control and performamce, without any of the above hassle, use SMP seesaw.....
http://majorgeeks.com/See_Saw_Pro_d620.html

I consider CPU affinity and timing issues a closed subject at this point. Look to use of onboard sound as a culprit in XP, and 3d/effects enabled sound/onboard in Vista. Vista does NOT allow Direct sound hardware acceleration of 3D audio. Look to Open AL or creative's Audio Alchemy or other hacks as solutions. For creative SBLive / Audigy 1/2 in Vista, look at the Kx Audio project driver package.


HyperThreading on Pentium 4 processors (or anything but a very new true multi-core):

Disable it. Cache contention, and locking/timing/stalling issues abound for gamers using these processor options.

I will remind all that my old P4 3.2 GHz, with a 128 MB 9800 pro, and 3Gigs of DDR 333Mhz can totally play fluid in this game.

Comments

  • I run a c2d game system, and one of my game servers is a p4 3ghz box. I run ht on the p4 with no problems hosting tribes, tribes2, tribes vengeance, and counter strike 1.6 at the same time. tv and cs take most of the cpu time. Anyway, ht is designed to make more of the cpu resources more available as most cpus are only some 30 percent efficient, efficiency being rated by how much actual compute work is being done compared to cpu idle as the cpu is waiting on disk or network resources to finish delivering data to the cpu. In most cases ht gives a 5 to 10 percent or higher boost in performance, and rearely has any drawbacks such as decreasing application performance.

    Now as to dual/multiple core game systems, my a4600x2 had all the amd patches and still had stutter in games, even sp3 on xp did little to help it. Only fix was to set affinity, wich is a pain to do every game. The c2d system I use now has never had that issue, no matter the os or the sp level. Vista should be a good deal better at reducing stutter in games than xp since vista is built upon server2003 technology, the best part of wich means faster net stack, better memory management, and of all things, a per processor runqueue scheduler. This type of scheduler keeps threads on the currently cached core as much as possible, cache swapping, cache misses, and other performance hits are greatly reduced by this scheduler.

    I have experimented with this setting:
    SetPerfCounterEnable(1);
    With that setting enabled (1), the game runs fluidly in my c2d game system, no stuttering. With that line set to disabled(0), the game stutters. Try it on your system and see if it helps you or not.
  • The issue with HT is that it is virtualizing your single processor to appear as 2 independent CPUs. Unfortunately, register space on the processor itself is very limited on a P4. The CPU cache is also shared, and quite small in size (esp the L1 cache on Intle P4). The P4 had a very deep pipeline that tends to stall if dependecy and branch prediction misses. When running 2 virtual processor on one physical P4, this has a higher probability of happening. As far as running -servers- on a P4, I believe that the levels of data, and type of calcs may allow for HT to be used pretty safely. Since T2 can run blazing fast dedicated server on a 450 MHz P2, I tend to feel that HT is a small return on investment. HT shows typical improvements of around 10%.

    When designing a game server, caching controllers, SATA, SCSI, 10K RPM drives, along with optimizing for lowest network latency are key. PATA, 5400 RPM, and HT can introduce a "micro lag", as I call it. It's really a kind of nondescript jerkiness, that you just can't quantify fully.

    Try running non HT, and on an SATA drive running AHCI (native command queueing) mode. Turn off indexing, and other unneeded services. If possible, raise background process priority, and set the kernel to run as full in memory as possible. Kernel module load/unload time is insignificant, but can cause tiny stuuters, as the CPU is tasked to disk duty (less relevant on more advanced disk systems that offload processing).

    Vista is not based off 2K3 server core. 2K3 is essentially XP with NT security, and more 64 bit memory addressability, and kernel components. It still has 32 bit per application (4 GB) limitations, IIRC.

    We could discuss the merits and shortfalls of hyperthreading for days. Not much will come out of it. One sign I look to that it is bad for P4 is that HT is finally coming out on post C2D processors after Intel implants the memory (North Bridge) controller on the CPU die, as AMD has been doing for about 3 years or so. The L2/L3 cache is also being bumped up. Hyperthreading was a quick and dirty solution that, due to cache size and other limitations, could cause issues up to and including blue screens, especially on heavy workloads.

    I have an HP DL380 server that has seen use as a CS server and NWN2 server simultaneously. It had 2 (P4 series) XEON processors in it, on server 2K3. I had performance issues with the NWN2 MYSQL database queries until I disabled HT. So going from 4 virtual processors to 2 helped out a lot.

    3 Ghz is overkill. Disable HT, and maintain steady throughput is my recommendation.

    To wit:
    My X2 processor is running on Vista 64 bit, and does not need affinity set or the dual core timing fix.
    It was just massively overclocked, and the memory subsystem was not fully stable.
Sign In or Register to comment.