Weigand, Stephen D.
2010-Sep-28 21:53 UTC
[Rd] Very slow plot rendering with X11 on CentOS 5.5
I am connecting from a PC to a Linux system running CentOS
release 5.5 (Final) and it is extremely slow to render plots
to the X11 device.
This is not R's fault but I wonder if anyone can offer
guidance so I can help the system administrators address
the problem.
I can connect to the Linux server using a NoMachine NX client
for Windows or using X-Win32. I also have access to R running
on my Windows PC and an older version of R on Solaris which
I connect to using X-Win32.
Using a test function of:
f <- function(n){
for(i in 1:n) qqnorm(rnorm(100))
}
system.time(f(20))
I get typical timings of:
Platform Version Client 'type' user system elapsed
--------------------------------------------------------
Linux 2.11.0 NX client cairo 1.012 0.131 7.155
Linux 2.11.0 NX client Xlib 0.964 0.127 7.119
Linux 2.11.0 X-Win32 cairo 1.141 0.211 20.287
Linux 2.11.0 X-Win32 Xlib 1.116 0.207 20.152
Solaris 2.8.1 X-Win32 cairo 0.172 0.020 0.356
Solaris 2.8.1 X-Win32 Xlib 0.173 0.019 0.364
Win32 2.11.1 Native 0.03 0.22 0.25
The Linux timings are just awful, particularly using
X-Win32. Cairo vs. Xlib doesn't seem to matter much.
Does anybody have any suggestions on what to look into?
I can work around the Linux problems by not using the X11
device and instead writing a plot to a temporary PNG or
PDF and using Eye of GNOME or Evince but that isn't ideal.
But I would welcome any tips in this regard.
The Linux sessionInfo is:
R version 2.11.0 (2010-04-22)
x86_64-unknown-linux-gnu
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=C LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Thank you,
Stephen
--
Stephen Weigand, Statistician II
Biomedical Statistics and Informatics
(507) 266-1650; fax (507) 284-9542
Mayo Clinic; 200 First St. SW
Rochester, Minn., 55905 USA
On Tue, 28 Sep 2010, Weigand, Stephen D. wrote:> I am connecting from a PC to a Linux system running CentOS > release 5.5 (Final) and it is extremely slow to render plots > to the X11 device.> The Linux timings are just awful, particularly using > X-Win32. Cairo vs. Xlib doesn't seem to matter much.I have to think it is display rendering load at the displaying unit [an X server], or network latencies in getting the detail from the producer [an X client] to the displaying unit [an X server] With centos 5 on a local X display [so the X client, and the X server do not have to push the content through the X fowarding and across the network sockets, but rather can go through the lo interface under Linux]:> f <- function(n){+ for(i in 1:n) qqnorm(rnorm(100)) + }> system.time(f(20))user system elapsed 0.220 0.028 2.417>which is quite sprightly ;) ------------------- Then when I run it on the same hardware, but through two SSH hops, to, and back from a remote unit in the local subnet, things fall apart: [herrold at centos-5 ~]$ ssh xps400 Last login: Tue Sep 28 11:00:05 2010 from centos-5.first.lan [herrold at xps400 ~]$ ssh centos-5 herrold at centos-5's password: Last login: Tue Sep 28 09:13:50 2010 [herrold at centos-5 ~]$ R ...> f <- function(n){+ for(i in 1:n) qqnorm(rnorm(100)) + }> system.time(f(20))user system elapsed 0.352 0.272 29.681>------------------- I build my own R packaging under CentOS and do not have a packaging suitable for the architecture of that intermediate box -- installing R to a Debian testing box, and running the X forwarding connection only one hop, it is again visually rebdered MUCH slower. I get:> system.time(f(20))user system elapsed 0.644 0.212 45.089>yikes ;) I'll get a packaging built under CentOS 5 on that other architecture overnight, and supplement this post -- Russ herrold