>>> On Wed, Jul 16, 2008 at 5:44 PM, in message <487E6BD7.3020006@qualcomm.com>, Max Krasnyansky <maxk@qualcomm.com> wrote:Well, admittedly I am not entirely clear on what problem is being solved as I was not part of the original thread with Linus. My impression of what you were trying to solve was to eliminate the need to rebuild the domains for a hotplug event (which I think is a good problem to solve), thus eliminating some complexity and (iiuc) races there. However, based on what you just said, I am not sure I've got that entirely right anymore. Can you clarify the intent (or point me at the original thread) so we are on the same page? Well, not quite. cpupri ends up hanging off of a root-domain, so its more closely related to the global cpu_XXX_maps than it is to the domains. As you know, to clear a bit from the domains means walking each RQ and each domain within that runqueue since the domain structures are per-cpu. This is why historically the domains have been rebuilt when a cpu is plugged in (iiuc). However, with cpupri (and root-domains in general) the structure is shared among all member RQs. Therefore, taking a cpu online/offline is simply a matter of updating a single cpumap_t. This happens today (in sched-devel, anyway) via the set_rq_online/offline() routines. Im not following you here (but again, it might be because of my misunderstanding of what it is you are actually solving). I see the cleanup that you did to not require rebuilding domains on hotplug as a really good thing. However, I don't see the problem with updating cpupri in the manner I mentioned either. The rq_offline routine is invoked on the DYING event (pre-offline), and the rq_online on the ONLINE event. This means that it will effectively disable the runqueue at the earliest possible moment in the hotplug processing, thereby removing the possibility that we will route to that core. My gut tells me that if this is not adequate, there there is something wrong with the hotplug notifier infrastructure and we should fix that, not put some more infrastructure on top of it. :) Don't get me wrong. I am not nacking your concept. As ive said I like decoupling the hotplug from the cpuset stuff (assuming that is what you were trying to do). But I am also not convinced that part of what you are doing is already handled properly, so why duplicate it when you can just tie into the existing logic. On this topic, (and assuming I am right in my cpupri online/offline theory above), FYI you can probably use rq->rd->online instead of cpu_active_map in many places. This mask is updated according to the hotplug state in a similar manner as cpupri and should effectively be a cached version of cpus_active_map & rq->rd->span. I guess the point here really is that it would be best (IMO) to not introduce another map (at least to the scheduler) if it can be helped at all. If you could somehow tie your cpuset/hotplug decoupling logic with rq->rd->online, et. al., I would be very enthused :) If you want to retain the cpu_active_map for other code (e.g. cpusets/hotplug) to use, I see no problem with that. It just seems the scheduler already has the hooks in place to play nice here, so Id like to see them used if possible ;) Regards, -Greg --
| Ingo Molnar | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Roland Dreier | Re: Integration of SCST in the mainstream Linux kernel |
git: | |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Arjan van de Ven | Re: [GIT]: Networking |
| Linus Torvalds | Re: iptables very slow after commit 784544739a25c30637397ace5489eeb6e15d7d49 |
