Suivant: , Précédent: , Monter: Utilitaires   [Table des matières][Index]


9.9 Invoquer guix size

La commande guix size aide à dresser un profil de l’utilisation de l’espace disque par les paquets. Il est facile de négliger l’impact d’une dépendance supplémentaire ajoutée à un paquet, ou l’impact de l’utilisation d’une sortie unique pour un paquet qui pourrait être facilement séparé (voir Des paquets avec plusieurs résultats). Ce sont ces problèmes que guix size peut typiquement mettre en valeur.

On peut passer un ou plusieurs spécifications de paquets à la commande, comme gcc@4.8 ou guile:debug, ou un nom de fichier dans le dépôt. Regardez cet exemple :

$ guix size coreutils
store item                               total    self
/gnu/store/…-gcc-5.5.0-lib           60.4    30.1  38.1%
/gnu/store/…-glibc-2.27              30.3    28.8  36.6%
/gnu/store/…-coreutils-8.28          78.9    15.0  19.0%
/gnu/store/…-gmp-6.1.2               63.1     2.7   3.4%
/gnu/store/…-bash-static-4.4.12       1.5     1.5   1.9%
/gnu/store/…-acl-2.2.52              61.1     0.4   0.5%
/gnu/store/…-attr-2.4.47             60.6     0.2   0.3%
/gnu/store/…-libcap-2.25             60.5     0.2   0.2%
total: 78.9 MiB

Les éléments du dépôt listés ici constituent la clôture transitive de Coreutils — c.-à-d. Coreutils et toutes ses dépendances, récursivement — comme ce qui serait renvoyé par :

$ guix gc -R /gnu/store/…-coreutils-8.23

Ici, la sortie possède trois colonnes à côté de chaque élément du dépôt. La première colonne, nommée « total », montre la taille en mébioctet (Mio) de la clôture de l’élément du dépôt — c’est-à-dire sa propre taille plus la taille de ses dépendances. La colonne suivante, nommée « lui-même », montre la taille de l’élément lui-même. La dernière colonne montre le ration de la taille de l’élément lui-même par rapport à celle de tous les éléments montrés.

Dans cet exemple, on voit que la clôture de Coreutils pèse 79 Mio, dont la plupart est dû à la libc et aux bibliothèques à l’exécution de GCC (ce n’est pas un problème en soit que la libc et les bibliothèques de GCC représentent une grande part de la clôture parce qu’elles sont toujours disponibles sur le système de toute façon).

Comme la commande accepte également les noms de fichiers de dépôt, il est facile d’évaluer la taille d’un résultat de construction :

guix size $(guix system build config.scm)

Lorsque les paquets passés à guix size sont disponibles dans le dépôt26, guix size demande au démon de déterminer ses dépendances, et mesure sa taille dans le dépôt, comme avec du -ms --apparent-size (voir du invocation dans GNU Coreutils).

Lorsque les paquets donnés ne sont pas dans le dépôt, guix size rapporte les informations en se basant sur les substituts disponibles (voir Substituts). Cela permet de profiler l’utilisation du disque des éléments du dépôt même s’ils ne sont pas sur le disque, mais disponibles à distance.

Vous pouvez aussi spécifier plusieurs noms de paquets :

$ guix size coreutils grep sed bash
store item                               total    self
/gnu/store/…-coreutils-8.24          77.8    13.8  13.4%
/gnu/store/…-grep-2.22               73.1     0.8   0.8%
/gnu/store/…-bash-4.3.42             72.3     4.7   4.6%
/gnu/store/…-readline-6.3            67.6     1.2   1.2%
…
total: 102.3 MiB

Dans cet exemple on voit que la combinaison des quatre paquets prend 102.3 Mio en tout, ce qui est bien moins que la somme des clôtures puisqu’ils ont beaucoup de dépendances en commun.

En regardant le profil renvoyé par guix size, vous pouvez vous demander pourquoi un paquet donné apparaît dans le profil. Pour le comprendre, vous pouvez utiliser guix graph --path -t references pour afficher le chemin le plus court entre les deux paquets (voir Invoque guix graph).

Les options disponibles sont :

--substitute-urls=urls

Utilise les informations de substituts de urls. Voir the same option for guix build.

--sort=clef

Trie les lignes en fonction de la clef, l’une des options suivantes :

lui-même

la taille de chaque élément (par défaut) ;

closure

la taille totale de la clôture de l’élément.

--map-file=fichier

Écrit un schéma de l’utilisation du disque au format PNG dans fichier.

Pour l’exemple au-dessus, le schéma ressemble à ceci :

schéma de l’utilisation du disque de
Coreutils produit par guix size

Cette option requiert l’installation de Guile-Charting et qu’il soit visible dans le chemin de recherche des modules Guile. Lorsque ce n’est pas le cas, guix size plante en essayant de le charger.

--system=système
-s système

Considère les paquets pour système — p. ex. x86_64-linux.

--load-path=répertoire
-L répertoire

Ajoute répertoire au début du chemin de recherche de module de paquets (voir Modules de paquets).

Cela permet à des utilisateurs de définir leur propres paquets et les rendre disponibles aux outils en ligne de commande.


Notes de bas de page

(26)

Plus précisément, guix size cherche les variantes non greffées des paquets donnés, tels qu’ils sont renvoyés par guix build paquet --no-graft. Voir Mises à jour de sécurité pour des informations sur les greffes


Suivant: Invoque guix graph, Précédent: Invoquer guix lint, Monter: Utilitaires   [Table des matières][Index]