From: Hubertus F. <fr...@us...> - 2001-04-15 10:17:47
|
George, while this is needed as pointed out in a previous message, due to non-contiguous physical IDs, I think the current usage is pretty bad (at least looking from a x86 perspective). Maybe somebody can chime in from a different architecture. I think that all data accesses particularly to __aligned_data should be performed through logical ids. There's a lot of remapping going on, due to the mix of logical and physical IDs. If indeed the physical numbers are sparse (like we had on a 4x4 NUMA system) then indexing doesn't work anyway. The right approach to me seems to move everything including p->processor to logical and the few locations where needed otherwise (?) should be moved to have the translation from performed there. Hubertus Franke Enterprise Linux Group (Mgr), Linux Technology Center (Member Scalability) , OS-PIC (Chair) email: fr...@us... (w) 914-945-2003 (fax) 914-945-4425 TL: 862-2003 george anzinger <ge...@mv...>@e34.esmtp.ibm.com on 04/12/2001 12:08:49 PM Sent by: ge...@e3... To: Hubertus Franke/Watson/IBM@IBMUS cc: mi...@el..., Linux Kernel List <lin...@vg...>, lse...@li... Subject: Re: [Lse-tech] Bug in sys_sched_yield Hubertus Franke wrote: > > In the recent optimizations to sys_sched_yield a bug was introduced. > In the current implementation of sys_sched_yield() > the aligned_data and idle_tasks are indexed by logical cpu-#. > > They should however be indexed by physical cpu-#. > Since logical==physical on the x86 platform, it doesn't matter there, > for other platforms where this is not true it will matter. > Below is the fix. > Uh... I do know about this map, but I wonder if it is at all needed. What is the real difference between a logical cpu and the physical one. Or is this only interesting if the machine is not Smp, i.e. all the cpus are not the same? It just seems to me that introducing an additional mapping just slows things down and, if all the cpus are the same, does not really do anything. Of course, I am assuming that ALL usage would be to the logical :) George |
From: Kanoj S. <ka...@go...> - 2001-04-15 17:28:00
|
> > > George, while this is needed as pointed out in a previous message, > due to non-contiguous physical IDs, I think the current usage is > pretty bad (at least looking from a x86 perspective). Maybe somebody > can chime in from a different architecture. > > I think that all data accesses particularly to __aligned_data > should be performed through logical ids. There's a lot of remapping > going on, due to the mix of logical and physical IDs. > I _think_ cpu_logical_map() can be deleted from the kernel, and all places that use it can just use the [0 ... (smp_num_cpus-1)] number. This is for the generic kernel code. The only place that should need to convert from this number space to a "physical" space would be the intercpu interrupt code (arch specific code). Only a handful of architectures (mips64, sparc*, alpha) do array lookups for cpu_logical_map() anyway, those probably can be changed to the x86 definition of cpu_logical_map(). Kanoj |
From: Walt D. <dru...@en...> - 2001-04-16 16:00:30
|
Hubertus Franke writes: > I think that all data accesses particularly to __aligned_data > should be performed through logical ids. There's a lot of remapping > going on, due to the mix of logical and physical IDs. > > If indeed the physical numbers are sparse (like we had on a 4x4 > NUMA system) then indexing doesn't work anyway. This is exactly right. On IA64, we have to hide the physical processor ID (processor bus/local ID pair) completely. As far as I can see, but it's been awhile, so forgive me if I miss one or two, IA64 doesn't expose the physical processor ID at all, outside the IPI and AP startup code. > The right approach to me seems to move everything including p->processor > to logical and the few locations where needed otherwise (?) should > be moved to have the translation from performed there. Yep. If not simply to make the generic kernel code clearer, this will also make it easier to support non-linear (NUMA) systems. --Walt |