New app to impove dual cpu game performance

G

Guest

Guest
Having read the dual athlon review and just purchased an asus A7M-266D I was disappointed that games run slower on it than a single CPU system, so I decided to develop a utility to do something about it. What it does is gives the the process with active foreground window dedicated access to processor 0 and forces all other applications and services to run on processor 1.

This means the processor 0 cache only ever contains the code and data for the foreground app and the kernel thread dispatcher, and it should suffer far fewer context changes. Theoretically (I think - I don't pretend to be the expert here) this should make it faster than a single processor system, rather than slower as it should get more processor time and better caching.

I mentioned game performance in the subject, but it should improve any processor intensive single-threaded application.

This is just a proof of concept version at the moment - I intend to make it dynamically manage allocations of processors to the foreground app as follows:

- If it uses <30% of overall power, all processes
can run on both CPUs

- If it uses 30% - 50% of overall power, it gets
one CPU, all other processes get the other

- If it uses over 50%, it is multi-threaded and
busy, so it gets CPU 0 and all processing including
it get access to CPU 1

Testing my initial version, I saw a improvement with 3d mark 2001 from 6757 to 6852 - 1.56% faster.

I am concerned, however, that I am directing all the load onto CPU 0. I thought about a round-robin scheme - alternate which processor gets the load at regular intervals. Then it occured to me that these things have build in temperature monitors - if I could get at those readings, I could direct the load onto the cooler processor. I could then also provide an additional safety cutout that switched all load onto one processor if the
other began to overheat.

So I have the following questions?

1. Anyone know how to read the temperature of an Athlon MP from code? Is it motherboard/BIOS/chipset or CPU specific?

2. What about Intel CPUs - is that a different method? Do they even have temperature monitors?

3. If I can't to this, any suggestions on an appropriate time to direct the load of the foreground app to one processor before switching it to the other, taking performance / thermal considerations into account.

4. Anyone willing to test / benchmark my application - see if my readings are acurate or a fluke and try it with a few more benchmarks?

It should run on NT/2000/XP. Its tested it on a single processor 2000 (Just to make sure there were no errors on 2000 - it didn't do any good on a single processor system!) and a dual processor XP professional. It is a single 72K EXE file.

Currently it is not specific to Athlons, it should run equally well on multi-processor Pentium systems, including those with more than 2 processors.

If you are willing to help me test this application please email me with the following or reply privately to this message.

- You Processor Types, Chipset and Motherboard
- Your OS
- What, if any benchmarking software you can test on


Paul Hickman
Paul__Hickman@Hotmail.com (two underscores)
 

AMD_Man

Splendid
Jul 3, 2001
7,376
2
25,780
Wow, I don't know how to retrieve temperature through code, but I'm sure it can be done. What programming language are you using? I'm pretty you're going to have to use assembly as I doubt temp-reading is an integral part of the WinAPI.

AMD technology + Intel technology = Intel/AMD Pentathlon IV; the <b>ULTIMATE</b> PC processor
 
G

Guest

Guest
I'm using Visual C++ 6. I shoudn't need to drop into assembly as on NT only device drivers have direct access to the hardware. However some device driver must be bringing the info up to the application layer as the asus probe application can monitor it, and it too won't get direct hardware access without a device driver. I need to find the API for programming that driver myself.