Bug 25966 - nv25 : rxvt scrolling is very slow
Summary: nv25 : rxvt scrolling is very slow
Status: RESOLVED INVALID
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: 7.5 (2009.10)
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-01-09 09:36 UTC by Matthieu CASTET
Modified: 2015-03-22 09:06 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
kernel log (3.88 KB, text/plain)
2010-01-13 09:30 UTC, Matthieu CASTET
no flags Details
x log (28.69 KB, application/octet-stream)
2010-01-13 09:32 UTC, Matthieu CASTET
no flags Details
x log (25.85 KB, text/plain)
2010-01-15 10:54 UTC, Matthieu CASTET
no flags Details
nv28 x11perf results (17.52 KB, text/plain)
2010-01-23 05:10 UTC, Pekka Paalanen
no flags Details
oprofile with debug symbol (38.74 KB, text/plain)
2010-01-26 13:48 UTC, Matthieu CASTET
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matthieu CASTET 2010-01-09 09:36:43 UTC
Hi,

using rxvt 2.7.10 (from debian sid) has some issue with nouveau :
- opening a new terminal, 
- filling it with data (dmesg for example), 
- and then scrolling with the mouse is :
  - slow (we can see a latency)
  - Xorg eat 100% of cpu

There no such problem with nvidia blob (and nv driver IRRC).


Oprofile give me :

    62336 51.8948 libpixman-1.so.0.16.4
    22927 19.0867 libfb.so
    16548 13.7762 no-vmlinux
     6297  5.2423 Xorg

unfortunately I don't have debug symbol.


May be it is related to https://bugzilla.redhat.com/show_bug.cgi?id=538467 ?
Comment 1 Francisco Jerez 2010-01-12 04:39:47 UTC
(In reply to comment #0)
> Hi,
> 
> using rxvt 2.7.10 (from debian sid) has some issue with nouveau :
> - opening a new terminal, 
> - filling it with data (dmesg for example), 
> - and then scrolling with the mouse is :
>   - slow (we can see a latency)
>   - Xorg eat 100% of cpu
> 
> There no such problem with nvidia blob (and nv driver IRRC).
> 
> 
> Oprofile give me :
> 
>     62336 51.8948 libpixman-1.so.0.16.4
>     22927 19.0867 libfb.so
>     16548 13.7762 no-vmlinux
>      6297  5.2423 Xorg
> 
> unfortunately I don't have debug symbol.
> 
> 
> May be it is related to https://bugzilla.redhat.com/show_bug.cgi?id=538467 ?
> 

Could you provide some Xorg/kernel logs? (works for me on nv28).
Comment 2 Matthieu CASTET 2010-01-13 09:30:26 UTC
Created attachment 32615 [details]
kernel log

Note that :
- nouveaufb from vesafb doesn't work
- I use a 2.6.31-1-686 kernel with out-of-tree build
- I don't got interrupt while in X (I may have some at startup)
Comment 3 Matthieu CASTET 2010-01-13 09:32:12 UTC
Created attachment 32616 [details]
x log
Comment 4 Matthieu CASTET 2010-01-13 09:37:27 UTC
I did some benchmark with x11perf (without kms) between nvidia driver and nouveau, and I got [1].

Some rendering is faster (aa, rgb), but other is really slow.

In scrolling test, lot's of cpu is used by kernel.


[1]
1: nvidia-perf2
2: nouveau-perf2

    1              2           Operation
--------   -----------------   -----------------
12800000.0   817000.0 ( 0.064)   Char in 80-char line (6x13) 
12500000.0   810000.0 ( 0.065)   Char in 70-char line (8x13) 
9780000.0   678000.0 ( 0.069)   Char in 60-char line (9x15) 
6730000.0   238000.0 ( 0.035)   Char16 in 40-char line (k14) 
3270000.0   107000.0 ( 0.033)   Char16 in 23-char line (k24) 
8300000.0   964000.0 (  0.12)   Char in 80-char line (TR 10) 
4420000.0   320000.0 ( 0.072)   Char in 30-char line (TR 24) 
5800000.0   772000.0 (  0.13)   Char in 20/40/20 line (6x13, TR 10) 
2370000.0   135000.0 ( 0.057)   Char16 in 7/14/7 line (k14, k24) 
12500000.0   350000.0 ( 0.028)   Char in 80-char image line (6x13) 
11700000.0   293000.0 ( 0.025)   Char in 70-char image line (8x13) 
9540000.0   232000.0 ( 0.024)   Char in 60-char image line (9x15) 
5750000.0   120000.0 ( 0.021)   Char16 in 40-char image line (k14) 
2350000.0    46800.0 ( 0.020)   Char16 in 23-char image line (k24) 
8010000.0   422000.0 ( 0.053)   Char in 80-char image line (TR 10) 
2920000.0   100000.0 ( 0.034)   Char in 30-char image line (TR 24) 
 44800.0   572000.0 ( 12.77)   Char in 80-char aa line (Charter 10) 
 12300.0   233000.0 ( 18.94)   Char in 30-char aa line (Charter 24) 
 43300.0   571000.0 ( 13.19)   Char in 80-char aa line (Courier 12) 
2890000.0   588000.0 (  0.20)   Char in 80-char a line (Charter 10) 
1990000.0   377000.0 (  0.19)   Char in 30-char a line (Charter 24) 
2930000.0   581000.0 (  0.20)   Char in 80-char a line (Courier 12) 
 44700.0   574000.0 ( 12.84)   Char in 80-char rgb line (Charter 10) 
 12300.0   233000.0 ( 18.94)   Char in 30-char rgb line (Charter 24) 
 43400.0   572000.0 ( 13.18)   Char in 80-char rgb line (Courier 12) 
 25800.0    58300.0 (  2.26)   Char in 80-char aa core line (Charter 10) 
  4220.0    10700.0 (  2.54)   Char in 30-char aa core line (Charter 24) 
 19700.0    45800.0 (  2.32)   Char in 80-char aa core line (Courier 12) 
588000.0   315000.0 (  0.54)   Char in 80-char a core line (Charter 10) 
205000.0   115000.0 (  0.56)   Char in 30-char a core line (Charter 24) 
574000.0   314000.0 (  0.55)   Char in 80-char a core line (Courier 12) 
 25900.0    59200.0 (  2.29)   Char in 80-char rgb core line (Charter 10) 
  4220.0    10700.0 (  2.54)   Char in 30-char rgb core line (Charter 24) 
 19700.0    46400.0 (  2.36)   Char in 80-char rgb core line (Courier 12) 
483000.0   187000.0 (  0.39)   Scroll 10x10 pixels 
 69600.0    58800.0 (  0.84)   Scroll 100x100 pixels 
  2790.0     2980.0 (  1.07)   Scroll 500x500 pixels
Comment 5 Pekka Paalanen 2010-01-13 11:50:59 UTC
(In reply to comment #2)
> Created an attachment (id=32615) [details]
> kernel log
> 
> Note that :
> - nouveaufb from vesafb doesn't work
> - I use a 2.6.31-1-686 kernel with out-of-tree build

nouveaufb binds into fb1 instead of fb0, so the hand-over is not working. I guess you have too old kernel to have the vesafb hand-over fixes. It was vesafb, that needed fixing.

Also, no need to test the non-KMS mode anymore. The only way is KMS now.

Furthermore, you seem to have proprietary remnants in the system:
(II) Loading /usr/lib/xorg/modules/extensions/libglx.so
(II) Module glx: vendor="NVIDIA Corporation"
...
(EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)

I wonder if that triggers noaccel mode... maybe not.
Comment 6 Matthieu CASTET 2010-01-13 12:34:38 UTC
just in case I will redo test, with a new version and with the correct libglx
Comment 7 Matthieu CASTET 2010-01-15 10:54:40 UTC
Created attachment 32663 [details]
x log

same issue with last version in kms mode

What result do you get with x11perf ?
Comment 8 Matthieu CASTET 2010-01-15 11:44:32 UTC
$x11perfcomp -r nvidia-perf2 nouveau-perf2-kms 
1: nvidia-perf2
2: nouveau-perf2-kms

    1              2           Operation
--------   -----------------   -----------------
12800000.0   816000.0 ( 0.064)   Char in 80-char line (6x13) 
12500000.0   809000.0 ( 0.065)   Char in 70-char line (8x13) 
9780000.0   677000.0 ( 0.069)   Char in 60-char line (9x15) 
6730000.0   238000.0 ( 0.035)   Char16 in 40-char line (k14) 
3270000.0   107000.0 ( 0.033)   Char16 in 23-char line (k24) 
8300000.0   964000.0 (  0.12)   Char in 80-char line (TR 10) 
4420000.0   322000.0 ( 0.073)   Char in 30-char line (TR 24) 
5800000.0   782000.0 (  0.13)   Char in 20/40/20 line (6x13, TR 10) 
2370000.0   136000.0 ( 0.057)   Char16 in 7/14/7 line (k14, k24) 
12500000.0   349000.0 ( 0.028)   Char in 80-char image line (6x13) 
11700000.0   292000.0 ( 0.025)   Char in 70-char image line (8x13) 
9540000.0   231000.0 ( 0.024)   Char in 60-char image line (9x15) 
5750000.0   120000.0 ( 0.021)   Char16 in 40-char image line (k14) 
2350000.0    46700.0 ( 0.020)   Char16 in 23-char image line (k24) 
8010000.0   421000.0 ( 0.053)   Char in 80-char image line (TR 10) 
2920000.0   100000.0 ( 0.034)   Char in 30-char image line (TR 24) 
 44800.0   504000.0 ( 11.25)   Char in 80-char aa line (Charter 10) 
 12300.0   233000.0 ( 18.94)   Char in 30-char aa line (Charter 24) 
 43300.0   503000.0 ( 11.62)   Char in 80-char aa line (Courier 12) 
2890000.0   498000.0 (  0.17)   Char in 80-char a line (Charter 10) 
1990000.0   301000.0 (  0.15)   Char in 30-char a line (Charter 24) 
2930000.0   498000.0 (  0.17)   Char in 80-char a line (Courier 12) 
 44700.0   502000.0 ( 11.23)   Char in 80-char rgb line (Charter 10) 
 12300.0   233000.0 ( 18.94)   Char in 30-char rgb line (Charter 24) 
 43400.0   505000.0 ( 11.64)   Char in 80-char rgb line (Courier 12) 
 25800.0    59700.0 (  2.31)   Char in 80-char aa core line (Charter 10) 
  4220.0    10800.0 (  2.56)   Char in 30-char aa core line (Charter 24) 
 19700.0    47100.0 (  2.39)   Char in 80-char aa core line (Courier 12) 
588000.0   314000.0 (  0.53)   Char in 80-char a core line (Charter 10) 
205000.0   114000.0 (  0.56)   Char in 30-char a core line (Charter 24) 
574000.0   312000.0 (  0.54)   Char in 80-char a core line (Courier 12) 
 25900.0    59900.0 (  2.31)   Char in 80-char rgb core line (Charter 10) 
  4220.0    10800.0 (  2.56)   Char in 30-char rgb core line (Charter 24) 
 19700.0    47000.0 (  2.39)   Char in 80-char rgb core line (Courier 12) 
483000.0   222000.0 (  0.46)   Scroll 10x10 pixels 
 69600.0    59100.0 (  0.85)   Scroll 100x100 pixels 
  2790.0     2980.0 (  1.07)   Scroll 500x500 pixels
Comment 9 Pekka Paalanen 2010-01-23 02:07:58 UTC
(In reply to comment #7)
> What result do you get with x11perf ?

What tests would you like? Or all? I could provide an x11perf log with nv28.
Comment 10 Matthieu CASTET 2010-01-23 03:04:41 UTC
x11perf -range ftext,scroll500 would be nice
Comment 11 Pekka Paalanen 2010-01-23 05:10:14 UTC
Created attachment 32782 [details]
nv28 x11perf results

Here are my results on nv28, Nouveau drm, libdrm and ddx from git just now.
Comment 12 Matthieu CASTET 2010-01-23 09:32:11 UTC
Thanks, here is the diff. There are not many difference. You are only faster for (aa, rgb) core line.
My cpu is a athlon XP1800+. What is your cpu ?

I will install some debugging symbol to get a better profilling info.

 
1: nouveau-perf2-kms
2: /tmp/x11perf.txt

    1              2           Operation
--------   -----------------   -----------------
816000.0   759000.0 (  0.93)   Char in 80-char line (6x13) 
809000.0   678000.0 (  0.84)   Char in 70-char line (8x13) 
677000.0   593000.0 (  0.88)   Char in 60-char line (9x15) 
238000.0   167000.0 (  0.70)   Char16 in 40-char line (k14) 
107000.0    64600.0 (  0.60)   Char16 in 23-char line (k24) 
964000.0   890000.0 (  0.92)   Char in 80-char line (TR 10) 
322000.0   246000.0 (  0.76)   Char in 30-char line (TR 24) 
782000.0   771000.0 (  0.99)   Char in 20/40/20 line (6x13, TR 10) 
136000.0    89600.0 (  0.66)   Char16 in 7/14/7 line (k14, k24) 
349000.0   183000.0 (  0.52)   Char in 80-char image line (6x13) 
292000.0   143000.0 (  0.49)   Char in 70-char image line (8x13) 
231000.0   113000.0 (  0.49)   Char in 60-char image line (9x15) 
120000.0    60900.0 (  0.51)   Char16 in 40-char image line (k14) 
 46700.0    21800.0 (  0.47)   Char16 in 23-char image line (k24) 
421000.0   223000.0 (  0.53)   Char in 80-char image line (TR 10) 
100000.0    47100.0 (  0.47)   Char in 30-char image line (TR 24) 
504000.0   780000.0 (  1.55)   Char in 80-char aa line (Charter 10) 
233000.0   448000.0 (  1.92)   Char in 30-char aa line (Charter 24) 
503000.0   781000.0 (  1.55)   Char in 80-char aa line (Courier 12) 
498000.0   785000.0 (  1.58)   Char in 80-char a line (Charter 10) 
301000.0   449000.0 (  1.49)   Char in 30-char a line (Charter 24) 
498000.0   786000.0 (  1.58)   Char in 80-char a line (Courier 12) 
502000.0   786000.0 (  1.57)   Char in 80-char rgb line (Charter 10) 
233000.0   448000.0 (  1.92)   Char in 30-char rgb line (Charter 24) 
505000.0   780000.0 (  1.54)   Char in 80-char rgb line (Courier 12) 
 59700.0   452000.0 (  7.57)   Char in 80-char aa core line (Charter 10) 
 10800.0   165000.0 ( 15.28)   Char in 30-char aa core line (Charter 24) 
 47100.0   381000.0 (  8.09)   Char in 80-char aa core line (Courier 12) 
314000.0   450000.0 (  1.43)   Char in 80-char a core line (Charter 10) 
114000.0   165000.0 (  1.45)   Char in 30-char a core line (Charter 24) 
312000.0   381000.0 (  1.22)   Char in 80-char a core line (Courier 12) 
 59900.0   450000.0 (  7.51)   Char in 80-char rgb core line (Charter 10) 
 10800.0   165000.0 ( 15.28)   Char in 30-char rgb core line (Charter 24) 
 47000.0   382000.0 (  8.13)   Char in 80-char rgb core line (Courier 12) 
222000.0   427000.0 (  1.92)   Scroll 10x10 pixels 
 59100.0    63600.0 (  1.08)   Scroll 100x100 pixels 
  2980.0     3060.0 (  1.03)   Scroll 500x500 pixels
Comment 13 Pekka Paalanen 2010-01-23 09:51:42 UTC
(In reply to comment #12)
> Thanks, here is the diff. There are not many difference. You are only faster
> for (aa, rgb) core line.
> My cpu is a athlon XP1800+. What is your cpu ?

AMD Athlon64 3000+ (1.8 GHz). Btw. comparisons to the proprietary driver can be inaccurate, since Nouveau does not adjust clocks, so if there is overall slowness, that might be explained.
Comment 14 Matthieu CASTET 2010-01-26 13:48:14 UTC
Created attachment 32833 [details]
oprofile with debug symbol

So your cpu got sse2 ?

libpixman spend lot's of time in pixman_fill_mmx. I wonder why...
Comment 15 Marcin Slusarz 2010-01-27 08:10:02 UTC
you seem to to have some bogus options in xorg.conf
please retest with minimal config:

Section "Device"
Identifier "n"
Driver "nouveau"
EndSection
Comment 16 Pekka Paalanen 2010-01-27 08:26:13 UTC
(In reply to comment #14)
> Created an attachment (id=32833) [details]
> oprofile with debug symbol
> 
> So your cpu got sse2 ?

It does.

I installed rxvt 2.7.10, but there is no rxvt-xpm that appears in your profile, and scrolling it furiously while full of text still leaves me with at least 70% of CPU idle.

What else should we try to reproduce this? Is it an rxvt-clone of some sort, or some extra features enabled? Perhaps you have a different font configuration?

Did you search the bugzilla? I recall this is not the first report of rxvt slowness, but I cannot remember where I read about it, nor what was the resolution, if any.
Comment 17 Francisco Jerez 2010-02-12 05:52:20 UTC
Rxvt draws itself with bitmap fonts which are never accelerated by EXA, so this is more of an EXA limitation (in a sense it's a deliberate feature).
Comment 18 Matthieu CASTET 2010-02-12 10:35:31 UTC
ok, that make sense.

But I saw that other stuff is slow. For example tabs switch in firefox is more slower. Doing a profiling show that nouveau_exa_download_from_screen take lot's of cpu (more than 25%), but I believe this is for another bug report ?
Comment 19 Matthieu CASTET 2010-02-12 10:48:05 UTC
And for the record in nouveau_exa_download_from_screen, that memcpy [1] (line 140) that take 90% of time.

[1] 
    45dd:       f3 a5                   rep movsl %ds:(%esi),%es:(%edi)
Comment 20 Francisco Jerez 2010-02-12 11:18:24 UTC
(In reply to comment #19)
> And for the record in nouveau_exa_download_from_screen, that memcpy [1] (line
> 140) that take 90% of time.
> 
DFS is most likely being triggered by X11 GetImage requests. A comparison of "x11perf -getimage500" results would be interesting. 

> [1] 
>     45dd:       f3 a5                   rep movsl %ds:(%esi),%es:(%edi)
> 

Comment 21 Ilia Mirkin 2013-08-18 18:09:57 UTC
It appears that this bug report has laid dormant for quite a while. Sorry we haven't gotten to it. Since we fix bugs all the time, chances are pretty good that your issue has been fixed with the latest software. Please give it a shot. (Linux kernel 3.10.7, xf86-video-nouveau 1.0.9, mesa 9.1.6, or their git versions.) If upgrading to the latest isn't an option for you, your distro's bugzilla is probably the right destination for your bug report.

In an effort to clean up our bug list, we're pre-emptively closing all bugs that haven't seen updates since 2011. If the original issue remains, please make sure to provide fresh info, see http://nouveau.freedesktop.org/wiki/Bugs/ for what we need to see, and re-open this one.

Thanks,

The Nouveau Team


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.