Em Segunda, 30 de Julho de 2007 12:46, Ingo Molnar escreveu:
> * John <[email protected]> wrote:
> > On 7/29/07, Ingo Molnar <[email protected]> wrote:
> > > * John <[email protected]> wrote:
> > > > Ingo-
> > > >
> > > > Why not perform the same test using the native linux Q3 client to
> > > > compare numbers to wine? [...]
[...]
> and that matches my experience as well (as limited as it may be). In
> general my impression is that CFS and SD are roughly on par when it
> comes to 3D smoothness.
>
> The Wine+Quake3 numbers i posted yesterday are so bad under SD that they
> must be some artifact in SD (possibly related to yield - i've strace-ed
> the tasks under SD today and they are blocking in yield), so they are
> not really representative of the general quality of SD (unless you are
> being hit by that particular regression). Still it is kind of ironic
> that when i tried to find a 3D regression in CFS i found a 3D regression
> in SD.
I also tryied Q3A demo and i got similar values to yours:
CFS 90
2.6.22 90
SD 90
while running that endless loop, on 2.6.22 and SD it drops instantly to 4 fps.
While CFS runs ~70 with 1.9 load. I was able to play the game without noticing
much degradation. I written these values while playing under CFS:
load fps
1.66 81
1.73 75
1.97 70s
With this patch [1] someone sent me over IRC i get similar values to CFS,
maybe a few fps more, but thats insignificant and not very accurate to
measure. Anyway with this patch i am playing with a load of 2.2 at ~75 fps,
1024x768 windowed. It's enjoyable to frag the dumb 'Major' as under CFS.
I think the main difference in performance of CFS and SD it's the
implementation of sched_yield (which is used by graphic drivers) and CFS has
changed the implementation of sched_yield. You use:
in mainline (2.6.22):
/**
* sys_sched_yield - yield the current processor to other threads.
*
* This function yields the current CPU by moving the calling thread
* to the expired array. If there are no other threads running on this
* CPU then this function will return.
*/
you changed it to something like:
if (unlikely(rq->nr_running == 1))
schedstat_inc(rq, yld_act_empty);
else
current->sched_class->yield_task(rq, current);
wile mainline (2.6.22) and SD use:
dequeue_task(current, array);
enqueue_task(current, target);
and
requeue_task()
Anyway i am going to continue to frag a bit more :)
[1] - http://rafb.net/p/Rbpqaz26.html
There are 2 modes for this hack:
sysctl kernel.sched_yield = 1 or 2, see patch.
[...]
>
> Ingo
> _______________________________________________
> http://ck.kolivas.org/faqs/replying-to-mailing-list.txt
> ck mailing list - mailto: [email protected]
> http://vds.kolivas.org/mailman/listinfo/ck
--
Com os melhores cumprimentos/Best regards,
Miguel Figueiredo
http://www.DebianPT.org
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]