Moderators: xaviermiller, El_Goretto

Diantre, pourtant on n'est plus le 1er avril depuis un moment déjà?xkomodor wrote:Bonjour le forum,
Je me suis rendu compte que sur plusieurs machines le kernel 3.8.8 [...] avait plus que tendance à surcharger le système.
La drogue c'est mal, m'voyez?xkomodor wrote:Merci de vos retours et conseils éventuels.
Mouarf, des fois je me demande si je ne suis pas dyslexique sur mon clavier moi !El_Goretto wrote:Diantre, pourtant on n'est plus le 1er avril depuis un moment déjà?xkomodor wrote:Bonjour le forum,
Je me suis rendu compte que sur plusieurs machines le kernel 3.8.8 [...] avait plus que tendance à surcharger le système.
La drogue c'est mal, m'voyez?xkomodor wrote:Merci de vos retours et conseils éventuels.
http://kernel.org/

Code: Select all
duf@genduf ~ $ cat /proc/loadavg
0.22 0.26 0.31 1/364 7961
On est bien d'accordDuF wrote:Bonjour,
Je ne vais pas revenir sur le fait que le "load average" n'a pas d'intérêt (si tant est qu'il s'agisse du sujet), mais bon, ça peut servir comme indicateur de "changement".
On reste de toute façon dans des valeurs négligeable. Dans tous les cas, y compris pour les 0.5 de xkomodor, c'est non significatif et ce sont des valeurs où la réactivité du système n'est absolument pas impactée. En fait, je réfute le terme de système "surchargé" :pDuF wrote: Perso, en noyau 3.4.0, le "load average" indiqué avec mon i7-3770 est de :Code: Select all
duf@genduf ~ $ cat /proc/loadavg 0.22 0.26 0.31 1/364 7961
On est bien d'accord. Mais à la simple idée de faire ça, je.... rends les armesDuF wrote: Et pour identifier la raison du changement de comportement, faudrait se taper les changelog du noyau pour voir ce qui a pu bouger sur les schedulers, tous les pilotes utilisés qui touchent de près ou de loin à des I/O....
Allez, un ptit git blame des familles les gens!guilc wrote:On est bien d'accord. Mais à la simple idée de faire ça, je.... rends les armesDuF wrote: Et pour identifier la raison du changement de comportement, faudrait se taper les changelog du noyau pour voir ce qui a pu bouger sur les schedulers, tous les pilotes utilisés qui touchent de près ou de loin à des I/O....
un git bisect tu veux dire plutotkwenspc wrote:Allez, un ptit git blame des familles les gens!guilc wrote:On est bien d'accord. Mais à la simple idée de faire ça, je.... rends les armesDuF wrote: Et pour identifier la raison du changement de comportement, faudrait se taper les changelog du noyau pour voir ce qui a pu bouger sur les schedulers, tous les pilotes utilisés qui touchent de près ou de loin à des I/O....

Il me semblait que bissect fonctionnait par dichotomie, donc en coupant au milieu à chaque fois, et donc en temps logarithmique plutôt que linéaire. Si on prend 65536 commits entre deux noyaux (nombre complètement au pif), ça ne fait "que" 16 étapes. On m'aurait menti?guilc wrote: un git bisect tu veux dire plutot
Je te souhaites bien du courage, tu vas y passer du temps !
1) git bissect
2) compiler
3) rebooter
4) regarder le comportement
5) recommencer 1)
Quand tu en seras à quelques centaines de bissections, je penses que tu lâcheras l'affaire
Pour ma part je trouve l'article de wikipédia plutôt bien : http://fr.wikipedia.org/wiki/Load_averagexkomodor wrote:Salut,
Je reviens un peu sur le sujet juste pour ma culture personnelle, car il est vrai que je m'accorde à lire des chiffres sans finalement trop savoir ce qu'il se passe derrière et vu qu'on lit un peu tout et rien à ce sujet ....
Dans le cas où cette "charge" qui vous m'avez convaincu, ne peut-être que finalement insignifiante par rapport à la machine en elle-même, pourriez-vous me donner un ou deux liens qui me permettraient d'en savoir un peu plus ?
J'utilise le 3.2.5 en attendant en place du 3.3.8 sur mon portable et j'avais un peu peur de voir par exemple l'autonomie de mon x61 revue à la baisse.
Merci de votre retour.
XKomodor | Julien
PS : Il est vrai que je ne prête que peu d'intérêt à cette charge, j'utilise un ptit serveur perso sous OpenBSD qui n'arrive jamais à 0 mais plutôt à 0.20 en moyenne. Maintenant, sur ce serveur web lorsque vous avez une moyenne de 0.10 en pleine journée avec pas mal d'utilisateur et qu'au final en pleine nuit, donc peut de trafic vous le voyez à 0.50 même des fois 1.00 ca fait faire un certain stress :p
Donc pourquoi perdre son temps avec cet indicateur quand il suffit de regarder directement les "bons" indicateurs (je le mets entre guillemets car il n'y a pas de bons ou mauvais indicateurs mais il y en a qui sont plus utiles, pertinents et rapides à interpréter).→ Pour améliorer les performances: examiner le taux d'utilisation global du processeur. Minimiser si possible les I/O
Tout ça pour dire qu'il est autant important de connaître l'activité technique que fonctionnelle, car d'un point de vue technique le comportement du serveur était aberrant mais du point de vue fonctionnel il est logique et attendu. Souvent les pires dans ces cas là sont les DBAs qui veulent faire des optimisations sans comprendre le fonctionnement des applications (petit message à mes amis DBAImaginons une application qui a un serveur d'application et un serveur SQL sur la même machine physique.
On regarde l'activité système du serveur et on observe que la CPU est très très élevée, à la limite de la saturation, disons 85 points de CPU des ressources totales sur 100.
Avec plus de détail on voit que 90% du temps CPU consommé est de type wait IO et le reste principalement du user avec un peu de système.
Tout de suite c'est l'alerte, problème de performance disques, baies, san, réseau (bah oui, ça retombe toujours sur le réseau quand on trouve pas).
En fait, en regardant de plus près l'activité de la base de données, on observe qu'elle remonte de très grande quantité de données. C'est l'usage et le type de données qui veut ça. Et au final le temps CPU réellement consommé est très faible.
Mieux, on fait tourner de très violents calculs à côté et on ne sature pas la CPU, elle est juste de type différente et cela n'affecte que très faiblement l'activité de l'application.
En conclusion, cette CPU élevée de type wait IO est principalement dû au fait que les disques durs vont plus lentement que les CPUs (ah bon ?) Et donc si le traitement des données est plus rapide que la récupération des données en tant que tel, alors on a ce type de comportement, car le CPU fait son calcul et dit, j'attends les données suivantes pour travailler et se met en wait.

Effectivement et j'aurai tendance à penser que ce calcul est basé sur des choses qui bougent un peu trop d'un système à l'autre (a priori, j'avoue que j'ai lu en diagonale, là ils vont prendre en compte les évolutions liées aux schedulers) pour être pérenne (histoire d'être cohérent avec ce qui a déjà été dit plus hautEl_Goretto wrote:Tiens, je ne sais pas si ce fix est en rapport avec le sujet du thread, mais on dirait que dans le 3.5 à venir, il y ait des corrections sur le calcul du load.
https://lwn.net/Articles/506819/ :
Rewrite and fix load-avg computation

Bonjour El_Goretto,El_Goretto wrote:Ce n'est pas tout à fait les mêmes symptômes, mais il y a quelque chose qui me chagrine, sur ma machine hardened en kernel 3.4 et 3.5 (je ne sais pas si c'était le cas avant ou pas): le total de %CPU "normal" rapporté par top et htop (en haut de l'affichage) n'est pas égal au total des %CPU des tâches (chaque ligne). Et je ne parle pas de la blague du nombre de cores/machine égale à 100% ou plus, non, là, j'ai une compilation noyau avec make -j2 sur un dual core:
j'ai les 2 cores chacun à 90% de charge CPU "normale/user" (pas de nice, pas de IOWAIT, pas de etc etc...), mais les process de compilation ne référencent parfois que 20% en additionnant les % des threads cc1.
Pourtant j'ai bien un utilisateurs pouvant voir normalement tous les process/thread, et comme je le disais, il n'y a pas de charge CPU "système", que du "normal" / "user".
Vous avez observé la même chose? Ce serait dû à une spécificité du patchset hardened?