Benchmarking Dual vs Single Core on Athlon 64 X2

SPM

Regular
I want to compare dual vs single core performance on an Athlon 64 cpus. Can I turn off one of the cores on an Athlon 64 X2 rather than have to buy another computer with a single core Athlon 64?
 
you can mess with the device manager, where it says Computer / ACPI Multiprocessor PC (or such similar thing), change the driver so it'll be ACPI Uniprocessor PC instead.
 
The most straight approach is to manually set the affinity in Task Manager to one of the two cores/CPUs for the given application.
BTW, there is a special affinity tool (SetAffinity), where you can create affinity masks/profiles for your app's to point how many available cores/CPUs to use, without messing with the Task Manager.
 
The most straight approach is to manually set the affinity in Task Manager to one of the two cores/CPUs for the given application.
BTW, there is a special affinity tool (SetAffinity), where you can create affinity masks/profiles for your app's to point how many available cores/CPUs to use, without messing with the Task Manager.

The one I use is ImageCFG. You set it once and you're done. Nothing needed to continually run in the background or anything.

Of course to get truer indication of single processor benchmarks, you'd need to ensure every single process is running on the same CPU core.
 
Also don't forget that todays graphics drivers (from both ATI and Nvidia) are also multi-threaded so assigning a single core to an app alone will not be valid (if you wan't to truly equate to single core performance).
 
Thanks. What I am looking for is something that will turn off a core at BIOS level or something that will do it on Linux if such a thing is available.

The reason I want to do this is that I am trying to work out what I need to get a reasonable performance at remote multi-user Linux sessions, and Windows XP home virtual machine sessions on a reasonably cheap application server box. The sessions would be viewed on Windows client PCs or a thin client using RDP and NX protocol. I need to compare single core AMD Athlon 64 3000 with 1MB RAM and dual core Athlon 64 X2 3800 with 2MB RAM and also a single SATA II drive with NCQ with 2 or 4 SATA II drives with NCQ, RAID 1, RAID 0 or RAID 10 for performance, with a Firefox browser, OpenOffice suite, and other applications.

The thing about Linux is that because of it's Unix heritage derived from high end multi-user mainframes, it handles multiple users a lot differently and much more efficiently than Windows. Windows is an evolution of the low end single user desktop, and so dynamic libraries loaded into RAM is not shared between different users. Linux on the other hand loads dynamic libraries into RAM only once and share it no matter how many users use it. This means that provided libraries are compiled using shared dynamic runtime libraries, RAM usage is much more efficient, and start-up time and disk swapping is dramatically reduced with multi-user Linux than with Windows. SATA II with NCQ or SCSI will dramatically improve disk speed in a multi-user environment due to intelligent command queueing reducing time spent on multiple seeks - up to 7 times the speed of ATA without NCQ is not unusual on servers, and it also reduces CPU load for disk access. However to work out how things pan out, I need to actually try things out with different configurations and the mix of applications I want to use.

By the way, graphics performance shouldn't be critical since they are just office applications.
 
The thing about Linux is that because of it's Unix heritage derived from high end multi-user mainframes, it handles multiple users a lot differently and much more efficiently than Windows. Windows is an evolution of the low end single user desktop, and so dynamic libraries loaded into RAM is not shared between different users. Linux on the other hand loads dynamic libraries into RAM only once and share it no matter how many users use it.

You would be partly right if you were talking about Windows 3.1, but NT does all of these and has done so since it was born in 1992.
 
You would be partly right if you were talking about Windows 3.1, but NT does all of these and has done so since it was born in 1992.

This is not quite true:

http://www.securityfocus.com/infocus/1872

Win32 DLLs are not position independent. They need to be relocated during loading, unless the fixed base it was built with happens to be unused in the loading process. Relocations to the same address can be shared, but if different processes have conflicting memory layouts, the loader needs to generate multiple copies of the DLL in memory. When the Windows loader maps a DLL into memory, it opens the file and tries to map the file into memory at its preferred base address. As these mapped pages are touched, the paging system will see whether the pages are already present in memory. If they are, it just remaps the pages to the new process since the relocation has already been done by the loader at the preferred base address. Otherwise the pages are fetched from the disk.

If the preferred address range for the DLL is not available, the loader maps the pages into a free location in the process address space. In this case, it marks the code page as COW (copy-on-write) which previously was marked read+execute, since the linker will have to perform code fix ups at the time of relocation, necessitating the page to be backed up by a paging file.

Linux solves this issue by the use of PIC (Position Independent Code). Shared objects in Linux usually contain PIC which avoid the need to relocate the library at load time. All code pages can be shared amongst all processes using the same library and can be paged to/from the file system. In x86, there is no simple way to address data relative to the current location since all jumps and calls are instruction-pointer relative. Hence, all references to the static globals were directed through a table known as Global Offset Table (GOT).

On Linux having multiple users running applications at the same time can actually speed things up if shared dynamic libraries are already loaded. It also means you can't easily tell the minimum RAM required without actually knowing how much space shared dynamic libraries take up.
 
Last edited by a moderator:
The Windows loader uses memory mapping of executable files on the disk instead of just loading the file into memory. It's why programs and dlls are write/delete locked when they are being used. It also saves memory too as memory space will be reused if possible. Tis reasons like this as to why things like office fast start *shudder* work.
 
I've figured out that cpufreq can scale the frequencies of each core separately, so it should allow you to turn off one core to allow power saving (and benchmarking) provided the hardware allows it.

http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_871_13118,00.html

AMD's cool and quiet driver for Linux supports cpufreq.

AMD Athlonâ„¢ 64 X2 Dual Core Processor Cool'n'Quiet Driver Version 1.50.03 Linux - AMD Athlon 64 X2 Dual Core Processor Cool'n'Quiet Version 1.50.03 for Linux 2.6 series kernels. Provides support for AMD Cool'n'Quiet technology for Linux systems. Adds support for 2.6.10 and later kernels. Requires cpufreq-1.20, cpuspeed-1.20.1, or powersaved-0.8.19 or later to support SMP and dual-core systems.

Does anyone know if the AMD Windows tools allow the cores to be run scaled at different frequencies? If Windows can do it, the hardware can do it.
 
here again, my original idea but on the linux side : could you disable SMP support in the kernel? maybe as a boot option? (or boot a kernel with such support chopped off)
 
here again, my original idea but on the linux side : could you disable SMP support in the kernel? maybe as a boot option? (or boot a kernel with such support chopped off)

Thanks. Yes, I could recompile the kernel without SMP support and boot off that. I should have thought of that earlier.

There is a kernel boot option maxcpus=1, but I think this is the same as using cpufreq. It does work on Core 2 duo laptops apparently though.
 
Back
Top