Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mesure de performance sous linux

13 réponses
Avatar
c-note
Bonjour a tous,

une quetion simple a propos de la commande time et de l'utilisation CPU
sous linux. Je mesure le temps necessaire a la sauvegarde d'une base de
donnée de 7G.

[postgres@raid pgsql]$ /usr/bin/time -f "pourcent CPU %P\n,\nreal %E
,\nuser %U,\nsys %S" pg_dump base_bench > /var/tmp/base_bench.dump

pourcent 6,13%
real 17m28.692s
user 0m34.230s
sys 0m30.060s


D'apres les résultats ci-dessus, le programme pg_dump a passé environ 15
minute a rien foutre ou a faire autre chose (bizare y'a rien d'autre qui
tourne sur la becane)

Cela signifie aussi que mon job à pris en moyenne 6.13% du CPU. Pas
vraiment efficace. Le probleme viendrait t-il de postgres ?

Comment expliquer cela quand on sais qu'un gzip /var/tmp/base_bench.dump
prend a peu pres 95% du CPU.

De plus, je tourne a 200MB/s en ecriture sur disque donc le probleme ne
vient pas de la.

Merci de vos reponses

10 réponses

1 2
Avatar
Mihamina (R12y) Rakotomandimby
c-note - <f07tra$i84$ :

Bonjour a tous,


Bonjour,

une quetion simple a propos de la commande time et de l'utilisation CPU
sous linux. Je mesure le temps necessaire a la sauvegarde d'une base de
donnée de 7G.


G quoi? Il y a un facteur de 8.

[ pgsql]$ /usr/bin/time -f "pourcent CPU %Pn,nreal %E
,nuser %U,nsys %S" pg_dump base_bench > /var/tmp/base_bench.dump

pourcent 6,13%
real 17m28.692s
user 0m34.230s
sys 0m30.060s


D'apres les résultats ci-dessus, le programme pg_dump a passé environ 15
minute a rien foutre ou a faire autre chose (bizare y'a rien d'autre qui
tourne sur la becane)


Que fait exactement pg_dump?
N'est-ce pas un wrapper d'autres commandes/utilitaires?
Je n'ai pas lu le man avec rigueur, mais si je fait un script "toto" qui
copie de gros fichiers et utilise donc "cp", eh bien "toto" ne fout rien en
attendant que "cp" finisse. Non?

Cela signifie aussi que mon job à pris en moyenne 6.13% du CPU. Pas
vraiment efficace.


En meme temps si un dump de database me prend 99%, je m'inquieterai aussi.

Le probleme viendrait t-il de postgres ?


Pas forcément.

Comment expliquer cela quand on sais qu'un gzip /var/tmp/base_bench.dump
prend a peu pres 95% du CPU.


Comparer une compression (qui necessite du calcul) et un dump (qui
necessite... de copier) n'est pas vraiment judicieux.

De plus, je tourne a 200MB/s en ecriture sur disque donc le probleme ne
vient pas de la.


Tu l'a mesuré en meme temps que tu faisai le dump?

Merci de vos reponses


De rien.

Avatar
Nicolas George
c-note wrote in message <f07tra$i84$:
D'apres les résultats ci-dessus, le programme pg_dump a passé environ 15
minute a rien foutre ou a faire autre chose (bizare y'a rien d'autre qui
tourne sur la becane)


Il a passé environ 15 minutes à attendre que ton disque dur positionne sa
tête de lecture et fasse des transferts DMA.

Tu peux essayer de désactiver le DMA sur le disque dur : ça ira au moins
quatre fois moins vite, mais tu seras à 100% de CPU. Quelque part, je
soupçonne que ce n'est pas ce que tu veux.

Avatar
c-note
c-note wrote in message <f07tra$i84$:
D'apres les résultats ci-dessus, le programme pg_dump a passé environ 15
minute a rien foutre ou a faire autre chose (bizare y'a rien d'autre qui
tourne sur la becane)


Il a passé environ 15 minutes à attendre que ton disque dur positionne sa
tête de lecture et fasse des transferts DMA.

Tu peux essayer de désactiver le DMA sur le disque dur : ça ira au moins
quatre fois moins vite, mais tu seras à 100% de CPU. Quelque part, je
soupçonne que ce n'est pas ce que tu veux.



En fait, pg_dump prend 5% de CPU et postmaster 95%. pg_dump delegue
(socket ou fork) le travail a la commande postmaster.

Par contre, y aurait-il un moyen de forcer pg_dump (ou plutot postmaster
) a utiliser les 4 CPUs.

CPU0 states: 1.1% user, 0.4% system, 0.0% nice, 98.0% idle
CPU1 states: 51.1% user, 4.2% system, 0.0% nice, 44.2% idle
CPU2 states: 48.4% user, 1.4% system, 0.0% nice, 49.2% idle
CPU3 states: 0.0% user, 0.2% system, 0.0% nice, 99.3% idle

Merci de vos reponses.


Avatar
Mihamina Rakotomandimby (R12y)
c-note wrote:

Par contre, y aurait-il un moyen de forcer pg_dump (ou plutot postmaster
) a utiliser les 4 CPUs.


Je _pense_ que la répartition sur les processeurs est du ressort de l'OS.
De plus, toutes les taches ne sont pas forément "repartissables".
Par contre, tu peux monter la priorité de ta tache avec "nice".

Avatar
c-note
c-note wrote:

Par contre, y aurait-il un moyen de forcer pg_dump (ou plutot postmaster
) a utiliser les 4 CPUs.


Je _pense_ que la répartition sur les processeurs est du ressort de l'OS.
De plus, toutes les taches ne sont pas forément "repartissables".
Par contre, tu peux monter la priorité de ta tache avec "nice".


l' OS attribue une priorité forte au process postmaster (19/20 je
crois). Donc la j'aurais du mal a optimiser plus :-)

En gros mon probleme est le suibant :

sur un Bi Bi-Xeon (4 CPU) lancer une compression (ou tout autre effort
CPU) prend le meme temps (a peu pres) que lorsque on lance 4.

En effet, une compression (ou un postmaster) sollicite un CPU.

Donc j'en reviens a la case depart : Y a t-il un moyen de forker le
postmaster en 4 ?

Merci


Avatar
octane
On 20 avr, 11:00, "Mihamina Rakotomandimby (R12y)"
wrote:
Par contre, y aurait-il un moyen de forcer pg_dump (ou plutot postmaster
) a utiliser les 4 CPUs.


Je _pense_ que la répartition sur les processeurs est du ressort de l'O S.
De plus, toutes les taches ne sont pas forément "repartissables".
Par contre, tu peux monter la priorité de ta tache avec "nice".


tu peux essayer taskset pour fixer un process sur un CPU. Dans
certain cas les process tournent plus vite, le scheduler ne perd pas
son temps a changer le contexte d'un CPU a un autre.

Ensuite, si un programme n'est pas prévu pour tourner sur
du multiCPU, je ne pense pas que l'OS pourra le faire.


Avatar
Mihamina Rakotomandimby (R12y)
c-note wrote:

l' OS attribue une priorité forte au process postmaster (19/20 je
crois). Donc la j'aurais du mal a optimiser plus


Tu n'a pas lu le man. Tu devrais.

[...]
DESCRIPTION
Run COMMAND with an adjusted niceness,
which affects process scheduling.
With no COMMAND, print the current niceness.
Nicenesses range from -20 (most favorable scheduling)
to 19 (least favorable).
[...]

Si il est à 19, alors c'est une priorité _faible_.
Si "postmaster" n'a pas été prévu pour tourner sur plusieurs CPU, alors ce
n'est pas jouable.
En meme temps, que fait postmaster? Il envoie des mails?

Avatar
c-note
c-note wrote:

l' OS attribue une priorité forte au process postmaster (19/20 je
crois). Donc la j'aurais du mal a optimiser plus


Tu n'a pas lu le man. Tu devrais.

[...]
DESCRIPTION
Run COMMAND with an adjusted niceness,
which affects process scheduling.
With no COMMAND, print the current niceness.
Nicenesses range from -20 (most favorable scheduling)
to 19 (least favorable).
[...]

Si il est à 19, alors c'est une priorité _faible_.
J'ai écrit 19/20 (en reference a ma moyenne au bac :-) il fallait lire

-19/-20. Mon process tourne bien avec une forte priorité.

Si "postmaster" n'a pas été prévu pour tourner sur plusieurs CPU, alors ce
n'est pas jouable.
En meme temps, que fait postmaster? Il envoie des mails?
Non postmaster n'envoie pas de mail. Je te renvoie a "man postmaster" :-)



Avatar
Mihamina Rakotomandimby (R12y)
c-note wrote:

Si il est à 19, alors c'est une priorité _faible_.
J'ai écrit 19/20 (en reference a ma moyenne au bac :-) il fallait lire

-19/-20.

Si "postmaster" n'a pas été prévu pour tourner sur plusieurs CPU, alors
ce n'est pas jouable.
En meme temps, que fait postmaster? Il envoie des mails?
Non postmaster n'envoie pas de mail. Je te renvoie a "man postmaster" :-)



:~$ man postmaster
No manual entry for postmaster
:~$ apt-cache search postmaster

Et une recherche sur google ne me donne rien.


Avatar
c-note
c-note wrote:

Si il est à 19, alors c'est une priorité _faible_.
J'ai écrit 19/20 (en reference a ma moyenne au bac :-) il fallait lire

-19/-20.

Si "postmaster" n'a pas été prévu pour tourner sur plusieurs CPU, alors
ce n'est pas jouable.
En meme temps, que fait postmaster? Il envoie des mails?
Non postmaster n'envoie pas de mail. Je te renvoie a "man postmaster" :-)



:~$ man postmaster
No manual entry for postmaster
:~$ apt-cache search postmaster

Et une recherche sur google ne me donne rien.



postmaster est inclus dans PostgreSQL

man postmaster

postmaster is the PostgreSQL multiuser database server. In order for a
client application to access a database it connects (over a network or
locally) to a running postmaster. The postmaster then starts a separate
server process (``postgres(1)'') to handle the connection. The postmas-
ter also manages the communication among server processes.

bla bla bla

apt-cache search postgres devrait te renvoyer tous un tas de paquets



1 2