[gull] ralentissement

cedric briner briner at infomaniak.ch
Wed Dec 20 16:13:17 CET 2006


> je publie ici, les echanges avec Daniel Cordey, la suite a est la

oummpf ! ca fait bcp d'infos a digerer d'un seul coup  :)

 > vmstat :
 >
 >     - Le CPU est utilise a 100% (- 2/3 % de temps en temps). Un CPU 
plus rapide
 >     aiderait
 >
 >     - 2 a trois process se partagent le CPU en permanence. Le minimum 
etant 2
 >
 >     - Memoire... suffisante, pas de swapping, assez de buffer-cache, etc.

qu'est-ce que le buffer-cache compare au cache

 >     - bo/bi tres faible, donc pas d'activite de paging significative. 
C'est meme     bas.

donc faible activite du HD
 >
 >     - Niveau d'interruption tres tres normal...
 >
 >     - Context-switch... anormlement eleve ! Pourquoi ? Parcequ'il n'y 
a pas     d'activite I/O... seulement du CPU. Or, un activite I/O 
impliquerait un
 >     nombre d'interruptions beaucoup plus eleve. Donc, il y a des CS 
    alors que les process sont CPU bon, et sans paging...

il faut que j'en parle pour mieux comprendre:

Voici une liste par ordre croissant des rapidites d'acces des e/s :
  - acces hd :simple ou swap (acces de la memoire mise sur le swap)
  - ram :
  - cache : la memoire la plus proche du cpu (carrement dans chipset du cpu)

donc dans mon cas, l'application psfm.exe utilise bien plus de memoire 
que ce que le cache du CPU en comporte.

Et lorsque, l'ordonnanceur (scheduler) passe d'une application a 
l'autre, l'application lorsqu'elle se charge fait plein de miss-cache 
(comptabilise comme user-time :( ). Ce qui fait que l'ordonnanceur ne 
laisse pas assez de temps a l'application interactive pour sembler 
reagir rapidement.

Donc dans mon cas le probleme vient du fait que les applications passent 
trop de temps a charger le cache sans laisser a l'une comme a l'autre le 
  temps de s'etablir.

 >
 > Mon vieux, je crois que tu es dans une situation de cache-trashing ! 
Le process 1 effectue ses operations et load des lignes de cache CPU, 
rapidement, il arrive au bout de la cache... Il genere donc un 
cache-miss, puis un autre, puis un autre... il se trouve rapidement mis 
de cote par le scheduler, un autre process arrive, cherche a remplir la 
cache avec ses donnees, genere des cache-miss... effectue une operation 
I/O, engendrant un CS... autre process, meme chose... puis re-procees 1, 
qui continue son calcul, genere des cache-miss, etc.
 >
 > Ce qui fait que les CPUs passent leur temps a avoir des cache-miss et 
ne beneficient donc pas de l'avantage du cache du CPU. Les process en 
cache-miss comptabilisent quand meme leur temp d'acces memoire comme 
'user time' et non comme systeme lorsque des donnees sont lues du 
buffer-cache du file system. Les process sont donc interrompus toutes 
les 300 musec a 1 ms. C'est une valeur beaucoup trop elevee pour un 
environementg CPU bound.
 > Comment s'en sortit ? D'abord, ne pas jouer avec nice... je trouve 
que ca ne sert a rien, si ce n'est rendre les choses plus compliquees. 
Ne surtout rien faire pour augmenter le niveau de context switch; ne pas 
reduire la valeur de 10ms pour le scheduling... ca ne fait qu'amlifier 
le probleme.
 > Le probleme du cache-thrashing est insoluble et ingerable. D'abord, 
il te suffit d'une cacahouette pour passer de 'tout-va-bien' a 'c;est 
l'horreur'. C'est un 'coude' et il n'ya pas de degradation lente. Le 
seul moyen etant de separer les process sur des CPUs differents. 
Peut-etre qu'un systeme dual-cpu apporterait une bouffe d'air, mais on 
aurait toujours l'epee de Damocles concernant le probleme de 
cache-synchronisation entre les deux CPUs. Surtout pas de dual-core... 
inutile... amoins d'avour une augmentation massive de cache CPU par 
rappport a l'existant... Autre solution, un CPU avec le 
double/triple/quadruple de CPU cache... Mais, le mieux est de mettre les 
process sur des machines separees...


ok je garde ca comme info


Est-ce que la solution qui peut etre envisagee est de reecrire le 
programme de calcul de fft de maniere a ce qu'elle travaille par partie 
et qu'elle n'utilise pas tout le cache et qu'elle en laisse pour les 
autres appli.

Ced.
P.-S. Merci je viens d'apprendre un peu trop de chose selon moi
P.-S2. Je te propose de poster ce que tu viens d'ecrire sur le gull, ce 
a quoi je repondrai par le meme mail



-- 

Cedric BRINER
71 rue des Truffes |mel briner at infomaniak.ch
F-01710 Thoiry     |tel::portable +41(0)78/665-9701
                    |tel::maison   +33(0)450/41-1240
                    |tel::travail  +41(0)22/379-2356



More information about the gull mailing list