On Tuesday 15 July 2008 00:29:20 you wrote:
> > i have this weird issue with waveform. but this was also there before the
> > latest patch.
> > when i use waveform display i get 100%cpu load. even if i am not even
> > playing anything at all. this does not happen with simple display.
> >
> > i have compared straces from both cases.
> > waveform produces a lot of these lines (notice all those getpid() calls..
> > there are none in the simple-display):
> >
> > [pid  6299]      0.000013 ioctl(43, 0x80984120, 0x44f05e50) = 0
> > [pid  6278]      0.000995 <... getpid resumed> ) = 6278
> > [pid  6278]      0.000992 getpid( <unfinished ...>
> > [pid  6299]      0.000012 clock_gettime(CLOCK_REALTIME, {1216067052,
> > 376500320}) = 0
> > [pid  6278]      0.000998 <... getpid resumed> ) = 6278
> > [pid  6278]      0.000993 getpid( <unfinished ...>
> > [pid  6299]      0.000016 poll( <unfinished ...>
> > [pid  6278]      0.000986 <... getpid resumed> ) = 6278
> > [pid  6278]      0.000995 getpid()      = 6278
> > [pid  6278]      0.002005 getpid()      = 6278
> > [pid  6278]      0.001998 getpid()      = 6278
> > [pid  6278]      0.001997 getpid()      = 6278
> > [pid  6278]      0.002000 getpid()      = 6278
> > [pid  6278]      0.002000 getpid()      = 6278
> > [pid  6299]      0.001009 <... poll resumed> [{fd=43,
> > events=POLLOUT|POLLERR| POLLNVAL, revents=POLLOUT}], 1, 16) = 1
> > [pid  6299]      0.000995 ioctl(43, 0x80984120 <unfinished ...>
> > [pid  6278]      0.000019 getpid()      = 6278
> > [pid  6299]      0.000985 <... ioctl resumed> , 0x44f05e50) = 0
> > [pid  6299]      0.000994 clock_gettime(CLOCK_REALTIME,  <unfinished ...>
> > [pid  6278]      0.000012 getpid()      = 6278
> > [pid  6299]      0.000995 <... clock_gettime resumed> {1216067052,
> > 394903059}) = 0
> > [pid  6278]      0.002996 getpid()      = 6278
> > [pid  6299]      0.001008 clock_gettime(CLOCK_REALTIME, {1216067052,
> > 399503073}) = 0
> > [pid  6278]      0.001000 getpid()      = 6278
> > [pid  6299]      0.001016 ioctl(43, 0x80984120, 0x44f05e50) = 0
> > [pid  6278]      0.000979 getpid()      = 6278
> > [pid  6299]      0.001001 clock_gettime(CLOCK_REALTIME, {1216067052,
> > 403497684}) = 0
> > [pid  6278]      0.001013 getpid()      = 6278
> > [pid  6299]      0.000991 poll([{fd=43, events=POLLOUT|POLLERR|POLLNVAL,
> > revents=POLLOUT}], 1, 16) = 1
> > [pid  6278]      0.001001 getpid()      = 6278
> > [pid  6299]      0.000995 ioctl(43, 0x80984120, 0x44f05e50) = 0
> >
> > ===================================
> > basically it keeps doing this until i quit mixxx
> >
> > i'm running gentoo on a amd64 machine, nvidia gl drivers.
> > gcc 4.1.2
> >
> > playback is surprisingly good. gui is completely unresponsive to the
> > point where my complete desktop is almost unusable :)
>
> From what you describe, it sounds like you don't have direct rendering
> enabled. Does "glxinfo | grep direct" say direct rendering: yes ?
>
> The whole desktop being unusable sounds like X is spending all it's time
> rendering the updates that we are posting from Mixxx. When this is
> happening can you drop to a terminal and see if Xorg is also at high CPU
> usage?
>
> I'm not really sure why all those getpid calls are occuring. The render
> loop is accomplished via Qt's timer interface. Every 30ms or so (in the
> old visual code), a timerevent fires, which is followed by a call to
> update() so a paintEvent is scheduled on the waveform widgets.
>
> This means that they're being redrawn just about 1000/30 = 33 fps. I'd be
> curious to see if the problem goes away when you turn the fps down. Go to
> wvisualwaveform.cpp and in the constructor, change the setTimer call to
> something higher, like 100 and see what happens.
>
> I experienced almost /exactly/ what you described when I wrote a Non-GL
> accelerated version of the waveform viewer to go with the GL version. The
> intent was so that people could have a waveform viewer other than simple
> if they didn't have GL support. I figured that a modern CPU/GPU would be
> able to handle it without the GL, but what I found was that X and Mixxx
> became unresponsive -- but the music playback was good. This leads me to
> believe that the GUI thread is spending all its time making requests to X,
> and X is the bottleneck. The Mixxx engine thread, however, is just fine
> and chugs merrily along playing the audio.
>
> Do you run Xinerama or Twinview, by any chance?
>
> RJ

Yes. Twinview. nvidia-settings reports one monitor to run at 59.98 hz and the 
other to run at 60.02 which seems a bit odd. Xinerama is disabled in 
xorg.conf.
glxinfo reports Direct Rendering: yes

I might try some different configurations with xinerama and or twinview 
disabled..

/justin


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to