Hi Martin,
apk is quite different compared to other package managers. A traditional 
package manager download a package, saves it to a local cache, verifies it and 
then extract it. That's at least 3 reads and 2 writes of the data. Apk does 
this on the fly, so 1 read and 1 write of the data. I believe that it's a so 
fundamental design choice that opkg would have it very hard to compete for 
speed. The speed advantage is even bigger when installing over network since 
the extraction and verification is done wile the network is waiting for data. 
That means that apk has usually installed the package when an ordinary package 
manager just has downloaded it and should start to verify and install it.

So there's no secret sauce or awesome optimizations, it's "just" an other 
architectural design.

With that said, there's still some low hanging fruit for apk, for example 
package generation (my patch is doing 2 reads and 2 writes of all data) and 
index generation (duplicate reads and one extraction too much) that could have 
significant speedup. But let's make it possible to use apk at all before 
starting to tune it.

More information:
https://www.youtube.com/watch?v=sIG2P9k6EjA


BR
Fredrik
________________________________________
From: Martin Jansa <martin.ja...@gmail.com>
Sent: Tuesday, June 30, 2020 11:54 PM
To: Fredrik Gustafsson
Cc: Ross Burton; OE-core; tools-cfpbuild-internal
Subject: Re: [OE-core] Add package managers as a plugin

On Tue, Jun 30, 2020 at 07:01:23PM +0000, Fredrik Gustafsson wrote:
> Hi Ross,
> those 5 seconds will increase to minutes for my use case and we build a lot
> hence I hope this will save us a lot of computer power and engineering time.
> For example I've sent numbers on building a bigger image 
> (core-image-sato-sdk-ptest)
> to Alex and Alex:
> out.apk.1: 1:13.35
> out.apk.2: 1:13.51
> out.apk.3: 1:13.23
> out.apk.4: 1:14.07
> out.apk.5: 1:13.00
> out.deb.1: 3:49.37
> out.deb.2: 3:50.77
> out.deb.3: 3:51.39
> out.deb.4: 3:53.40
> out.deb.5: 3:53.99
> out.ipk.1: 2:38.99
> out.ipk.2: 2:39.07
> out.ipk.3: 2:35.34
> out.ipk.4: 2:36.15
> out.ipk.5: 2:34.55
> out.rpm.1: 1:58.61
> out.rpm.2: 1:59.42
> out.rpm.3: 1:59.70
> out.rpm.4: 1:58.96
> out.rpm.5: 1:58.11
>
> Also consider that if we've a target without python with limited space, rpm 
> is out
> of the question. So the real comparison would be between ipk and apk. Let's
> say we can save 80 seconds in each build. Now multiply that with the number of
> builds, and we do a lot (I guess we might approach 100 000 builds/week in the
> next year). Then this will save 92.5 days build time each week.

This is impressive.

Have you tried to profile where opkg spends most of the time compared to
apk? It would be nice to know if there is something fundamentally
different in how they handle packages or if apk is just better
optimized.

Now with opkg better maintained (thanks Alejandro!) there might be some
relatively low hanging optimalizations which could be implemented there
as well (for people who didn't implement the rest to switch to apk yet
:)).

I know at LGE we have some patches (some related to performance as well) which
unfortunately weren't ever upstreamed :/, some are at:
https://github.com/webosose/meta-webosose/tree/master/meta-webos/recipes-devtools/opkg/opkg

Cheers,
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#140152): 
https://lists.openembedded.org/g/openembedded-core/message/140152
Mute This Topic: https://lists.openembedded.org/mt/75057633/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to