I realize the orangepi is not the swiftest of machines, but the ld issue is
more than just SOC performance.  The ld process should finish within a few
seconds to a minute.  It is taking 20 minutes.

I am trying to build php as the current bulk build failed on so many
packages.  I think it is  the first bulk build since clang.  The other
compiles and processes execute in reasonable time, but when it comes to ld
something happens.

As I was looking around trying to find what some clues I ran man from the
serial console and it hung. Man runs fine from an ssh connection over the
lan.  Man on the console was hung in bqwait.  What is that? 

  PID USERNAME PRI NICE  SIZE   RES STATE     WAIT      TIME    CPU COMMAND
87860 root      63    0   45M   45M run       -        18:26 64.60% ld
30014 sysadmin  -6    0  832K 1556K sleep     bqwait    0:10 15.23% man

Later when I suspect ld finished more started to run and got stuck also,
probably when ld started up again.

  PID USERNAME PRI NICE  SIZE   RES STATE     WAIT      TIME    CPU COMMAND
18030 root      59    0   46M   47M run       -        23:02 54.54% ld
68435 sysadmin  58    0  257M  182M run       -         0:57 42.72% more
30014 sysadmin  10    0  832K    0K idle      wait      4:14  0.00% man

Both man and more seem to be using cpu cycles even though they are stuck.
Could ld be trying to do something with the console?


-----Original Message-----
From: owner-po...@openbsd.org <owner-po...@openbsd.org> On Behalf Of Mark
Kettenis
Sent: May 2, 2018 3:10 AM
To: s_g...@telus.net
Cc: po...@openbsd.org; arm@openbsd.org
Subject: Re: gtk libool slow on arm

> From: <s_g...@telus.net>
> Date: Tue, 1 May 2018 16:30:28 -0700
> 
> Why is the gtk libtool so slow on arm? A typical command such as:

It's not libtool, but ld, the link editor that is taking its time.

> libtool: link: cc -o .libs/testentrycompletion -pthread -O2 -pipe -g 
> -Wall -Wl,-rpath-link -Wl,/usr/X11R6/lib -Wl,-rpath-link 
> -Wl,/usr/X11R6/lib testentrycompletion.o -L.libs -lgtk-3 -lgdk-3 
> -lpangocairo-1.0 -lpango-1.0
> -lgobject-2.0 -lglib-2.0 -liconv -lpcre -lintl -lffi -lc++abi 
> -lgthread-2.0 -lfribidi -lm -lcairo -lpthread -lpixman-1 -lfontconfig 
> -lfreetype -lz -lexpat -lpng -lxcb-shm -lxcb -lxcb-render -lXrender 
> -lX11 -lXext
> -lpangoft2-1.0 -lharfbuzz -lgraphite2 -lgdk_pixbuf-2.0 -lgmodule-2.0
> -lgio-2.0 -lcairo-gobject -lXinerama -lXi -lXrandr -lXcursor -lXfixes 
> -lXcomposite -lXdamage -lepoxy -latk-1.0 -latk-bridge-2.0 -ldbus-1 
> -latspi -Wl,-rpath-link,/usr/local/lib,-rpath-link,/usr/X11R6/lib

That is linking in quite a number of libraries, some of which are fairly
sizeable.

> takes from 15 to 20 minutes on arm.  It is all cpu time, not i/o:

The binutils linker is quite crappy.  The LLVM linker is better.

> load averages:  2.03,  2.02,  2.00                 op1bsdsnap.graf.lan
> 16:26:21
> 
> 78 processes: 1 running, 76 idle, 1 on processor               up 4 days,
> 7:42
> 
> CPU states: 99.6% user,  0.0% nice,  0.4% system,  0.0% interrupt,  
> 0.0% idle
> 
> Memory: Real: 59M/234M act/tot Free: 259M Cache: 98M Swap: 11M/516M
> 
>  
> 
>   PID USERNAME PRI NICE  SIZE   RES STATE     WAIT      TIME    CPU
COMMAND
> 
> 12051 root      64    0 7680K 8532K run       -         6:44 99.12% ld
> 
> 27209 sysadmin   2    0  972K  984K idle      select    0:49  0.00% sshd
> 
> 65728 _pflogd    4    0  716K  172K sleep     bpf       0:29  0.00% pflogd
> 
> I set up an i386 virtual system with one cpu at 3 GHz and the whole 
> gtk build including all the dependencies took a few hours.  My gtk 
> build on an arm orangepi with a 1.2GHz cpu has been running for over 
> 48 hours, all due to libtool.  A cc compile finishes in seconds.

The orangepi probably runs at a lower speed since DVFS isn't implemented
yet.  And the Cortex-A7 simply isn't a very powerful CPU as it is completely
in-order.  Memory bandwidth on the orangepi is probably limited as well.


Reply via email to