bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-08 Thread Ludovic Courtès
Hi,

Luis Felipe  skribis:

> Compared to grafting, the last step "construyendo perfil con X paquetes..." 
> ("building profile with X packages..."), just stays there without change for 
> several minutes, so it actually seems slower to me. Initially, I thought that 
> guix had frozen.
>
> Also, even though, the "building profile" step has a throbber (| / - \) to 
> indicate that something is being done, it frequently stops in one of the 
> frames of the sequence and stays there until the end.

Interesting, so we should profile that step and see what can be done.  I
suspect it’s I/O-bound, but maybe we can at least improve feedback.

Thanks,
Ludo’.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-06 Thread Luis Felipe via Bug reports for GNU Guix
‐‐‐ Original Message ‐‐‐
On Friday, November 6, 2020 9:10 AM, Ludovic Courtès  wrote:

> Hi,
>
> Luis Felipe luis.felipe...@protonmail.com skribis:
>
> > ‐‐‐ Original Message ‐‐‐
> > On Tuesday, November 3, 2020 11:32 PM, zimoun zimon.touto...@gmail.com 
> > wrote:
> >
> > > Hi,
> > >
> > > > https://git.savannah.gnu.org/cgit/guix.git/commit/?id=76ea70bd70aeb76570445c11cea2f98139192b54
> > >
> > > Clever workaround! What are now the performances on previous examples
> > > (same profiles and same packages)?
> >
> > In my case there seem to be no improvement (using Guix 
> > 5e7cf66fb35780f930ad0bc5fe21ac330df4411d).
>
> Please note that the change above addresses only one specific source of
> slowness, the ‘xdg-mime-database’ hook, and only in specific cases.
>
> It’s good to look at the overall timing of ‘guix install’, because
> that’s what matters in the end, but as we work on optimizing it, we have
> to look at specific aspects of it.
>
> > $ time guix package -i perl --max-jobs=1


Yeah, sorry I was more focused on the general issue (#44053), but I understand.


> [...]
>
> > injertando 12 paquetes en 
> > /gnu/store/anknpdyhmfirw3rz2k9zm9kiyak8yy1s-cups-filters-1.27.4.drv ...
> > construyendo la base de datos MIME XDG...
> > injertando 3 paquetes en 
> > /gnu/store/xgny7xbl635g8na8x03x4cdr7abiphiw-cups-2.3.3.drv ...
> > injertando 20 paquetes en 
> > /gnu/store/yhjl68x7kcjbv40v823x4hl8rvv8l50b-gtk+-2.24.32.drv ...
> > injertando 21 paquetes en 
> > /gnu/store/kq37fnw8335f1hqc3j4hhqqcdnhl371p-gtk+-3.24.20.drv ...
> > creando la caché de temas de iconos de GTK+...
> > construyendo los ficheros de caché para los métodos de entrada de GTK+...
> > construyendo perfil con 86 paquetes...
> > real 8m38,121s
> > user 0m2,742s
> > sys 0m0,338s
>
> Here it’s likely that grafting is what’s taking the most time on a
> spinning disk.

It does take some time, but since I can see the output change from grafting to 
grafting, I at least can tell guix is doing something, so I just let it be.

Compared to grafting, the last step "construyendo perfil con X paquetes..." 
("building profile with X packages..."), just stays there without change for 
several minutes, so it actually seems slower to me. Initially, I thought that 
guix had frozen.

Also, even though, the "building profile" step has a throbber (| / - \) to 
indicate that something is being done, it frequently stops in one of the frames 
of the sequence and stays there until the end.


> We should hack (guix status) so it can optionally prefix each event with
> a timestamp.
>
> As far as ‘xdg-mime-database’ is concerned, it should be down to 0s,
> unless your profile contains one of the packages I cited (libreoffice,
> gcr, hugin, etc.).

Yes, I have Libreoffice installed.







bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-06 Thread zimoun
Hi,

On Thu, 05 Nov 2020 at 17:59, Luis Felipe  wrote:

Therefore, it is nice improvement! :-)

> real  0m56,245s
> user  0m4,324s
> sys   0m0,218s

> real  0m43,272s
> user  0m4,214s
> sys   0m0,200s

Because, I bet that most of the time is spent in the “time-machine”
part.  I mean, compare with:

 time guix time-machine --commit=$new -- help


All the best,
simon





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-06 Thread Ludovic Courtès
Hello,

zimoun  skribis:

>> So it would seem we cannot simply used the pre-built database from
>> ‘shared-mime-info’ and merge it with that of the other packages, at
>> least not without changing ‘update-mime-database’ or re-implementing
>> parts of it on our side.
>
> ’shared-mime-info’ is simply a package, right?  So what does it means:
> «Find a way to avoid reprocessing 'shared-mime-info'» in:
>
>  ;; the database.  TODO: Find a way to avoid reprocessing
>  ;; 'shared-mime-info', which is the most expensive one.
> [...]
>  (invoke #+(file-append shared-mime-info
> "/bin/update-mime-database")
>  destdir)))

‘shared-mime-info’ contains ‘share/mime/freedesktop.org.xml’, which is
by far where ‘update-mime-database’ spends most of its time.

But it’s wasteful because ‘shared-mime-info’ already contains the result
of running ‘update-mime-database’ on itself.

HTH!

Ludo’.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-06 Thread Ludovic Courtès
Hi,

Luis Felipe  skribis:

> ‐‐‐ Original Message ‐‐‐
> On Tuesday, November 3, 2020 11:32 PM, zimoun  
> wrote:
>
>> Hi,
>>
>> > https://git.savannah.gnu.org/cgit/guix.git/commit/?id=76ea70bd70aeb76570445c11cea2f98139192b54
>>
>> Clever workaround! What are now the performances on previous examples
>> (same profiles and same packages)?
>
> In my case there seem to be no improvement (using Guix 
> 5e7cf66fb35780f930ad0bc5fe21ac330df4411d).

Please note that the change above addresses only one specific source of
slowness, the ‘xdg-mime-database’ hook, and only in specific cases.

It’s good to look at the overall timing of ‘guix install’, because
that’s what matters in the end, but as we work on optimizing it, we have
to look at specific aspects of it.

> $ time guix package -i perl --max-jobs=1

[...]

> injertando 12 paquetes en 
> /gnu/store/anknpdyhmfirw3rz2k9zm9kiyak8yy1s-cups-filters-1.27.4.drv ...
> construyendo la base de datos MIME XDG...
> injertando 3 paquetes en 
> /gnu/store/xgny7xbl635g8na8x03x4cdr7abiphiw-cups-2.3.3.drv ...
> injertando 20 paquetes en 
> /gnu/store/yhjl68x7kcjbv40v823x4hl8rvv8l50b-gtk+-2.24.32.drv ...
> injertando 21 paquetes en 
> /gnu/store/kq37fnw8335f1hqc3j4hhqqcdnhl371p-gtk+-3.24.20.drv ...
> creando la caché de temas de iconos de GTK+...
> construyendo los ficheros de caché para los métodos de entrada de GTK+...
> construyendo perfil con 86 paquetes...
>
>
> real  8m38,121s
> user  0m2,742s
> sys   0m0,338s

Here it’s likely that grafting is what’s taking the most time on a
spinning disk.

We should hack (guix status) so it can optionally prefix each event with
a timestamp.

As far as ‘xdg-mime-database’ is concerned, it should be down to 0s,
unless your profile contains one of the packages I cited (libreoffice,
gcr, hugin, etc.).

Thanks,
Ludo’.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-05 Thread Luis Felipe via Bug reports for GNU Guix
‐‐‐ Original Message ‐‐‐
On Thursday, November 5, 2020 4:10 PM, zimoun  wrote:

> Hi,
>
> On Thu, 05 Nov 2020 at 14:47, Luis Felipe luis.felipe...@protonmail.com wrote:
>
> > > Clever workaround! What are now the performances on previous examples
> > > (same profiles and same packages)?
> >
> > In my case there seem to be no improvement (using Guix 
> > 5e7cf66fb35780f930ad0bc5fe21ac330df4411d).
> > $ time guix package -i perl --max-jobs=1
>
> [...]
>
> > real 8m38,121s
> > user 0m2,742s
> > sys 0m0,338s
>
> Thanks. But it is hard to conclude because the previous timing is
> missing.

I don't understand, I posted my original timing in 
https://issues.guix.gnu.org/44053#1 .



> The right experiment should be:
>
> --8<---cut here---start->8---
> old=c73496f433044a76003b33c3855bb35ecd0df87f
> new=5e7cf66fb35780f930ad0bc5fe21ac330df4411d
> guix time-machine --commit=$old -- help
> guix time-machine --commit=$new -- help
>
> drv=$(guix gc -R $(guix gc --derivers $(readlink -f ~/.guix-profile)) |grep 
> xdg-mime-database.drv)
>
> guix package -I |wc -l
> time guix time-machine --commit=$old -- build --check $drv
> time guix time-machine --commit=$new -- build --check $drv
> --8<---cut here---end--->8---


I get this:

yo@gnu: ~❯ guix package -I |wc -l
85

yo@gnu: ~❯ time guix time-machine --commit=$old -- build --check $drv
Actualizando el canal 'guix' del repositorio Git en 
'https://git.savannah.gnu.org/git/guix.git'...
Actualizando el canal 'luflac-x' del repositorio Git en 
'g...@gitlab.com:luis-felipe/guix-channel-x.git'...
Se construirá la siguiente extensión del perfil:
   /gnu/store/8hswzn212w7wqlr7cgsvq5v7zjh62chc-xdg-mime-database.drv
construyendo la base de datos MIME XDG...
/gnu/store/8hswzn212w7wqlr7cgsvq5v7zjh62chc-xdg-mime-database.drv construido 
satisfactoriamente
/gnu/store/i4qslq2517pwkwb5dyivrg8idsjd8n11-xdg-mime-database

real0m56,245s
user0m4,324s
sys 0m0,218s


yo@gnu: ~❯ time guix time-machine --commit=$new -- build --check $drv
Actualizando el canal 'guix' del repositorio Git en 
'https://git.savannah.gnu.org/git/guix.git'...
Actualizando el canal 'luflac-x' del repositorio Git en 
'g...@gitlab.com:luis-felipe/guix-channel-x.git'...
Se construirá la siguiente extensión del perfil:
   /gnu/store/8hswzn212w7wqlr7cgsvq5v7zjh62chc-xdg-mime-database.drv
construyendo la base de datos MIME XDG...
/gnu/store/8hswzn212w7wqlr7cgsvq5v7zjh62chc-xdg-mime-database.drv construido 
satisfactoriamente
/gnu/store/i4qslq2517pwkwb5dyivrg8idsjd8n11-xdg-mime-database

real0m43,272s
user0m4,214s
sys 0m0,200s





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-05 Thread zimoun
Hi,

On Thu, 05 Nov 2020 at 14:47, Luis Felipe  wrote:

>> Clever workaround! What are now the performances on previous examples
>> (same profiles and same packages)?
>
> In my case there seem to be no improvement (using Guix 
> 5e7cf66fb35780f930ad0bc5fe21ac330df4411d).
>
>
> $ time guix package -i perl --max-jobs=1

[...]

> real  8m38,121s
> user  0m2,742s
> sys   0m0,338s

Thanks.  But it is hard to conclude because the previous timing is
missing.  The right experiment should be:

--8<---cut here---start->8---
old=c73496f433044a76003b33c3855bb35ecd0df87f
new=5e7cf66fb35780f930ad0bc5fe21ac330df4411d
guix time-machine --commit=$old -- help
guix time-machine --commit=$new -- help

drv=$(guix gc -R $(guix gc --derivers $(readlink -f ~/.guix-profile)) |grep 
xdg-mime-database.drv)

guix package -I |wc -l
time guix time-machine --commit=$old -- build --check $drv
time guix time-machine --commit=$new -- build --check $drv
--8<---cut here---end--->8---


And personally, I get:

18

Updating channel 'guix' from Git repository at 
'https://git.savannah.gnu.org/git/guix.git'...
The following profile hook will be built:
   /gnu/store/2jlwri28aycsayql85rfphrks721ny1k-xdg-mime-database.drv
building XDG MIME database...
successfully built 
/gnu/store/2jlwri28aycsayql85rfphrks721ny1k-xdg-mime-database.drv
/gnu/store/hrcj1h0hl9f6hm1akh682zj1mhpwbx4c-xdg-mime-database

real0m8.063s
user0m6.226s
sys 0m0.282s

Updating channel 'guix' from Git repository at 
'https://git.savannah.gnu.org/git/guix.git'...
The following profile hook will be built:
   /gnu/store/2jlwri28aycsayql85rfphrks721ny1k-xdg-mime-database.drv
building XDG MIME database...
successfully built 
/gnu/store/2jlwri28aycsayql85rfphrks721ny1k-xdg-mime-database.drv
/gnu/store/hrcj1h0hl9f6hm1akh682zj1mhpwbx4c-xdg-mime-database

real0m8.016s
user0m6.223s
sys 0m0.243s

Well, I have only 18 packages in my ~/.guix-profile.  That’s why the
difference is not visible and the “time-machine” is totally dominating
here.


All the best,
simon





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-05 Thread Luis Felipe via Bug reports for GNU Guix
‐‐‐ Original Message ‐‐‐
On Tuesday, November 3, 2020 11:32 PM, zimoun  wrote:

> Hi,
>
> > https://git.savannah.gnu.org/cgit/guix.git/commit/?id=76ea70bd70aeb76570445c11cea2f98139192b54
>
> Clever workaround! What are now the performances on previous examples
> (same profiles and same packages)?

In my case there seem to be no improvement (using Guix 
5e7cf66fb35780f930ad0bc5fe21ac330df4411d).


$ time guix package -i perl --max-jobs=1
Se instalará el siguiente paquete:
   perl 5.30.2

Se construirá la siguiente derivación:
   /gnu/store/48imlmfi2hjmp4ksyidvy99c31ahj44z-profile.drv

Se descargarán 0,6 MB
construyendo empaquetado de certificados de CA...
descargando de 
https://ci.guix.gnu.org/nar/lzip/j3f5hx6yvhlj3sapiipigkwg05b49nwn-freetype-2.10.4
 ...
 freetype-2.10.4  555KiB   707KiB/s 00:01 
[##] 100.0%

injertando 5 paquetes en 
/gnu/store/s4s7xzswar962p9w1nvf0hfcgmnxyfsh-at-spi2-core-2.34.0.drv ...
injertando 1 paquete en 
/gnu/store/80n340f7bnba0ivp00z10a32rz8g8wsx-fontconfig-2.13.1.drv ...
injertando 4 paquetes en 
/gnu/store/hm3a895l251mckzb9bhiglcwfb6xli5n-at-spi2-atk-2.34.1.drv ...
injertando 6 paquetes en 
/gnu/store/9vwl8s2h7rbfhvimsarzc1q4gnclwpk2-cairo-1.16.0.drv ...
injertando 6 paquetes en 
/gnu/store/k6gajkzfq4drpcrimbwxk1ls0h7z1nzw-cairo-1.16.0.drv ...
injertando 4 paquetes en 
/gnu/store/klq5sp427s80d0mhz3b5x48xpmhf3ila-gdk-pixbuf-2.40.0.drv ...
injertando 5 paquetes en 
/gnu/store/ijkpcwanfpj02i0rxk4ys0kfdpj6sz69-ghostscript-with-cups-9.52.drv ...
generando la caché de esquemas de GLib...
injertando 2 paquetes en 
/gnu/store/kg8ca3wz01ibhbm5wk707r44jjnrxdg1-harfbuzz-2.6.4.drv ...
construyendo el directorio de manuales Info...
injertando 4 paquetes en 
/gnu/store/97bgi57qs077pcqggvr7di0vhchlshk2-libxft-2.3.3.drv ...
construyendo la base de datos de páginas de manual...
injertando 1 paquete en 
/gnu/store/gb85hxzczf4m0crzwqpw2imxpr1d67nx-mkfontscale-1.2.1.drv ...
injertando 9 paquetes en 
/gnu/store/ddiqkw9r0p1lhvqmdlcyrzf8v900pm4r-pango-1.42.4.drv ...
injertando 1 paquete en 
/gnu/store/xd0ca96gvh3vn9bp3bcmczczcxm0bynd-mkfontdir-1.0.7.drv ...
injertando 11 paquetes en 
/gnu/store/s53s5qx304b90l0dp734lqi42whwd0vd-librsvg-2.40.21.drv ...
construyendo el directorio de tipografías...
injertando 5 paquetes en 
/gnu/store/qg628jlnjmiyv964c0i4s7bbkwy32c6c-gdk-pixbuf+svg-2.40.0.drv ...
injertando 8 paquetes en 
/gnu/store/1mj8cjf43nqd9r5151lqrf1sdd1sjg16-pango-1.44.7.drv ...
injertando 8 paquetes en 
/gnu/store/d42vnhn9grcsyiibdgkiryqb7rxhb89j-poppler-0.86.1.drv ...
construyendo la caché de ficheros desktop XDG...
injertando 12 paquetes en 
/gnu/store/anknpdyhmfirw3rz2k9zm9kiyak8yy1s-cups-filters-1.27.4.drv ...
construyendo la base de datos MIME XDG...
injertando 3 paquetes en 
/gnu/store/xgny7xbl635g8na8x03x4cdr7abiphiw-cups-2.3.3.drv ...
injertando 20 paquetes en 
/gnu/store/yhjl68x7kcjbv40v823x4hl8rvv8l50b-gtk+-2.24.32.drv ...
injertando 21 paquetes en 
/gnu/store/kq37fnw8335f1hqc3j4hhqqcdnhl371p-gtk+-3.24.20.drv ...
creando la caché de temas de iconos de GTK+...
construyendo los ficheros de caché para los métodos de entrada de GTK+...
construyendo perfil con 86 paquetes...


real8m38,121s
user0m2,742s
sys 0m0,338s





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-03 Thread zimoun
Hi,

>   
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=76ea70bd70aeb76570445c11cea2f98139192b54

Clever workaround!  What are now the performances on previous examples
(same profiles and same packages)?


> Unfortunately, AIUI,
>
>   update-mime-database(X ∪ Y) ≠ update-mime-database(X) ∪ 
> update-mime-database(Y)

Hum?  Interesting… well weird!  If it is not a “morphism” then it is not
really an updater.  Anyway.

I am curious about the comparison:

   time(update-mime-database(X ∪ Y))
vs
   time(update-mime-database(X)) + time(update-mime-database(Y))
vs
   time(update-mime-database(X ∩ Y))


> So it would seem we cannot simply used the pre-built database from
> ‘shared-mime-info’ and merge it with that of the other packages, at
> least not without changing ‘update-mime-database’ or re-implementing
> parts of it on our side.

’shared-mime-info’ is simply a package, right?  So what does it means:
«Find a way to avoid reprocessing 'shared-mime-info'» in:

--8<---cut here---start->8---
 ;; the database.  TODO: Find a way to avoid reprocessing
 ;; 'shared-mime-info', which is the most expensive one.
[...]
 (invoke #+(file-append shared-mime-info
"/bin/update-mime-database")
 destdir)))
--8<---cut here---end--->8---

?  Well, I miss why and how ’shared-mime-info’ could be the culprit here
or what could be improved with “shared-mime-info”?  Maybe replace the
“lazy reference” by a strict one if it makes sense.


All the best,
simon





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-02 Thread Ludovic Courtès
Ludovic Courtès  skribis:

> Ludovic Courtès  skribis:
>
>> Apart from LibreOffice, I found that ‘share/mime/packages’ is provided
>> by at least: hugin, gcr, fontforge.  Most GUI packages don’t have it.
>> So in practice, we’re often rebuilding the exact same database.
>
> On closer inspection, the time-consuming bit is processing
> ‘share/mime/packages/freedesktop.org.xml’ (from ‘shared-mime-info’),
> which is quite large and leads to the creation of hundreds of file.  We
> end up re-processing it every time.  This is particularly wasteful
> because the ‘shared-mime-info’ package already contains the result of
> applying ‘update-mime-database’ to itself.

Based on these observations, I added a fast path to the
‘xdg-mime-database’ hook:

  
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=76ea70bd70aeb76570445c11cea2f98139192b54

It’s down to 0s in the common case where the profile doesn’t contain any
packages providing ‘share/mime/packages’.

Ludo’.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-02 Thread Ludovic Courtès
Ludovic Courtès  skribis:

> Apart from LibreOffice, I found that ‘share/mime/packages’ is provided
> by at least: hugin, gcr, fontforge.  Most GUI packages don’t have it.
> So in practice, we’re often rebuilding the exact same database.

On closer inspection, the time-consuming bit is processing
‘share/mime/packages/freedesktop.org.xml’ (from ‘shared-mime-info’),
which is quite large and leads to the creation of hundreds of file.  We
end up re-processing it every time.  This is particularly wasteful
because the ‘shared-mime-info’ package already contains the result of
applying ‘update-mime-database’ to itself.

Unfortunately, AIUI,

  update-mime-database(X ∪ Y) ≠ update-mime-database(X) ∪ 
update-mime-database(Y)

(For example, the files
‘share/mime/{globs,magic,XMLnamespaces,subclasses,aliases,types,generic-icons,icons,treemagic,mime.cache}’
concatenate info from X and Y.)

So it would seem we cannot simply used the pre-built database from
‘shared-mime-info’ and merge it with that of the other packages, at
least not without changing ‘update-mime-database’ or re-implementing
parts of it on our side.

Ludo’.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-11-02 Thread Ludovic Courtès
Hi,

Joshua Branson  skribis:

> The "XDG MIME database" takes a while.
>
> #+BEGIN_SRC sh :results output :exports both
> time guix build --check $(guix gc -R $(guix gc --derivers $(readlink -f 
> ~/.guix-profile)) |grep xdg-mime-database.drv)
> #+END_SRC
>
>
> #+RESULTS:
> : The following profile hook will be built:
> :/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
> : building XDG MIME database...
> : successfully built 
> /gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
> : successfully built 
> /gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
> : /gnu/store/x8q8g9l0jhrpmjjm3xsh3ib1z8l79cyx-xdg-mime-database
> :
> : real0m43.716s
> : user0m3.626s
> : sys 0m0.258s

I found that the MIME database is computed only over the subset of the
packages in your profile that provide ‘share/mime/packages’, plus
‘shared-mime-info’.

In my profile, only LibreOffice provides that directory, so the union is
made over these two directories and that’s what ‘update-mime-database’
works on.

Apart from LibreOffice, I found that ‘share/mime/packages’ is provided
by at least: hugin, gcr, fontforge.  Most GUI packages don’t have it.
So in practice, we’re often rebuilding the exact same database.

Here’s the time taken by ‘update-mime-database’ alone:

--8<---cut here---start->8---
ludo@ribbon ~$ mkdir -p /tmp/mime/share/mime/packages
ludo@ribbon ~$ cd /tmp/mime/share/mime/packages
ludo@ribbon /tmp/mime/share/mime/packages$ for i in $(guix build libreoffice ^C
ludo@ribbon /tmp/mime/share/mime/packages$ for i in 
~/.guix-profile/share/mime/packages/* ; do ln -s $i ; done
ludo@ribbon /tmp/mime/share/mime/packages$ ls -l
totalo 8
lrwxrwxrwx 1 ludo users 64 Nov  2 11:46 freedesktop.org.xml -> 
/home/ludo/.guix-profile/share/mime/packages/freedesktop.org.xml
lrwxrwxrwx 1 ludo users 60 Nov  2 11:46 libreoffice.xml -> 
/home/ludo/.guix-profile/share/mime/packages/libreoffice.xml
ludo@ribbon /tmp/mime/share/mime/packages$ cd /tmp/mime/
ludo@ribbon /tmp/mime$ time update-mime-database -V /tmp/mime/share/mime
Updating MIME database in /tmp/mime/share/mime...

Parsing source file /tmp/mime/share/mime/packages/freedesktop.org.xml...
Parsing source file /tmp/mime/share/mime/packages/libreoffice.xml...
Wrote 1124 strings at 2c - 6310
Wrote aliases at 6310 - 6be4
Wrote parents at 6be4 - 8468
Wrote literal globs at 8468 - 855c
Wrote suffix globs at 855c - 13514
Wrote full globs at 13514 - 13554
Wrote magic at 13554 - 2065c
Wrote namespace list at 2065c - 20798
Wrote icons list at 20798 - 2079c
Wrote generic icons list at 2079c - 213b8
Wrote types list at 213b8 - 22020

Note that '/tmp/mime/share' is not in the search path
set by the XDG_DATA_HOME and XDG_DATA_DIRS
environment variables, so applications may not
be able to find it until you set them. The
directories currently searched are:

- /home/ludo/.local/share
- /home/ludo/.guix-profile/share
- /run/current-system/profile/share
- /home/ludo/.guix-profile/share
- /run/current-system/profile/share


real0m2.166s
user0m0.278s
sys 0m0.056s
--8<---cut here---end--->8---

To be compared with:

--8<---cut here---start->8---
$ drv="$(guix gc -R $(guix gc --derivers $(readlink -f ~/.guix-profile)) |grep 
xdg-mime-database.drv)"
$ time guix build --check $drv
The following profile hook will be built:
   /gnu/store/jrmwsxpz3wmq37zx29lvb0r9nvcmdviz-xdg-mime-database.drv
building XDG MIME database...
successfully built 
/gnu/store/jrmwsxpz3wmq37zx29lvb0r9nvcmdviz-xdg-mime-database.drv
/gnu/store/npvj2sr9kxx48znh7zc8zmzwzs6brc90-xdg-mime-database

real0m3.670s
user0m1.428s
sys 0m0.029s
--8<---cut here---end--->8---

Thus, the build time itself is entirely taken by ‘update-mime-database’
(the 1.4s above is “overhead” in ‘guix build’ it would seem).

Ludo’.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-10-28 Thread Luis Felipe via Bug reports for GNU Guix
‐‐‐ Original Message ‐‐‐
On Tuesday, October 27, 2020 11:14 PM, Joshua Branson  
wrote:

[...]

>
> #+BEGIN_SRC sh :results output :exports both
> time guix build --check $(guix gc -R $(guix gc --derivers $(readlink -f 
> ~/.guix-profile)) |grep xdg-mime-database.drv)
> #+END_SRC


I haven't run this command because I don't know what it does (how will it 
affect my profile?), but if you think the results from this command would be 
more useful than what I posted to issue #44053, please let me know and I'll run 
it.





bug#44053: ‘xdg-mime-database’ profile hook is slow

2020-10-28 Thread Joshua Branson via Bug reports for GNU Guix



I am just posting my performance numbers.  Hopefully you all find it helpful.
I am running Guix System on a Lenovo Thinkpad T400 with 8GB on a hard drive.

#+BEGIN_SRC sh :results output :exports both
guix describe
#+END_SRC

#+RESULTS:
#+begin_example
Generation 49   Oct 20 2020 01:15:33(current)
  my-personal-packages 547d900
repository URL: https://notabug.org/jbranso/guix-packages.git
branch: master
commit: 547d900c25d2bb9490946162e0fcb315d6bace68
  guix 93c2518
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 93c251818dcd2bf5f60f42e595504293ee83371a

GUIX_PACKAGE_PATH="/home/joshua/prog/gnu/guix/guix-packages/"
#+end_example

The "XDG MIME database" takes a while.

#+BEGIN_SRC sh :results output :exports both
time guix build --check $(guix gc -R $(guix gc --derivers $(readlink -f 
~/.guix-profile)) |grep xdg-mime-database.drv)
#+END_SRC

#+RESULTS:
: The following profile hook will be built:
:/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
: building XDG MIME database...
: successfully built 
/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
: successfully built 
/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
: /gnu/store/x8q8g9l0jhrpmjjm3xsh3ib1z8l79cyx-xdg-mime-database
:
: real  0m43.716s
: user  0m3.626s
: sys   0m0.258s

Cold cache:

#+BEGIN_SRC sh :results output :exports both
drv="$(guix gc -R $(guix gc --derivers $(readlink -f ~/.guix-profile)) |grep 
xdg-mime-database.drv)"
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

time guix build --check "$drv"
#+END_SRC

#+RESULTS:
: The following profile hook will be built:
:/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
: building XDG MIME database...
: successfully built 
/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
: successfully built 
/gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
: /gnu/store/x8q8g9l0jhrpmjjm3xsh3ib1z8l79cyx-xdg-mime-database
:
: real  1m29.606s
: user  0m1.401s
: sys   0m0.238s

I have 64 packages in my profile.

#+BEGIN_SRC sh :results output :exports both
guix package -I | wc --lines
#+END_SRC

#+RESULTS:
: 64

If you want to see all packages:

#+BEGIN_SRC sh :results output :exports both
guix package -I
#+END_SRC

#+RESULTS:
#+begin_example
guile-colorized 0.1 out 
/gnu/store/5h0jfssgyx49cq82wrmw57an7ngb7kkz-guile-colorized-0.1
font-hack   3.003   out 
/gnu/store/52r8anazd4rnkq9m3vxk700jga5h0i74-font-hack-3.003
font-dejavu 2.37out 
/gnu/store/7y3lvk3xf4im8n44337mc6y0ccysvfia-font-dejavu-2.37
font-adobe-source-code-pro  2.030R-ro-1.050R-it out 
/gnu/store/l5m74158njcan3p784gqhkir6zyk0bcp-font-adobe-source-code-pro-2.030R-ro-1.050R-it
sicp20170703-1.225c172  out 
/gnu/store/x2safq6fvcbhp2rljny89qiq74y1xd13-sicp-20170703-1.225c172
unzip   6.0 out /gnu/store/1zx8knb7h79q6cr4kwhbz6z6v609309w-unzip-6.0
font-google-noto20171025out 
/gnu/store/g2szydnbvs7qqy2nf7qylba0rapajmd8-font-google-noto-20171025
font-awesome4.7.0   out 
/gnu/store/gknn01i1nr80apmcx42w36cqcz3zzri2-font-awesome-4.7.0
texinfo 6.7 out /gnu/store/w8k9hcigvhzrlrblv8lgqj77sm3833rs-texinfo-6.7
gcc-toolchain   10.2.0  out 
/gnu/store/pknm43xsza6nlc7bn27djip8fis92akd-gcc-toolchain-10.2.0
recutils1.8 out 
/gnu/store/qlx179h9mfdv4zywx2ias2jmkygvs834-recutils-1.8
guile-readline  3.0.2   out 
/gnu/store/va6l1ivclww22fi38w5h99pb4ndn99hg-guile-readline-3.0.2
gtypist 2.9.5   out 
/gnu/store/03wd707lyz49f2r14cm9ybyzh7vfvi0j-gtypist-2.9.5
scsh0.0.0-1.1144324 out 
/gnu/store/57frd08q6gyd7ysq3aqwlxxmify3w53h-scsh-0.0.0-1.1144324
make4.3 out /gnu/store/4k33n2nhsnnaxk2ip75gj7xiqdjns5hq-make-4.3
isync   1.3.3   out /gnu/store/745qmx9mmnwq0j3zrd50qcdd2bgv5clz-isync-1.3.3
jmacs   27.1out /gnu/store/0hqdddkvhi2acxjdssdi5as3wj6cgvnz-jmacs-27.1
glibc-locales   2.31out 
/gnu/store/x9c4dk4zc9mi5j9hm3lq1q539kkdhkln-glibc-locales-2.31
guile   3.0.4   out /gnu/store/ah16zr8mmfkqy23rr7jy5a842ca1q9h1-guile-3.0.4
guile-json  4.3.2   out 
/gnu/store/12y1s0p3585ydf336gq85kjh5217pnzp-guile-json-4.3.2
guile-syntax-highlight  0.1 out 
/gnu/store/dwjqscckpypqfq38hc97x5ipc9fplpp9-guile-syntax-highlight-0.1
haunt   0.2.4   out /gnu/store/ccvqa9a6yclgkpi9izhpgf1vgjaghqvr-haunt-0.2.4
gnutls  3.6.14  out 
/gnu/store/0f6agk6xk8rcz99907d39nd1vzmc4abq-gnutls-3.6.14
wget1.20.3  out /gnu/store/d7b16jqrgb1jz65hl7vnz261dbxmjh3s-wget-1.20.3
gnupg   2.2.23  out /gnu/store/89cjqnar4aacg58wl6cm1h41rym9mv4l-gnupg-2.2.23
sassc   3.6.1   out /gnu/store/6pqn2i0r12ypss13mdvsypskkcpaagji-sassc-3.6.1
qterminal   0.15.0  out 
/gnu/store/y7qrfa78y785xfajb3gvvhwcm2d02l81-qterminal-0.15.0
dmenu   5.0 out /gnu/store/393frjc5xjaab6nvp3wxpajb1rc6gynr-dmenu-5.0
openssh 8.4p1   out