* Balbir Singh <balbir@linux.vnet.ibm.com> wrote:wrong. The cost is "only" of adding a field to cfs_rq and _updating it_, in the hottest paths of the scheduler: @@ -256,6 +257,7 @@ static void __enqueue_entity(struct cfs_ */ if (key < entity_key(cfs_rq, entry)) { link = &parent->rb_left; + rightmost = 0; } else { link = &parent->rb_right; leftmost = 0; @@ -268,6 +270,8 @@ static void __enqueue_entity(struct cfs_ */ if (leftmost) cfs_rq->rb_leftmost = &se->run_node; + if (rightmost) + cfs_rq->rb_rightmost = &se->run_node; 10,000 yield-ing tasks is not a common workload we care about. It's not even a rare workload we care about. _Especially_ we dont care about it if it slows down every other workload (a tiny bit). have you actually measured how much it takes to walk the tree that deep on recent hardware? I have. Ingo --
| Andrew Morton | -mm merge plans for 2.6.23 |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| david | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Arjan van de Ven | Re: [GIT]: Networking |
| Auke Kok | [PATCH] e1000e: test MSI interrupts |
git: | |
