# [COMPILATION] machine à genoux [résolu]

## gregool

Salut à tous,

j'ai fais une update système aujourd'hui et lors de la mise à jour de dev-libs/boost-1.42.0-r1 ma machine était à genoux !

8 longues minutes de freeze ! 

ma config c'est  une core i7 930 avec 3x 1Go de DDR3 PC 12800 et 1Go de swap.

pendant la compil j'avais 8 coeurs à 100%, 100% de RAM et de SWAP utilisés.

emerge --info:

```
Portage 2.1.8.3 (default/linux/amd64/10.0/desktop/gnome, gcc-4.3.3, glibc-2.11.1-r0, 2.6.34-gentoo x86_64)

=================================================================

System uname: Linux-2.6.34-gentoo-x86_64-Intel-R-_Core-TM-_i7_CPU_930_@_2.80GHz-with-gentoo-2.0.1

Timestamp of tree: Mon, 31 May 2010 17:15:01 +0000

ccache version 2.4 [enabled]

app-shells/bash:     4.1_p7

dev-java/java-config: 2.1.11

dev-lang/python:     2.6.5-r2, 3.1.2-r3

dev-util/ccache:     2.4-r8

dev-util/cmake:      2.8.1-r2

sys-apps/baselayout: 2.0.1

sys-apps/openrc:     0.6.1-r1

sys-apps/sandbox:    2.2

sys-devel/autoconf:  2.13, 2.65

sys-devel/automake:  1.9.6-r3, 1.10.3, 1.11.1

sys-devel/binutils:  2.20.1-r1

sys-devel/gcc:       4.3.3-r2, 4.4.3-r2

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   2.2.7b

virtual/os-headers:  2.6.33

ACCEPT_KEYWORDS="amd64 ~amd64"

ACCEPT_LICENSE="* -@EULA PUEL dlj-1.1 skype-eula"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=native -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-O2 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="assume-digests ccache distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"

GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org/ "

LDFLAGS="-Wl,-O1"

LINGUAS="fr"

MAKEOPTS="-j9"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/var/lib/layman/desktop-effects"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="X a52 aac acl acpi alsa amd64 apache2 autoipd avahi berkdb bluetooth branding bzip2 cairo cdr cleartype cli consolekit corefonts cracklib crypt cups custom-optimization cxx dbus dhcpcd dri dts dvd dvdr eds emboss emerald encode evdev evo exif extras fam ffmpeg firefox flac fortran gdbm gdu gif git gnome gnome-keyring gpm gstreamer gtk hal hddtemp iconv ipod ipv6 java jpeg lcms ldap lib32 libnotify lm_sensors mad matroska mikmod mmx mng modules mp3 mp4 mpeg mudflap multilib nautilus ncurses networkmanager nls nptl nptlonly nsplugin ogg opengl openmp pam pango pcre pdf perl png policykit ppds pppd python qt qt3support qt4 readline reflection samba sdl session spell spl sqlite sse sse2 ssl startup-notification svg symlink sysfs tcpd threads tiff totem truetype type1 unicode usb v4l vdpau video vorbis x264 xcb xml xorg xulrunner xv xvid zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fr" RUBY_TARGETS="ruby18" SANE_BACKENDS="pixma" USERLAND="GNU" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

mauvaise config de ma part j'imagine, si quelqu'un à des optimisations à proposer ça serait sympa  :Smile: 

Merci,Last edited by gregool on Fri Jun 04, 2010 9:03 am; edited 1 time in total

----------

## El_Goretto

Si c'est un problème de galipeur, t'es dedans jusqu'au cou.

Parce que c'est pas sous garantie les galipeurs.

----> []

----------

## Ey

Qu'est-ce que tu appeles 100% ram utilise ? Si tu te bases sur ce que te renvois top, il faut savoir que linux utilise quasiment toute la memoire disponible pour servir de cache disque. Si tu veux la vraie consommation memoire, il vaut mieux utiliser la commande free qui t'affiche la quantite de memoire reellement utilisee par tes applis.

Sinon pour en revenir au probleme, 8 coeurs et seulement 3GiB de RAM ca me parrait bizarrement dimensionne comme machine. Surtout qu'en -j9 tu as 8/9 gcc en parallele en train de compiler des sources de boost qui sont assez lourdes a compiler, ce qui va forcement te bouletiser plein de memoire. J'aurai donc tendance a te conseiller de baisser le -j9 sur ton poste ce qui aurai deux interets :

- economiser un peu la memoire de ton poste

- conserver un peu de puissance de calcul pour te permettre de faire autre chose sur ton poste en meme temps que tu compiles.

Pour finir le swap c'est sense servir uniquement en depannage pour des process qui ne sont pas actifs car c'est extremement lent par rapport a de la memoire.

Donc dans ce cas precis si ca a swappe a fond ca explique parfaitement les gros rallentissements que tu as ressentis.

----------

## kernelsensei

Ça me parait bizarre, t'as pas de CFLAGs louches, rien qui pourrait laisser supposer un tel comportement. Je pense que ton MAKEOPTS est normal vu le nombre de cores...

Sur mon core2duo ça met à peu près 10 minutes (je viens de le recompiler en 7 minutes), 1500Mo de ram utilisé au max (avec XFCE, Firefox et tout de lancé).

Au hasard, t'as essayé de baisser le MAKEOPTS ?

EDIT : @Ey, pas con, j'avais pas pensé au ratio RAM/Coeurs

----------

## gregool

ouai alors 3Go de ram parceque avant de monter cette machine, j'avais un core2duo avec 3Go de ram et je montais jamais au dessus de la moitié en utilisation, mais c'est vrai que j'étais en -j3. 

et pour répondre à ta question c'est bien avec free que j'ai eu l'info sur la conso de ram.

donc la cause du ralentissement effectivement j'avais bien cerné, maintenant la question c'était, une optimisation des paramètres de compilation peut-elle régler ce problème ?

mais il est possible que -j9 soit peut être trop ambitieux, je préfère demander parce que j'ai monté la config il y a un petit mois, et jusqu'ici tout allait bien, c'est peut être juste la taille des sources de boost en effet, je vais surveiller.

@El_Goretto les galipeurs c'est le premier truc auquel j'ai pensé mais c'est bon ça fuit pas ! ouf !   :Laughing: 

----------

## kernelsensei

Les optimisations GCC n'y pourront rien vu que le problème a l'air lié à la quantité de RAM dispo. Je pense que t'as 2 solutions qui s'offrent à toi :

- Tu baisses MAKEOPTS

- T'achètes de la RAM  :Wink: 

----------

## gregool

ok, ben ça va être $1 en attendant $2   :Very Happy: 

----------

## Ey

A priori -j7 ou -j6 ca devrait passer vu que le merge n'a pas non plus plante sur ton poste. (pour info lors de la compilation de boost ca consomme dans les 150-200megs par processeur en pointe sur mon poste).

[edit]

 *kernelsensei wrote:*   

> Les optimisations GCC n'y pourront rien vu que le problème a l'air lié à la quantité de RAM dispo.

 

J'irai meme plus loin, les optimisations ont tendance a consommer plus de memoire lors de la compilation. Il faudrait donc degrader le niveau d'optimisation du code si tu veux diminuer la consommation memoire lors des merges. Ce qui veut dire que pour economiser quelques minutes lors de ton merge (et avoir ton -j9) tu degraderais les perfs de tes applis au quotidien.

----------

## El_Goretto

AMHA, le plus intelligent serait alors temporairement de désactiver l'hyperthreading, pour éviter de perdre des perfs (X cores inutilisés).

Ca repasse à 4 cores, tous en mode en "full patate". 

Et paf, un -j5 derrière.

----------

## gglaboussole

i7 920 chez moi avec un MAKEOPTS="-j9"  et les mêmes CFLAGS que toi... 

```

Tue Jun  1 13:56:50 2010 >>> dev-libs/boost-1.42.0-r1

       merge time: 3 minutes.

```

et Ram utilisée < 1100 Méga avec une compilation en tmpfs en plus ! bizarre ton problème..

----------

## loopx

J'ai aussi un i7 930 avec 6Go de DDR 1600, franchement, laisse tomber la swap   :Laughing:  c'est pour les vieux ca :p

Sinon, j'ai mis l'option -j à 6 me semble, voir plus (histoire d'avoir toujours des processus en attente et saturer tout mes cores).

Concernant le freeze, t'a un process qui a mangé toute la mémoire et le kernel à du péter dans le tap pour rendre vie à ta machine  :Wink: 

Note: j'ai désactivé l'hyper-threading car avec 4 core, c'est déjà plus qu'assez ... surtout pour jouer sous windows   :Crying or Very sad: 

Si tu met l'hyper threading, je te conseil de passer l'option -j à ... 12 ? (je fais +50% ...)   :Laughing: 

----------

## gregool

 *gglaboussole wrote:*   

> i7 920 chez moi avec un MAKEOPTS="-j9"  et les mêmes CFLAGS que toi... 
> 
> ```
> 
> Tue Jun  1 13:56:50 2010 >>> dev-libs/boost-1.42.0-r1
> ...

 

ah! intéressant...

bon en fait je suis pas a 5 minutes c'est pas le soucis, repasser en -j5 en attendant de doubler la ram c'est pas dramatique.

----------

## _Seth_

Je ne sais pas si ça s'applique dans ton cas mais le noyau peut avoir tendance à "swapper" alors que ce n'est pas forcément la peine. Pour y remédier, tu peux changer la valeur de "swappiness" de ton système:

```
# cat /proc/sys/vm/swappiness

50

# echo "25" > /proc/sys/vm/swappiness
```

Plus la valeur est proche de 0 moins tu swappes, plus c'est proche de 100, plus la swap est utilisée.

Tu peux sauvegarder définitivement ces changements en modifiant le fichier suivant:

```
# echo "vm.swappiness = 25" >> /etc/sysctl.conf
```

----------

## gregool

Oh, je crois que je tiens le bon bout...

j'ai ajouté ça dans le kernel 

[*] Numa Memory Allocation and Scheduler Support

c'est une option qui n'était pas activée au moment de la compil de boost la première fois, mais je n'ai pas testé depuis.

je viens de passer le paramètre swappiness à 25 comme brillamment suggéré par _Seth_

et maintenant :

```
 Mon May 31 20:01:12 2010 >>> dev-libs/boost-1.42.0-r1

       merge time: 10 minutes and 21 seconds.

     Fri Jun  4 10:51:12 2010 >>> dev-libs/boost-1.42.0-r1

       merge time: 2 minutes and 52 seconds.

```

ça colle plus aux stats de gglaboussole.

donc j'ai bien envie de dire merci les gars encore un mystère de [résolu] !   :Very Happy: 

----------

## gglaboussole

Je me suis longuement posé la question d'activer ou pas NUMA , et je ne l'ai finalement pas fait, sur la base de ce post :

https://forums.gentoo.org/viewtopic-t-715522-postdays-0-postorder-asc-highlight-nehalem-start-100.html

EDIT : d'ailleurs si tu regardes dmesg tu dois avoir un warning comme quoi il ne trouve aucune configuration NUMA...

EDIT2 : si ça t'intéresse pour comparer 

```

 [*] Tickless System (Dynamic Ticks) 

 [*] High Resolution Timer Support                                          

[*] Symmetric multi-processing support                                                                           

[ ] Support sparse irq numbering                                                                                    

[ ] Enable MPS table                                                                                                  

[ ] Support for extended (non-PC) x86 platforms                                                                      

[*] Single-depth WCHAN output                                                                                       

 [ ] Paravirtualized guest support  --->                                                                           

[*] Disable Bootmem code                                                                                              

[ ] Memtest                                                                                                           

 Processor family (Core 2/newer Xeon)  --->                                                                        

 [ ] IBM Calgary IOMMU support                                                                                          

 [ ] AMD IOMMU support                                                                                                 

  (8) Maximum number of CPUs                                                                                            

 [*] SMT (Hyperthreading) scheduler support                                                                            

 [*] Multi-core scheduler support                                                                                      

Preemption Model (Voluntary Kernel Preemption (Desktop))  --->                                                    

 [ ] Reroute for broken boot IRQs                                                                                      

 [*] Machine Check / overheating reporting                                                                           

  [*]   Intel MCE features                                                                                               

  [ ]   AMD MCE features                                                                                                

       < > Machine check injector support                                                                                    

           < > Dell laptop support                                                                                                 

        <*> /dev/cpu/microcode - microcode support                                                                            

     [*]   Intel microcode patch loading support                                                                           

       [ ]   AMD microcode patch loading support                                                                               

        <M> /dev/cpu/*/msr - Model-specific register support                                                                  

           <M> /dev/cpu/*/cpuid - CPU information support                                                                        

          [ ] Numa Memory Allocation and Scheduler Support                                                                     

          Memory model (Sparse Memory)  --->                                                                               

          [*] Sparse Memory virtual memmap                                                                                     

      [ ] Allow for memory hot-add                                                                                           

     [ ] Enable KSM for page merging                                                                                         

   (4096) Low address space to protect from user allocation                                                               

   [ ] Enable recovery from hardware memory errors                                                                       

      [ ] Check for low memory corruption                                                                                  

       [ ] Reserve low 64K of RAM on AMI/Phoenix BIOSen                                                                     

        -*- MTRR (Memory Type Range Register) support                                                                        

          [*]   MTRR cleanup support                                                                                          

       (0)     MTRR cleanup enable value (0-1)                                                                            

     (1)     MTRR cleanup spare reg num (0-7)                                                                             

      [ ] EFI runtime service support                                                                                      

      [*] Enable seccomp to safely compute untrusted bytecode                                                             

         [ ] Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)                                       

        Timer frequency (1000 HZ)  --->                                                                                 

          [ ] kexec system call                                                                                               

       [ ] kernel crash dumps                                                                                                 

        [ ] Build a relocatable kernel                                                                                       

          -*- Support for hot-pluggable CPUs                                                                                   

         [ ] Compat VDSO support                                                                                             

          [ ] Built-in kernel command line                        

```

----------

## MaryPopy

Hello, 

Je vien du forum Ubuntu et ma question à été boycottée. Comme tu as ici le seul exemple de config pour i7 que j'ai trouvé, je voulais te demander si ta .config serait également idéal pour un 17-950. J'ai 6 Go de ram, le / est sur un SDD de 40 Go et le /home sur un HDD de 500 Go.

Merci infiniment de me confirmer si ta config pourrait satisfaire mon kernel. Pour le moment mon kernel est sur Generic-x86-64

----------

## gglaboussole

Salut,

Oui il n'y a aucune raison pour que ça ne convienne pas à ton i7 950...  :Wink: 

----------

## MaryPopy

 *gglaboussole wrote:*   

> Salut,
> 
> Oui il n'y a aucune raison pour que ça ne convienne pas à ton i7 950... 

 

Merci pour ta réponse rapide.

Salut.

----------

## gglaboussole

De rien...

Tu peux trouver plein d'infos pour t'aider dans la compilation de ton kernel ici : http://kernel-seeds.org/

----------

