SMP/dual (multi) core phase II

markw at mohawksoft.com markw at mohawksoft.com
Sun May 6 21:47:08 EDT 2007


> On Sun, May 06, 2007 at 07:12:00PM -0400, markw at mohawksoft.com wrote:
>> If someone has an educated argument against this position I would really
>> like to be educated.
>
> We have a easily parallelizable, highly math-intensive workload
> that forms the core of our services. (We == work, that is.)
> We start as many processes as we have CPU cores available as
> determined by Linux. This scales linearly on both single-core
> CPUs and multicore CPUs. It scales almost, but not quite,
> linearly on HyperThreading CPUs. you are saying

Please explain what you mean. "Hyperhreading" CPUs are multi-core CPUs,
aren't they, or am I missing something?

SMP systems don't scale linearly, pretty close as long as there is no
contention, but not linearly. I'm concerned about the resource contention
on multi-core CPUs.

>
>> Second, does anyone out there know if dual core processors can (as a
>> matter of hardware and OS implementation) be used to run two different
>> processes simultaneously rather than merely two different threads of a
>> single process.
>
> Yes.

Are you sure?

>
>> VMM map have to be loaded into the memory controller, meaning that
>> separate processes with different virtual memory mapping could not
>> benefit
>> from two cores.
>
> That is not the case. CPU cache is split between the processes,
> but unless you have a program structure where the main loops
> don't fit into cache, you are unlikely to see much impact.
> Remember, you're running a multitasking OS anyway. Right?

Multi-core CPUs generally share an MMU between processors. When an OS (on
386 and higher CPU based operating systems) switch tasks, they also switch
(if I recall correctly) the CR3 register to switch page descriptors or
edit they page table map. If processors are sharing memory management
units, running two different processes on two different processing cores
should not be possible CPU, cache or not.

This isn't bad if you have multi-threaded apps, but if you have an app
that multi-tasks using fork(), you are SOL on multi-core, unless, of
course, this is incorrect.


>
> -dsr-
>
> --
> .. .----. --   .-. . .- -.. .. -. --.   -.-- --- ..- .-.   -- .- .. .-..
> .-.-.-   .-- .... ---   . .-.. ... .   .. ... ..--..
> http://tao.merseine.nu/~dsr/eula.html is hereby incorporated by reference.
>


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




More information about the Discuss mailing list