# [Optimisation]Optimiser et accélérer le système

## Kevin57

Bonjour à tous,

Comme le dit mon titre, je cherche à optimiser, mais surtout à accélérer mon système car je ne comprends pas pourquoi des applications comme seamonkey (OK, c'est pas la plus légère!) ou aMSN (plusieurs secondes avant de se lancer au boot) sont aussi longues à charger alors que j'ai 4Go de RAM et un processeur AMD Phenom II X4 965 BE. A en croire l'affichage de mon conky, la RAM reste entre 9% et 14% (actuellement, juste après un reboot, 9%, soit 359MiB/3,62GiB), la swap est constamment à 0% (j'ai pris 2Go de swap, ça devrait suffire, non?) et mon CPU dépasse rarement les 10% (sauf quand emerge tourne, bien sûr, où il approche les 90-100%) et 35-40°C.

J'ai bien essayé de suivre ce tuto mais il vise plutôt à accélérer le boot. J'ai tenté le prelink, mais ça ne change pas grand chose. D'ailleurs, il m'affiche plusieurs erreurs : 

```
KevinPC ~ # prelink -afmR

prelink: /usr/bin/lddlibc4: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib/seamonkey/seamonkey-bin: Could not find one of the dependencies

prelink: /usr/lib/mozilla-sunbird/TestGtkEmbed: Could not find one of the dependencies

prelink: /usr/lib/mozilla-sunbird/sunbird-bin: Could not find one of the dependencies

prelink: /usr/lib/mozilla-sunbird/xpcshell: Could not find one of the dependencies

prelink: /usr/lib/seamonkey/seamonkey-bin: Could not find one of the dependencies

prelink: /usr/lib/mozilla-sunbird/TestGtkEmbed: Could not find one of the dependencies

prelink: /usr/lib/mozilla-sunbird/sunbird-bin: Could not find one of the dependencies

prelink: /usr/lib/mozilla-sunbird/xpcshell: Could not find one of the dependencies

prelink: /usr/lib32/misc/glibc/getconf/POSIX_V7_ILP32_OFFBIG: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib32/misc/glibc/getconf/POSIX_V6_ILP32_OFF32: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib32/misc/glibc/getconf/XBS5_ILP32_OFFBIG: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib32/misc/glibc/getconf/POSIX_V7_ILP32_OFF32: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib32/misc/glibc/getconf/XBS5_ILP32_OFF32: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib32/misc/glibc/getconf/POSIX_V6_ILP32_OFFBIG: Using /lib32/ld-linux.so.2, not /lib/ld-linux.so.2 as dynamic linker

prelink: /usr/lib64/misc/glibc/getconf/POSIX_V6_LP64_OFF64 is no longer hardlink to /usr/bin/getconf

prelink: /usr/lib64/misc/glibc/getconf/XBS5_LP64_OFF64 is no longer hardlink to /usr/bin/getconf

prelink: /usr/lib64/misc/glibc/getconf/POSIX_V7_LP64_OFF64 is no longer hardlink to /usr/bin/getconf

prelink: /usr/x86_64-pc-linux-gnu/gcc-bin/4.4.3/x86_64-pc-linux-gnu-g++ is no longer hardlink to /usr/x86_64-pc-linux-gnu/gcc-bin/4.4.3/x86_64-pc-linux-gnu-c++
```

J'ai aussi pensé à essayer de lancer seamonkey dans une sorte de mode démon dans mon .config/openbox/autostart.sh mais je ne trouve pas de tel mode dans le man.

Au cas où ça aide, un emerge --info :

```
KevinPC ~ # emerge --info

Portage 2.1.8.3 (default/linux/amd64/10.0, gcc-4.4.3, glibc-2.11.1-r0, 2.6.34-gentoo x86_64)

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

System uname: Linux-2.6.34-gentoo-x86_64-AMD_Phenom-tm-_II_X4_965_Processor-with-gentoo-2.0.1

Timestamp of tree: Sat, 05 Jun 2010 10:15:02 +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.4.3-r2

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   2.2.8

virtual/os-headers:  2.6.33

ACCEPT_KEYWORDS="amd64 ~amd64"

ACCEPT_LICENSE="*"

CBUILD="x86_64-pc-linux-gnu"

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

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb /var/lib/hsqldb"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-O2 -pipe -march=native"

DISTDIR="/usr/portage/distfiles"

EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=5.0 --with-bdeps y"

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

GENTOO_MIRRORS="http://de-mirror.org/distro/gentoo/ ftp://de-mirror.org/distro/gentoo/ rsync://de-mirror.org/gentoo/"

LANG="fr_FR.UTF8"

LDFLAGS="-Wl,-O1"

LINGUAS="fr fr_FR"

MAKEOPTS="-j5"

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="/usr/local/portage/layman/desktop-effects /usr/local/portage"

SYNC="rsync://rsync3.de.gentoo.org/gentoo-portage"

USE="X a52 aac acl alsa amd64 amr bash-completion berkdb bluetooth bzip2 cdda cdr cleartype cli consolekit corefonts cracklib crypt css cups cxx dbus djvu dri dvd dvdr encode ffmpeg fortran ftp gdbm gif gphoto2 gpm hal handbook iconv imap ipv6 jack java jpeg lcms mad mime mmx mng modules mozilla mp3 mpeg msn mudflap multilib mysql ncurses nls nptl nptlonly nsplugin ogg opencore-amr opengl openmp pam pcre pdf perl php png pppd python readline reflection session smp source speex spell spl sql sse sse2 ssl svg symlink sysfs tcpd tiff truetype type1 unicode usb v4l v4l2 vcd videos webkit wifi xcomposite xorg xscreensaver xvid zip 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 fr_FR" RUBY_TARGETS="ruby18" SANE_BACKENDS="pixma" USERLAND="GNU" VIDEO_CARDS="radeon" 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, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
```

Avez-vous des idées pour que tout ça aille plus vite? Au passage, si vous connaissez des softs avec les mêmes qualités que Seamonkey (au minimum : browser, mails, Adblock) mais plus rapide, je suis preneur. J'ai déjà essayé Opera, mais je ne suis pas convaincu : guère plus rapide. Enfin, je réessaie au cas où.

Merci beaucoup d'avance,

Kevin57

----------

## xaviermiller

Salut,

Donne aussi ton filesystem et options de montage.

As-tu bien configuré ton kernel ?

----------

## Xytovl

Vues les capacités du processeur et la RAM, la limite doit venir du disque dur. La manière logicielle d'améliorer légèrement le premier chargement c'est de lire les données avant qu'elles soient nécessaires. (Et aussi monter la partition avec une option noatime ou bien relatime)

Les 3 options sont :

*readahead-list

Il faut le configurer manuellement en donnant une liste de fichiers à charger. 

*preload

Lui se configure automatiquement avec un démon qui observe tout ce qui est chargé. Ça consomme un tout petit peu de ram et cpu pendant l'utilisation, mais rien de visible sur une machine comme la tienne.

*ureadahead

La méthode utilisée par Ubuntu, il n'y a pas encore d'ebuild dans portage, mais on en trouve sur le bugzilla. Sur un SSD bas de gamme on ne gagne absolument rien, je ne l'ai pas essayé sur un disque mécanique.

L'option la plus chère, mais absolument bluffante c'est de passer au SSD, pour les temps de chargement c'est le jour et la nuit.

----------

## Kevin57

XavierMiller : Les infos sur les partitions : 

```
kevin@KevinPC ~ $ cat /etc/fstab 

# /etc/fstab: static file system information.

#

# noatime turns off atimes for increased performance (atimes normally aren't 

# needed; notail increases performance of ReiserFS (at the expense of storage 

# efficiency).  It's safe to drop the noatime options if you want and to 

# switch between notail / tail freely.

#

# The root filesystem should have a pass number of either 0 or 1.

# All other filesystems should have a pass number of 0 or greater than 1.

#

# See the manpage fstab(5) for more information.

#

# <fs>         <mountpoint>   <type>      <opts>      <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.

/dev/sda1      /      ext3      noatime      0 1

/dev/sda2      none      swap      sw      0 0

/dev/sda3      /home      ext3      noatime      0 2

none         /proc      proc      defaults   0 0

none         /dev/shm   tmpfs      nodev,nosuid,noexec   0 0

/dev/cdrom      /mnt/cdrom   auto      noauto,user   0 0

#/dev/fd0      /mnt/floppy   auto      noauto      0 0

# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for 

# POSIX shared memory (shm_open, shm_unlink).

# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will

#  use almost no memory if not populated with files)
```

Je pense avoir bien configuré mon kernel, mais il se peut que j'ai oublié quelque chose. D'ailleurs, dans "Processor Family", les Phenom II sont absents, il y a juste "Opteron/Athlon64/Hammer/K8" ou "Generic-x86-64", du coup j'ai mis "Opteron/Athlon64/Hammer/K8" mais je suis pas convaincu... Mais sinon, quelles options essentielles je pourrais avoir oublié? A priori, les 4 coeurs semblent être utilisés, conky m'affiche de beaux graphiques pour les 4.

Xytovl : C'est vrai que là je tourne sur mon très vieux disque dur, le nouveau ne fonctionnant pas.

L'option preload me semble bien intéressante, je vais me renseigner un peu!

J'ai bien pensé au SSD et failli en acheter un, mais le prix m'a fait changer d'avis, de même que la limite en écriture. J'aime autant rester sur un disque dur classique et écrire dessus autant que je veux.

----------

## Picani

Tu as éssayé çà ? Ce sont des optimisations pour CPU AMD à mettre dans ton make.conf.

----------

## Kevin57

Je n'avais pas vu ça, je vais le mettre. 

Et j'aurais encore une question par rapport à preload. Dans la doc d'utuntu ainsi que plusieurs sites que j'ai trouvé, ils disent qu'il faut juste l'installer :

 *doc ubuntu wrote:*   

> Aucune autre manipulation n'est nécessaire pour lancer ce service qui se met directement au travail. 

 

Donc ce n'est même pas la peine de l'ajouter avec rc-update ou quelque chose comme ça? Ça me surprend...

----------

## NEOxAKIRA

monte /tmp et /var/tmp en tmpfs 

http://fr.gentoo-wiki.com/wiki/Portage/tmpfs

```
tmpfs             /tmp            tmpfs              size=2G,mode=1777                             0 0

tmpfs             /var/tmp         tmpfs              size=2G,mode=1777                             0 0
```

----------

## Gef

 *Kevin57 wrote:*   

> Donc ce n'est même pas la peine de l'ajouter avec rc-update ou quelque chose comme ça?

 

Si.

----------

## Kevin57

NEOxAKIRA : j'ajoute juste ça dans mon fstab, rien de plus à faire? Si j'ai bien compris, ça va charger ces répertoires dans la RAM, c'est ça? Mais si je leur mets 2GB chacun, j'arrive au total de ma RAM, c'est pas gênant?

Gef : merci d'avoir confirmé, il me semblait bien que c'était bizarre un service qui se lance tout seul!

Edit : bizarrement, preload ne parvient pas à démarrer au boot. Il me retourne toujours "crashed". La seule erreur que je trouve dans les log est la suivante : 

```
ERROR:state.c:374:preload_markov_correlation: assertion failed: (fabs (correlation) <= 1.00001)
```

Un lancement manuel marche en revanche très bien

----------

## sd44

Les performances sont bridé par l'élément le moin rapide, en locurence ton hdd.

c'est pour moi le composant qu'il faut voir en priorité, donc quant tu aura résolu tes pb de hdd, donne nous les temps d'acces et débit.

----------

## NEOxAKIRA

ou mieux investi dans un ssd, un disque dur mécanique c'est vraiment lent de chez lent ...

et sinon tu t'en fou un peu de la taille passer au répertoire en tmpfs, par default c'est la moitié de la ram total, mais ça utilise que ce qui est nécessaire

donc en gros ça varie tout le temp, et quand tu fait rien ca bouffe pratiquement pas de ram.

Par contre 2go ça doit pas être suffisant pour compiler open office, mais bon compiler open office...

sinon dans le dernier kernel il y  a une option pour monter /dev en tmpfs automatiquementLast edited by NEOxAKIRA on Sun Jun 06, 2010 8:05 pm; edited 1 time in total

----------

## xaviermiller

/dev est en RAM depuis la 2.6 et udev...

----------

## Kevin57

sd44 : le problème, c'est que personne ne semble connaitre de solution pour mon HDD... Si vous en avez, je suis preneur.

NEOxAKIRA : En effet, le SSD est plus rapide, mais je n'ai pas les moyens de mettre 50€ dans un SSD de 16GB, ni 80€ pour 30 GB... Et encore une fois, cette histoire de limitation de nombre d'écriture ne me plait pas.

L'option preload me semble bien intéressante mais, comme je l'ai dit dans le message précédent, le service ne se lance pas au boot, il crashe systématiquement, avec ou sans le rc_parallel, et je n'ai pas trouvé de solution pour le moment.

----------

## gglaboussole

perso j'avais testé preload il y a un moment sur un machine que je jugeais lente, et je l'ai viré... gain de perfs homéopathiques en revanche un boot ralenti de 10 bonnes secondes... faut voir ce que ça donne sur une bonne machine..

Monter /tmp et var/tmp en tmpfs est une très bonne optimisation mais faut savoir que 2 GB pour var/tmp est insuffisant pour compiler open office (3.7 GB) par ex...

C'est vrai qu'un bon disque ça te change un ordi, même si c'est pas un SSD (j'ai un velociraptor, mécanique donc, et j'en suis très content)

que donne un petit hdparm -tT sur ton disque ?

Le système de fichier y fait énormément aussi... ma copine à un vieux coucou sur lequel j'ai réinstallé une ubuntu sur du ext4, et le gain est très sensible...

Si ton budget est limité pour le disque tu peux très bien en prendre un tout petit pour n'y installer que le système, et ton home tu le mets sur un disque plus gros et moins cher...

Tu peux éventuellement envisager un raid également avec plusieurs disques bon marchés

EDIT : et regardes du côté de ton kernel également, il y a peut être des optimisations que tu peux faire au niveaux des entrées/sorties et de la latence

----------

## Kevin57

Je verrai pour preload, pour l'instant vu qu'il ne démarre pas, il ne ralentit pas le boot!   :Very Happy: 

Pour /var/tmp en tmpfs, tu me conseillerais de faire comment, sachant que je compile OpenOffice suite à une mauvaise expérience avec le binaire?

hdparm -tT sur mon disque actuel donne : 

```
/dev/sda:

 Timing cached reads:   7912 MB in  2.00 seconds = 3957.89 MB/sec

 Timing buffered disk reads:  220 MB in  3.02 seconds =  72.92 MB/sec
```

J'ai déjà acheté un Samsung Spinpoint F3 de 500GB mais je n'arrive pas à le faire marcher, il refuse de démarrer. Il gratte pendant 10-20 secondes, puis s'éteint. J'ai tout résumé ici. Mais je pense qu'il sera plus rapide que l'actuel, quand il marchera! D'ailleurs, si vous avez des idées, je n'ai rien contre! Au pire, dans quelques temps, je pourrai toujours acheter un petit disque SATA3 très performant si l'envie me prend.

Pour le système de fichier, au départ je voulais mettre de l'ext4 mais certains ici me l'ont déconseillé en disant que les différences n'étaient pas énorme avec l'ext3 et qu'il n'était pas encore assez stable. Certains m'avaient aussi conseillé de mettre l'arbre portage en BTRFS, mais comme le man de mount ne mentionnait aucune prise en charge du BTRFS, j'ai préféré ne pas tenter.

Pour le kernel, le problème est que je n'y connais rien dans ce domaine donc je préfère ne pas tenter au pif... Donc si tu as un bon tuto ou de bonnes explications, je veux bien.

----------

## gglaboussole

Les perfs de ton disque sont honorables...

pour tmpfs, vu que t'es léger en RAM pour la compil (enfin pour oo en tous cas) tu peux simplement monter /tmp en tmpfs, (par contre attention si tu fais de l'encodage video beaucoup de programme utilise par défaut /tmp, et si tu changes pas les répertoire tu risques vite de le saturer...)

Tous les programme qui utilise /tmp se verront boosté car il n'auront plus besoin d'accès au disque

En ce qui concerne le kernel je pense que le meilleur tuto qui soit est ici:

http://kernel-seeds.org/

Vérifie déjà que tu n'a pas cette options là d'activée dans Général Setup car elle ralentie considérablement les perfs sur les i/o(en tous cas sur un athlon xp, du coup j'ai jamais retenté depuis que j'ai l'i7 920)

```

 [ ] Control Group support  --->  

```

si t'a un "vieux" kernel vérifie que   Group CPU scheduler n'est pas non plus activé car maintenant c'est dans la section que je t'ai indiquée (donc en la désactivant du désactives tout) mais avant c'était à part

Après il y a tellement de choses paramétrables qu'il faut faire des recherches, mais le site que je t'ai indiqué est vraiment pas mal

----------

## Kevin57

OK donc je vais mettre juste /tmp en tmpfs, et si j'ajoute de la RAM un jour j'ajouterai /var/tmp. Pas de souci pour l'encodage, je n'en fais jamais.

Merci pour le site pour le kernel. Par contre, comme c'est en anglais, je m'y mettrai plus tard! Je viens de désactiver l'option dont tu parles en attendant. Je pense que Group CPU Scheduler doit être dans cette section, puisque le noyau 2.6.34 n'est pas trop vieux!

----------

## Kevin57

Alors, je viens enfin de solutionner le problème du disque dur Samsung, donc je suis en train de tout remettre de l'ancien sur le nouveau (au passage, si vous avez plus rapide que de passer par un stage5, je veux bien !). J'en ai profité pour le tester avec hdparm, mais je ne comprends pas trop les résultats. Surtout, je ne comprends pas pourquoi les résultats de l'ancien ont tant changé :

```
KevinPC ~ # hdparm -tT /dev/sda #Ça, c'est le Samsung, qui est passé en sda depuis qu'il remarche... Il est au repos lors du test

/dev/sda: 

 Timing cached reads:   6786 MB in  2.00 seconds = 3394.11 MB/sec

 Timing buffered disk reads:  276 MB in  3.01 seconds =  91.83 MB/sec

KevinPC ~ # hdparm -tT /dev/sdb #Ça c'est l'ancien HDD. Lui n'est pas au repos puisqu'il a tout le système d'installé.

/dev/sdb: 

 Timing cached reads:   6812 MB in  2.00 seconds = 3407.41 MB/sec

 Timing buffered disk reads:  136 MB in  3.01 seconds =  45.14 MB/sec
```

Je suis un peu surpris de voir que l'ancien a un meilleur résultat que le nouveau au premier test. Comment comprendre ces résultats?

Edit : Y a-t-il une option à ajouter dans le kernel pour le support du SATA II / SATA III? J'ai beau chercher, je ne trouve rien. Et comment m'assurer que mon HDD est bien reconnu comme SATA II? Si je ne me trompe pas, hdparm -I ne fait que dire qu'il est compatible, non?

```
KevinPC linux # hdparm -I /dev/sda | grep SATA

   Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
```

----------

## gglaboussole

Il n'y a pas d'option spécifiques sata2/3 ton matériel le gère ou pas, dmesg te dis le mode utilisé pour le disque, quant aux différences d'hdparm -tT, vu que c'est pas un réel outil de benchmark je pense qu'il faut faire plusieurs tests et en tirer une moyenne...

----------

## Kevin57

Merci pour tes réponses. Je comprends un peu mieux maintenant. Je pensais que les différentes normes SATA, comme les différentes normes USB, nécessitaient des drivers spécifiques. 

Pour dmesg, je viens de tester et le résultat me surprend : 

```
kevin@KevinPC ~ $ dmesg | grep -i sata

[    1.723245] ahci 0000:00:11.0: AHCI 0001.0200 32 slots 6 ports 6 Gbps 0x3f impl SATA mode

[    1.724374] ata1: SATA max UDMA/133 abar m1024@0xfe7ffc00 port 0xfe7ffd00 irq 19

[    1.724473] ata2: SATA max UDMA/133 abar m1024@0xfe7ffc00 port 0xfe7ffd80 irq 19

[    1.724571] ata3: SATA max UDMA/133 abar m1024@0xfe7ffc00 port 0xfe7ffe00 irq 19

[    1.724670] ata4: SATA max UDMA/133 abar m1024@0xfe7ffc00 port 0xfe7ffe80 irq 19

[    1.724768] ata5: SATA max UDMA/133 irq 19, connection status changed

[    1.724854] ata6: SATA max UDMA/133 abar m1024@0xfe7ffc00 port 0xfe7fff80 irq 19

[    2.001082] ata4: SATA link down (SStatus 0 SControl 300)

[    2.001085] ata6: SATA link down (SStatus 0 SControl 300)

[    2.154055] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)

[    2.154059] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

[    2.154062] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

[    2.572285] ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
```

Où le port SATA1 est pris par mon nouveau HDD et le port SATA2 par l'ancien. Ce qui signifierait que mon ancien HDD était lui aussi déjà en SATA II? Sur un ordinateur de septembre 2007, c'est possible?

Pour hdparm, j'ai refait les tests. J'ai fait le test 4 fois sur chaque disque dur, puis j'ai fait une moyenne des résultats. Ca donne les résultats suivants :

```
KevinPC ~ # hdparm -tT /dev/sda # le nouveau

/dev/sda:

 Timing cached reads:   7214 MB in  2.00 seconds = 3570.63 MB/sec

 Timing buffered disk reads:  278 MB in  3.35 seconds =  89.67 MB/sec

KevinPC ~ # hdparm -tT /dev/sdb # l'ancien

/dev/sdb:

 Timing cached reads:   7106 MB in  2.00 seconds = 3525.75 MB/sec

 Timing buffered disk reads:  274 MB in  3.00 seconds =  71.49 MB/sec
```

Donc ils semblent se valoir pour ce qui est du "Timing cached reads", mais le nouveau semble nettement plus performant en "buffered disk reads". Mais j'ai du mal à saisir ce que cela signifie, je ne trouve rien de probant sur google pour le moment... Tu pourrais juste expliquer vite fait dans quel cas chacune de ces valeurs s'applique? Et le fait que j'aie fait le test du sdb alors qu'il est en cours d'utilisation peut-il jouer sur le résultat?

Sinon, niveau optimisation, comme je repasse toutes mes données sur mon nouveau disque dur, j'en ai profité pour revoir le partitionnement ainsi : 

- /dev/sda1 : / (30 GB) => ext4 (qui, selon quelques benchmarks, est nettement plus rapide que l'ext3)

- /dev/sda2 : /usr/portage (2 GB) => btrfs

- /dev/sda3 : SWAP (3 GB)

- /dev/sda4 : /home (465 GB) => ext3 (pour être sur de la stabilité)

Pensez-vous que le passage en ext4 du système permette de gagner réellement en rapidité? Et aussi, quelles options de montage permettent de gagner du temps? J'utilise déjà noatime, je comptais mettre aussi relatime. L'option errors=remont-ro est-elle conseillée pour sda1 et sda2?

----------

## gglaboussole

Timing cached reads : vitesse de lecture de la mémoire cache (normal que ce soit le plus rapide)

Timing buffered disk reads  vitesse de lecture du disque dur (c'est celui là qui t'intéresse...)

Sata1 ou 2 c'est lié aux caractéristiques du dur et du contrôleur de la carte mère... un dur sata2 marchera en sata si le contrôleur est sata (rétro-compatible) en revanche un sata sera toujours sata sur un contrôleur sata2...

Que ton disque soit sata2 en 2007 c'est possible il me semble, mais ton dmesg indique des valuers différentes... 1.5 Gbps ou 3.0 Gbps... 

Pour les options de montage regarde man mount, il me semble que noatime est plus performant que relatime,

----------

## Kevin57

Merci pour ces explications. Pour ce qui est des ports SATA, en fait le port 1, c'est mon nouveau HDD, le 2 mon ancien, le 3 est un de mes lecteurs et le 5 l'autre. J'en déduis donc que mes HDD sont en en SATA II (3 Gbps) et mes lecteurs DVD en SATA I (1.5 Gbps), c'est ça?

Pour noatime et relatime, j'ai vu quelque part que a priori Linus Torvald conseillerait relatime, mais que les deux seraient compatibles (donc qu'on pourrait mettre les deux options en même temps)... Mais je n'en sais pas plus, je n'ai pas tout compris.

----------

## gglaboussole

j'avais fais mon choix grâce à 

http://thunk.org/tytso/blog/2009/03/01/ssds-journaling-and-noatimerelatime/

même si ça traite des ssd...

d'autres infos :

http://blogs.koolwal.net/2009/01/30/installing-linux-on-usb-part-4-noatime-and-relatime-mount-options/

par contre, vu que t'es dans la recherche d'optimisations, tu trouveras certainement des sujets concernant le writeback data mode versus ordered data mode .... tu fais ce que tu veux mais j'ai eu beaucoup de soucis avec le writeback donc je te recommande d'éviter de tester si tu tiens à l'intégrité de tes données...

----------

## Kevin57

Le deuxième site que tu donnes est celui que j'avais vu aussi. Mais bon, vu le premier, je vais peut-être rester sur noatime. Merci!

----------

## gglaboussole

au fait tu as vu une différence sur la réactivité de ton système après avoir désactivé l'option CPU group scheduler ?

----------

## Kevin57

Non pas spécialement, en tout cas rien de bien remarquable.

----------

## gglaboussole

le problème de "lenteur" vient peut être aussi de seamonkey... c'est bien d'avoir un multicoeur, mais tu n'en tire partie que si les applications que tu utilises sont multi-threadées (c'est à dire découpées en processus indépendants qui peuvent tourner en parallèle et que chaque coeur de ton cpu peut exploiter)

Tu as vu qu'il existait une USE pour seamonkey custom-optimization ? ca utilise tes CFLAGS à toi au lieu de celles choisies par les dev, tu peux essayer (et à mon avis mets custom-optimization dans xulrunner aussi si c'est une dépendance de seamonkey)

----------

## Kevin57

Merci du conseil, je n'avais jamais compris à quoi servait ce use-flag malgré les explication brèves du site gentoo-portage.com. Je ne pourrais pas même le définir comme useflag global dans le make.conf? En tout cas, je suis bien parti pour recompiler seamonkey...  :Very Happy: 

Et en passant, passer /usr/portage en btrfs est censé accélérer quoi? Les recherches dans portage, le emerge --sync?

----------

## gglaboussole

 *Kevin57 wrote:*   

> 
> 
> Et en passant, passer /usr/portage en btrfs est censé accélérer quoi? Les recherches dans portage, le emerge --sync?

 

Aucune idée je ne connais pas ce système de fichier... pour définir le custom-optimization en global je pense pas que ce soit très utile vue que seul l'utilise firefox, xulrunner, seamonkey,thunderbird...

Sur mon i7 l'amélioration est minime, en revanche sur l'eeepc il y a un gros plus mais je l'ai viré car cela rendait firefox très instable

----------

## Kevin57

Apparemment le btrfs est très performant pour lire rapidement dans beaucoup de touts petits fichiers, donc ça correspond bien à /usr/portage. Problème : il n'est pas encore bien stable, parait-il...

OK Pour le custom-optimization, je vais essayer ça après ma MAJ. Par contre, preload crash toujours au démarrage...

Mais a propos de seamonkey, je me pose une question : est-il encore vraiment maintenu? Parce que Youtube m'affiche toujours un avertissement comme quoi mon navigateur "n'est plus pris en charge. Veuillez utiliser un navigateur plus récent"...

----------

## Tom_

Il est conseillé d'utiliser les optimisations par défaut pour Firefox (donc ne pas activer le use flag custom-optimization), donc je pense que ca doit être pareil pour SeaMonkey.

Si SeaMonkey utilise la base de données SQLite comme Firefox, tu peux essayer de nettoyer cette base! Cela accéléra le lancement de SeaMonkey!

Pour BTRFS, je l'utilise pour ma partition /usr/portage. Les recherches d'Emerge et les synchros sont plus rapides!

----------

## gglaboussole

 *Tom_ wrote:*   

> 
> 
> Si SeaMonkey utilise la base de données SQLite comme Firefox, tu peux essayer de nettoyer cette base! Cela accéléra le lancement de SeaMonkey!

 

+1

tu vas dans le répertoire de seamonkey dans ton home qui contient les fichiers .sqlite et tu fais:

(je l'avais testé avec succès pour firefox )

for i in *.sqlite; do echo "VACUUM;" | sqlite3 $i ; done

----------

## Kevin57

Tom_ : pourquoi est-il déconseillé d'utiliser ces useflags?

Sinon, j'ai fait ce que vous avez dit pour les sqlite. Mais je me suis rendu compte que mon ~/.mozilla/seamonkey/974ozmlb.default contient beaucoup de places.sqlite-*.corrupt, c'est normal?  :Confused: 

----------

## gglaboussole

c'est déconseillé car certains paquets pour des raisons de stabilité/perf se voit attribuer des CFLAGS choisis par les dev ignorants les tiens  (c'est le ces d'open office par ex) si tu regardes la compil tu verras des cflags différents des tiens ...

Mais ça te coûte rien d'essayer, tu vas rien casser...

au pire si ça compile pas ou n'est pas stable tu reviens au défaut....

----------

## Kevin57

J'ai essayé le useflag custom-optimization mais il ne change rien. Seamonkey reste lent à se lancer pour la première fois. Une fois qu'il a été lancé une fois, ça va vite de le relancer. J'ai peut-être installé trop d'addons, je vais faire du tri!   :Very Happy: 

----------

## Mickael

En même temps un truc: all-in-one internet application suite, sa respire pas la vitesse... et les applications mozilla-* sont assez lourdes et consommatrices de ram. Enfin, est-ce réellement problématique, puisque une fois lancée, tu as tout de lancé, donc tu n'es pas sensé l'éteindre, sinon il te faut un programme par fonction.

----------

## Kevin57

C'est sûr qu'une fois que c'est lancé, c'est bon, donc dans cette optique ce n'est pas gênant. Je me renseignais juste au cas où, pour avoir des idées pour accélérer globalement le système.

----------

## scawf

Il y a une chose à tester également pour accelerer le lancement des programmes:

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Dans make.conf, comme les cflags

----------

## Kevin57

OK je vais essayer ça alors. Mais ça doit changer quoi? Je n'ai rien trouvé sur LDFLAGS dans le man de make.conf

----------

## Ezka

Ce sont des options pour le linker des dynamic libs :

-O1 pour optimiser la sortie du binaire produit (mais je ne sais pas quel impact ça a sur le linker :s)

--as-needed : ne link que ce que le binaire à réellement besoin, mais normalement avec les use-flags ça doit être fait proprement ...

----------

## Leander256

Pour des explications en anglais sur --as-needed: http://www.gentoo.org/proj/en/qa/asneeded.xml

Tentative de résumé en français: on ne conserve que les dépendances directes, et non les indirectes (c'est à dire les dépendances des dépendances) lors de l'édition des liens des binaires. Cela permet notamment de charger moins de bibliothèques au démarrage. Un autre bénéfice est que le nombre de paquets impacté par un changement de version d'une bibliothèque (lors d'un revdep-rebuild) est moins important. Ce n'est donc pas directement lié aux USE  :Wink: 

----------

## Ezka

Tu as raison les flags sont trop globaux pour tenir compte des subtilités de chaque dépendance d'un package. J'en étais resté à une évidence que si tu compiles un depuis portage avec un "-qt" ton appel à ld doit nécessairement se faire sans les références aux Qt-libs =).

C'est quand même marqué dans la doc :

 *Quote:*   

> [...] this flag is not considered safe for production use and not supported in any way by Gentoo.

 

Elle date de 2008, si quelqu'un a un système compilé avec ce flag ce sera intéressant d'avoir un retour =D (mais à jongler avec des tronçonneuses ...).

----------

## guilc

ça trolle régulièrement sur la ML gentoo-dev avec ce flag.

Il est plus ou moins question de le faire passer par défaut, certains disent que c'est un hack sale, et il reste certains paquets qui compilent pas avec.

Bref, c'est un peu l'histoire sans fin.

Le dernier fil en date ici : http://archives.gentoo.org/gentoo-dev/msg_4d877108b67a4161eeaa5722aee7a297.xml

----------

## Zentoo

Effectivement ca trolle beaucoup avec ce flag, néanmoins ayant fais pas mal de "gentoo ricing" c'est à dire d'optimisation sur les flags de compilation, je peux te dire que mon système est actuellement complètement compilé avec ces flags ci:

```
# grep FLAG /etc/make.conf

CFLAGS="-march=native -O3 -pipe"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

CXXFLAGS="${CFLAGS}"
```

Pas de problèmes particuliers avec cela. Si ta machine est un ancêtre, le -O3 peut ralentir la compilation. Sinon si tu veux en profiter réellement, il va te falloir tout recompiler ! (emerge -eav world)

Sinon pour revenir à ton problème initial, voilà ce que je fais pour accélerer firefox au démarrage: je nettoie les bases de données qu'il utilise à chaque fermeture pour qu'il soit rapide au lancement suivant. Tu dois pouvoir faire la même chose avec Seamonkey en rajoutant dans dans un script wrapper:

```
for x in ~/.mozilla/firefox/*.default/*.sqlite; do sqlite3 "$x" 'VACUUM;' ; done
```

Un autre truc: précharger en cache OS (mémoire) les données et/ou les binaires utiles pour ton utilisation au boot: j'utilise un script à moi pour cela.

Je le lance à partir de /etc/conf.d/local.start. Tu n'as qu'à mettre ce qut tu veux précharger dans la variable CACHEPATHS.

Par exemple tu y met "/home/*/.mozilla pour précharger la configuration de firefox.

Attention, les valeurs de la variable par défaut ici charge presque tous les binaires de ma gentoo car j'utilise un SSD et cette combine me permet de charger tous les binaires de mon système en RAM (3Go en 56s) pour rendre instantanné l'utilisation de mon desktop mais j'ai un SSD et surtout 12Go de mémoire.

```
#!/bin/bash

#

# ZenFillCacheOS.sh

#

# Fill the cache OS with files from $cachepaths 

#

CACHEPATHS="/sbin /bin /usr/bin /usr/lib* /usr/x86_64-pc-linux-gnu /usr/local"

echo "Fill cache OS with:"

for path in ${CACHEPATHS}

do

  du -sh "${path}"

  logger -t "ZenFillCacheOS" "$(du -sh ${path})"

  for file in $(find "${path}" -type f)

  do

    cat "${file}" 2>/dev/null > /dev/null

  done

done
```

----------

## Kevin57

Merci beaucoup pour ces astuces! Celle du cachepath me tente beaucoup! Si je fais précharger /usr/bin/seamonkey et /usr/lib64/seamonkey/, seamonkey devrait démarrer plus vite, non? C'est donc un script que je dois lancer comme les daemons au démarrage, avec rc-update add nom_du_script?

Le flag -O3 ne ralentira surement pas la compilation, je ne pense pas disposer d'un ancêtre (cf. signature). Mais pour profiter des LDFLAGS, je dois aussi tout recompiler?

----------

## d2_racing

Funtoo utilise depuis plusieurs mois ces LDFLAGS :

```

LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"

```

Autant en stable qu'en testing.

J'ai vu sur une mailing list que les devs de Gentoo pense les ajouter par défaut aussi.

----------

## guilc

 *d2_racing wrote:*   

> Funtoo utilise depuis plusieurs mois ces LDFLAGS :
> 
> ```
> 
> LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
> ...

 

Sur les profils des dev il y a maintenant LDFLAGS="-Wl,-O1 -Wl,--as-needed" depuis quelques jours

Sur les profils utilisateurs, c'est toujours LDFLAGS="-Wl,-O1"

----------

## d2_racing

Ouais, je sais que quand Daniel Robbins a ajouté ça sous Funtoo, Flameeyes a communiqué avec DR à ce sujet.

Ça fait très très longtemps que Flameeyes souhaite l'ajout de ce ldflags par défaut sous Gentoo.

----------

## guilc

Quant à revenir aux racines du "ricer", suite à avoir creusé les posts sur la ML, les blogs de flameeyes justement, et les pages man, je tourne avec ça comme CFLAGS depuis 1 semaine aussi :

```
LDFLAGS="-Wl,-O1,--hash-style=gnu,--as-needed,--sort-common"
```

RAS niveau fonctionnement, juste quelques paquets qui compilent en ignorant les LDFLAGS (qui fait un joli warning QA mais ça s'arrête là). Et j'ai été content d'avoir as-needed juste avant le passage de openssl 0.9.8  à 1.0.0, qui a "encore" cassé pas mal de trucs et demandé la recompil de plein de paquets. Grace à as-needed, la quantité de paquets a fondu  :Wink: 

Après, pour ce qui concerne les perfs, c'est difficile à dire.

----------

## netfab

 *guilc wrote:*   

> Quant à revenir aux racines du "ricer", suite à avoir creusé les posts sur la ML, les blogs de flameeyes justement, et les pages man, je tourne avec ça comme CFLAGS depuis 1 semaine aussi :
> 
> ```
> LDFLAGS="-Wl,-O1,--hash-style=gnu,--as-needed,--sort-common"
> ```
> ...

 

Attention : çà vient juste d'être ajouté au guide as-needed (bug #328849) :

 *Quote:*   

> 
> 
> Note: If you use more than one -Wl flag, you have to set -Wl,--as-needed separately in LDFLAGS due to libtool deplib reordering.
> 
> ```
> ...

 

----------

## Enlight

L'inconvénient d'utiliser --as-needed de manière globale c'est que c'est que ça généralise l'approche "maman je peux?" qu'on les développeurs qui codent les différentes optimisations du compilateur/assembleur/éditeur de liens. Dans 99% des cas on optimise et une fois de temps en temps ça pète tout...

Du coup il devient de la responsabilité du dev en mainstream d'explicitement dire dans son programme quand il ne faut pas utiliser les optimisations car ça va tout péter (déclarer sa variable volatile, indiquer explicitement qu'un symbole doit être visible etc...), ce qui n'est pas nécessairement évident.

L'ennui si l'on utilise globalement --as-needed c'est que l'on a plus le même périmètre de recherche de symboles que le dev en mainstream et un dlsym qui doit renvoyer un résultat donné pour lui peut renvoyer un autre symbole pour nous, voire carrément échouer. C'est en pratique très rare, mais c'est déjà arrivé.

Donc a priori, que ce soit depuis la mainstream ou que ce soit le dev de las distribution qui s'en charge, --as-needed c'est

 un flag qui devrait être géré au niveau du makefile. Mais a priori l'abomination répondant au doux nom de "libtool" est pas fan semble poser problèmes. La solution selon Ulrich Drepper : il faut se débarrasser de libtool et linker via le driver gcc.  :Smile: 

----------

