Fedora-Fr - Communauté francophone Fedora - Linux

Communauté francophone des utilisateurs de la distribution Linux Fedora.

  

Dernière news : Vous pouvez tester la Beta de Fedora 28 !

#1 26/11/2016 12:07:55

VINDICATORs
RédactWikix and the graphicatorix!
Rédacteur Wiki
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 16 693
Site Web

Optimisations diverses pour la création de RPM...

Bon ce n'est pas vraiment une demande d'aide pour la création, mais est ce que vous avez des conseils pour optimiser les réglages tant pour :
MOCK
RPM
autres?

Actuellement j'ai ces réglages pour mock :

#############################################################################
#
# plugin related. Below are the defaults. Change to suit your site
# policy. site-defaults.cfg is a good place to do this.
#
# NOTE: Some of the caching options can theoretically affect build
#  reproducability. Change with care.
#
# config_opts['plugin_conf']['package_state_enable'] = True
# config_opts['plugin_conf']['package_state_opts'] = {}
# config_opts['plugin_conf']['package_state_opts']['available_pkgs'] = False
# config_opts['plugin_conf']['package_state_opts']['installed_pkgs'] = True
config_opts['plugin_conf']['ccache_enable'] = True
# config_opts['plugin_conf']['ccache_opts'] = {}
config_opts['plugin_conf']['ccache_opts']['max_cache_size'] = '16G'
# config_opts['plugin_conf']['ccache_opts']['compress'] = None
# config_opts['plugin_conf']['ccache_opts']['dir'] = "%(cache_topdir)s/%(root)s/ccache/u%(chrootuid)s/"
# config_opts['plugin_conf']['yum_cache_enable'] = True
# config_opts['plugin_conf']['yum_cache_opts'] = {}
# config_opts['plugin_conf']['yum_cache_opts']['max_age_days'] = 30
# config_opts['plugin_conf']['yum_cache_opts']['max_metadata_age_days'] = 30
# config_opts['plugin_conf']['yum_cache_opts']['dir'] = "%(cache_topdir)s/%(root)s/%(package_manager)s_cache/"
# config_opts['plugin_conf']['yum_cache_opts']['target_dir'] "/var/cache/%(package_manager)s/"
# config_opts['plugin_conf']['yum_cache_opts']['online'] = True
# config_opts['plugin_conf']['root_cache_enable'] = True
# config_opts['plugin_conf']['root_cache_opts'] = {}
# config_opts['plugin_conf']['root_cache_opts']['age_check'] = True
# config_opts['plugin_conf']['root_cache_opts']['max_age_days'] = 15
# config_opts['plugin_conf']['root_cache_opts']['dir'] = "%(cache_topdir)s/%(root)s/root_cache/"
# config_opts['plugin_conf']['root_cache_opts']['compress_program'] = "pigz"
# config_opts['plugin_conf']['root_cache_opts']['extension'] = ".gz"
# config_opts['plugin_conf']['root_cache_opts']['exclude_dirs'] = ["./proc", "./sys", "./dev",
#                                                                  "./tmp/ccache", "./var/cache/yum" ]
#
# bind mount plugin is enabled by default but has no configured directories to
# mount
# config_opts['plugin_conf']['bind_mount_enable'] = True
# config_opts['plugin_conf']['bind_mount_opts']['dirs'].append(('/host/path', '/bind/mount/path/in/chroot/' ))
#
config_opts['plugin_conf']['tmpfs_enable'] = True
# config_opts['plugin_conf']['tmpfs_opts'] = {}
config_opts['plugin_conf']['tmpfs_opts']['required_ram_mb'] = 8128
config_opts['plugin_conf']['tmpfs_opts']['max_fs_size'] = '4096m'
# config_opts['plugin_conf']['tmpfs_opts']['mode'] = '0755'
# config_opts['plugin_conf']['tmpfs_opts']['keep_mounted'] = False
#
# config_opts['plugin_conf']['chroot_scan_enable'] = False
# config_opts['plugin_conf']['chroot_scan_opts'] = {
## Regexp of files which should be copied from buildroot to resultdir.
#    'regexes': [ "^[^k]?core(\.\d+)?", "\.log$",],
## If set to True files are copied only if build failed.
#    'only_failed': True,
#}
#
# lvm_root plugin is not enabled by default and is distributed in separate
# subpackage mock-lvm. If you want to use it, it's recommended to disable the
# root_cache plugin, otherwise you'd be caching twice.
# config_opts['plugin_conf']['lvm_root_enable'] = False
# config_opts['plugin_conf']['lvm_root_opts'] = {}
# You need to give it a volume group with sufficient space. It won't touch any
# of the existing logical volumes, so you can use the same volume group you use
# for other purposes. It requires a name of the VG (not device path).
# config_opts['plugin_conf']['lvm_root_opts']['volume_group'] = 'my_vg'
# You need to specify the size that will mock's thinpool occupy. For regular
# packages with small set of dependencies, 2G should suffice. For large packages
# such as libreoffice, you should set it to at least 5 GB otherwise you may run
# out of space and the build process will be blocked
config_opts['plugin_conf']['lvm_root_opts']['size'] = '8G'
# You can specify alternative pool metadata size, format is the same as size.
# Default value is determined by lvcreate based on size
# config_opts['plugin_conf']['lvm_root_opts']['poolmetadatasize'] = None
# When thin pool utilization is over 90% mock will refuse to continue.
# Because once it reach 100% utilization weird things will happens.
# config_opts['plugin_conf']['lvm_root_opts']['check_size'] = True

(voir celle sans # devant)

Cependant j'ai toujours la ram qui ce tourne les pouces, par exemple.

Y aurait il des choses que j'oublie? D'autres conseils pour créer des RPM que d'utiliser MOCK?

Actuellement je test l'empaquetage de LLVM et Clang 3.9 pour Fedora 25 (à voir si cela fonctionne sous F24), vu le peu d'impact que cela provoque (en dehors de la mise à jour de MESA, je n'ai pas vu de problèmes).

Mais bon cela prend du temps et bien que le CPU soit bien utilisé (98->100% sur 4 cœurs/4 threads), la ram ce tourne les pouces (bon +/-2go max sur 24Go, malgré les réglages ci-dessus) et ce serait bien d'optimiser cela non?

Après j'ai déjà augmenté la fréquence de la RAM (+/- 15/20% de perfs mémoire en plus), passant de 1866Mhz à 2200Mhz (bon elle devrait supporter plus, mais il ne faut pas non plus trop en vouloir). Cela à permis un gain non négligeable lors de l'empaquetage, mais le taux d'utilisation est toujours très bas.


Intel i7 4771 + MSI Z87-GD65 Gaming, 24Go de RAM DDR3 1866Mhz@2200Mhz Corsair Vengeance C9, ATI R9 290x 4Go GDDR5
Lepa800W 80+gold, SSD Samsung 850 EVO 250Go + 2x2To RAID1 WD black 64Mo + 1x2to WD black 64Mo + 1x4to WD Black 128Mo + 3To WD red

Hors ligne

#2 26/11/2016 20:17:19

remi
Crazy PHP packages monkey... !
Rédacteur Wiki
Lieu : Champagne...
Inscription : 16/10/2004
Messages : 5 531
Site Web

Re : Optimisations diverses pour la création de RPM...

Perso, (faut dire que j'ai optimisé mes confs avant que le plugin tmpfs existe), je balance tout dans tmpfs (et donc j'utilise pas le plugin lvm)

à l'époque, j'avais mis mes notes dans https://blog.remirepo.net/post/2011/01/ … figuration

aujourd'hui, j'ai une config qui ressemble à ça: https://github.com/remicollet/remirepo/ … /fc25x.cfg

Hors ligne

#3 26/11/2016 21:16:55

VINDICATORs
RédactWikix and the graphicatorix!
Rédacteur Wiki
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 16 693
Site Web

Re : Optimisations diverses pour la création de RPM...

Ok, je vais regarder cela de près.


Intel i7 4771 + MSI Z87-GD65 Gaming, 24Go de RAM DDR3 1866Mhz@2200Mhz Corsair Vengeance C9, ATI R9 290x 4Go GDDR5
Lepa800W 80+gold, SSD Samsung 850 EVO 250Go + 2x2To RAID1 WD black 64Mo + 1x2to WD black 64Mo + 1x4to WD Black 128Mo + 3To WD red

Hors ligne

#4 28/11/2016 21:04:55

VINDICATORs
RédactWikix and the graphicatorix!
Rédacteur Wiki
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 16 693
Site Web

Re : Optimisations diverses pour la création de RPM...

Bon en dehors du ccache et de tmpfs, j'ai retouché quelques options. Ayant un SSD il faudra voir si cela vaut le coup. Je referai un test plus poussé ce week end bien que j'avais prévu autre chose (me retrouvant à pied pour quelques jours, je peux pas faire grand chose sad).

Donc ça compile un poil plus vite, mais cela n'exploite toujours pas la ram. Donc j'en déduis que ce n'est pas si nécessaire que cela.

Bon après j'en ai plus qu'il n'en faut c'est vrai, mais faisant des VM à outrance (pour une infrastructure systèmes Windows/linux style AD,WSUS/WDS, FreeIpa, SCCM, Spacewalk/Katello et j'en passe...), cela en demande pas mal. Maintenant c'est les disques qui saturent un peu quand tout fonctionne en même temps, ainsi que le cpu par moment (bon faut vraiment tirer dessus).


Intel i7 4771 + MSI Z87-GD65 Gaming, 24Go de RAM DDR3 1866Mhz@2200Mhz Corsair Vengeance C9, ATI R9 290x 4Go GDDR5
Lepa800W 80+gold, SSD Samsung 850 EVO 250Go + 2x2To RAID1 WD black 64Mo + 1x2to WD black 64Mo + 1x4to WD Black 128Mo + 3To WD red

Hors ligne

#5 09/02/2018 20:04:10

VINDICATORs
RédactWikix and the graphicatorix!
Rédacteur Wiki
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 16 693
Site Web

Re : Optimisations diverses pour la création de RPM...

Petite astuce que j'ai trouvé histoire d'accélérer l'empaquetage des paquets. J'ai juste ajouté le signe "&" à la fin des lignes de mock, ce qui permet de lancer les commandes en même temps (une parallélisation de l'empaquetage quoi). Par contre cela n'exploite toujours pas plus de RAM que cela (juste 2,5Go de plus sans paralléliser, ce qui n'est déjà pas si mal).

Exemple :

mock --no-clean -r fedora-26-i386 --arch=i686 rebuild rpmbuild/SRPMS/mesa-*vind_depot* &
mock --no-clean -r fedora-26-x86_64 --arch=x86_64 rebuild rpmbuild/SRPMS/mesa-*vind_depot* &

Par contre le reste des ressources semblent exploité à fond, sans non plus me bloquer la machine. Du coup c'est peut être pas grand chose, mais au moins cela devrait prendre moins de temps pour empaqueter toutes les versions. Je vais pouvoir le transposer sur mon nouveau script.

Dernière modification par VINDICATORs (09/02/2018 20:04:53)


Intel i7 4771 + MSI Z87-GD65 Gaming, 24Go de RAM DDR3 1866Mhz@2200Mhz Corsair Vengeance C9, ATI R9 290x 4Go GDDR5
Lepa800W 80+gold, SSD Samsung 850 EVO 250Go + 2x2To RAID1 WD black 64Mo + 1x2to WD black 64Mo + 1x4to WD Black 128Mo + 3To WD red

Hors ligne

Pied de page des forums