Re: Postgresql e kernel/user mode benchmark

2003-06-19 Per discussione Mattia Dongili
On 18 Jun 2003 23:41:16 +0200
Federico Di Gregorio <[EMAIL PROTECTED]> wrote:

> Il mer, 2003-06-18 alle 11:21, Marco Bodrato ha scritto:
> > On Tue, Jun 17, 2003 at 03:54:48PM +0200, Giuseppe Pagano wrote:
> > 
> > > > Credo che il fatto che che 2 istanze e 2 db perdano piu' tempo
> > > > in kernel mode sia dovuta allo scheduler del kernel che deve
> > > > switchare tra i 2 processi... mentre il fatto che il tempo in
> > > > usermode di 1 istanza e 2 db[...]
> > > macchina piu' simile a quella di produzione (biprocessore e dischi
> > > scsi), sicuramente vedro' delle differenze, ma per ora mi
> > > interessava un vostro parere per capire meglio quali parametri
> > > valutare.
> > 
> > Una sensazione... Su una macchina biprocessore, due processi
> > dovrebbero funzionare meglio. Con un processo solo l'altra CPU ti
> > serve veramente a poco, no?
> 
> per quello basta un'istanza del db comunque, visto che viene staccato
> un nuovo thread/processo per ogni connessione. comunque, consiglio

infatti dai nuovi test che ha postato non ci sono differenze

> generico, la *prima* cosa da fare e` aumentare la page-cache di
> postgres, in modo che buona parte degli accessi al disco finisca in
> ram.

potrebbe mettere i database su dischi diversi al limite (?)

-- 
mattia




Re: Postgresql e kernel/user mode benchmark

2003-06-18 Per discussione Federico Di Gregorio
Il mer, 2003-06-18 alle 11:21, Marco Bodrato ha scritto:
> On Tue, Jun 17, 2003 at 03:54:48PM +0200, Giuseppe Pagano wrote:
> 
> > > Credo che il fatto che che 2 istanze e 2 db perdano piu' tempo in kernel
> > > mode sia dovuta allo scheduler del kernel che deve switchare tra i 2
> > > processi... mentre il fatto che il tempo in usermode di 1 istanza e 2 db
> [...]
> > macchina piu' simile a quella di produzione (biprocessore e dischi
> > scsi), sicuramente vedro' delle differenze, ma per ora mi interessava un
> > vostro parere per capire meglio quali parametri valutare.
> 
> Una sensazione... Su una macchina biprocessore, due processi dovrebbero
> funzionare meglio. Con un processo solo l'altra CPU ti serve veramente a
> poco, no?

per quello basta un'istanza del db comunque, visto che viene staccato un
nuovo thread/processo per ogni connessione. comunque, consiglio
generico, la *prima* cosa da fare e` aumentare la page-cache di
postgres, in modo che buona parte degli accessi al disco finisca in ram.

utente o cpu non fa molta differenza. in genere tanto tempo cpu
significa niente dma, dischi lenti, etc. quello che conta e`,
ovviamente, il tempo totale.
 
-- 
Federico Di Gregorio
Debian GNU/Linux Developer[EMAIL PROTECTED]
INIT.D Developer   [EMAIL PROTECTED]
  Beh un bacio, se ben dato, non si rifiuta. --  




Re: Postgresql e kernel/user mode benchmark

2003-06-18 Per discussione Marco Bodrato
On Tue, Jun 17, 2003 at 03:54:48PM +0200, Giuseppe Pagano wrote:

> > Credo che il fatto che che 2 istanze e 2 db perdano piu' tempo in kernel
> > mode sia dovuta allo scheduler del kernel che deve switchare tra i 2
> > processi... mentre il fatto che il tempo in usermode di 1 istanza e 2 db
[...]
> macchina piu' simile a quella di produzione (biprocessore e dischi
> scsi), sicuramente vedro' delle differenze, ma per ora mi interessava un
> vostro parere per capire meglio quali parametri valutare.

Una sensazione... Su una macchina biprocessore, due processi dovrebbero
funzionare meglio. Con un processo solo l'altra CPU ti serve veramente a
poco, no?

Ciao,
 Marco

-- 
"Dobbiamo diffidare delle armonie che non abbiano superato un conflitto"
e.e.


pgp4dVCe9FRvT.pgp
Description: PGP signature


Re: Postgresql e kernel/user mode benchmark

2003-06-18 Per discussione Giuseppe Pagano
A chi interessa ho rieseguito le prove di prestazioni postgresql su una
o 2 istanza su una macchina scsi biprocessore inserendo anche io
controllo sull' I/O, ecco i risultati:
CPU kernel  userIO
modemode
51% 5.4511.19   226188
51% 5.1211.12   219503
53% 5.5311.31   224851
51% 4.9911.53   226188
52% 5.2411.73   230199
51% 5.5910.65   223514
51% 5.6911.02   228862
51% 5.1011.43   227525
51% 5.5811.19   231536
52% 5.4611.40   231536
5.375   11.257  226990.2 <--MEDIE

2 DB 1 ISTANZA :
52% 5.4811.19   226188
53% 5.3511.75   230199
53% 5.4411.82   234210
52% 5.0711.89   230199
51% 5.1510.84   218166
52% 4.8710.81   211481
52% 5.5111.65   232873
51% 5.3811.01   222177
52% 4.9010.76   210144
52% 5.3511.08   223514
5.250   11.280  223915.1  <--MEDIE

Ciao
Giuseppe

On Tue, 2003-06-17 at 14:17, Giuseppe Pagano wrote:
> Ciao a tutti,
> volevo chiedere agli hacker del kernel se e' meglio che un'applicativo
> risparmi CPU time in kernel mode a discapito dello user mode o
> viceversa.
> 
> Mi spiego meglio:
> Sto facendo delle prove per vedere se, quando su uno stesso server si
> realizzano 2 database di grandi dimensioni, a livello di prestazioni e'
> meglio utilizzare 1 sola istanza di postgresql o 2 istanze con 1 db su
> ogni istanza.
> 
> Per ora sto analizzando la parte relativa al carico che si produce sulla
> macchina in conseguenza di una serie di query contemporanee sui 2 db.
> 
> Non mi dilungo nella spiegazione della script di test, comunque basti
> sapere che produco 200 query mandate in background sui 2 db, prima
> creati su 2 istanze separate (porta 5432 e 5433), e poi sulla stessa
> istanza.
> 
> Ecco i risultati, qualcuno mi aiuta ad interpretarli ?
>  
> /usr/bin/time -o time.log --append -f "%P %S %U" sh test_script.sh 
> 
> Percentage  CPU-secondsCPU-seconds
> of the CPU   (in kernel mode)(in user mode)
> -- 2 istanze, 2 db 
>   19% 2.2712.12
>   18% 2.0911.98
>   19% 1.9512.18
>   19% 2.3211.90
>   19% 2.0411.85
>   18% 2.0411.39
>   18% 2.1611.72
>   19% 2.0011.72
>   20% 1.7412.55
> 
> MEDIA 2.0611.93444
> 
> -- 1 istanze, 2 db --
>   19% 1.8012.53
>   19% 1.6912.24
>   19% 1.6612.06
>   19% 1.4112.12
>   20% 1.7112.43
>   19% 1.6712.32
>   19% 1.6712.20
>   18% 1.6012.33
> 
> MEDIA 1.651   12.2787
> 
> La mia domanda principale e' perlappunto: e' meglio risparmiare CPU time
> in kernel mode e perderci in user mode (io penso di si) o viceversa ?
> 
> Ciao a tutti 
> Giuseppe
> 
> -- 
> Giuseppe Pagano
> Linux System Administrator @ Nekhem S.r.L
> http://www.nekhem.com
> [EMAIL PROTECTED]
> cell. 348.45.31.572
> fax. 011.56.35.904
-- 
Giuseppe Pagano
Linux System Administrator @ Nekhem S.r.L
http://www.nekhem.com
[EMAIL PROTECTED]
cell. 348.45.31.572
fax. 011.56.35.904





Re: Postgresql e kernel/user mode benchmark

2003-06-17 Per discussione Mattia Dongili
[...]
> > secondo me stai facendo i test sbagliati, ovvero il problema dei
> > database e' piu' facile che sia l'I/O piu' che il consumo di CPU.
> > Dovresti giocartela sul filesystem piu' che altro. 
> 
> Mmm, potresti avere ragione, pero' prima devi chiarirmi perche'
> dovrebbe esserci una differenza nell'I/O se i db sono su 2 istanze
> differenti o sulla stessa.

ah, nessuna, era una considerazione generale sulle prestazioni dei DB.
Anche se, ora che mi e' tornata la memoria, ho visto piu' DB schiattare
sul tempo in CPU che su quello in I/O... ma il problema era del database
fatto coi piedi, non dell'hardware sottodimensionato. 

Magari il fatto che siano 2 processi a dover scrivere/leggere peggiora
l'I/O ?

> > Credo che il fatto che che 2 istanze e 2 db perdano piu' tempo in
> > kernel mode sia dovuta allo scheduler del kernel che deve switchare
> > tra i 2 processi... mentre il fatto che il tempo in usermode di 1
> > istanza e 2 db sia piu' alto e' per il sovraccarico di PG.
> 
> Questa analisi la condivido.
> 
[...]
> Non ho postato i dati della macchina per non appesantire troppo la
> mail. Per ora le prove le faccio sul mio portatile, tra poco le faro'

figurati, pensavo fosse un problema pu' specifico e non puramente
accademico (da qui anche l'affermazione sull'I/O di prima) 

[...]
> Grazie ancora per gli spunti che mi hai dato, inseriro' la lettura
> dell'I/O nel comando time, tanto non mi costa niente farlo.

poi posta i risultati, mi interessa :)

In generale comunque un processo bloccante in kernellandia e'
_veramente_ bloccante, in userlandia ci si puo' lavorare per lo meno.
c'e' da dire anche che esistono un popo' di patch per il kernel che
dovrebbero rendere piu' reattiva la macchina in casi estremi, ma non
sono mai andato a fondo sulla questione e potrei spararle grosse anche
su questo... preemtion, uml...

aloha
-- 
mattia




Re: Postgresql e kernel/user mode benchmark

2003-06-17 Per discussione Giuseppe Pagano
Innanzitutto grazie per la risposta.

On Tue, 2003-06-17 at 15:21, Mattia Dongili wrote:
> Disclaimer: non sono un kernel hacker e molto di quello che sto per
> scrivere potrebbero essere cavolate, 
Non e' un problema, io l'ho scritto solo per attirare l'attenzione dei
piu esperti :)

> pero' parliamone :)

Certo.

> secondo me stai facendo i test sbagliati, ovvero il problema dei
> database e' piu' facile che sia l'I/O piu' che il consumo di CPU.
> Dovresti giocartela sul filesystem piu' che altro. 

Mmm, potresti avere ragione, pero' prima devi chiarirmi perche' dovrebbe
esserci una differenza nell'I/O se i db sono su 2 istanze differenti o
sulla stessa.

> 
> Credo che il fatto che che 2 istanze e 2 db perdano piu' tempo in kernel
> mode sia dovuta allo scheduler del kernel che deve switchare tra i 2
> processi... mentre il fatto che il tempo in usermode di 1 istanza e 2 db
> sia piu' alto e' per il sovraccarico di PG.

Questa analisi la condivido.

> 
> Tantopiu' che la differenza sul totale non e' apprezzabile e l'utilizzo
> di CPU lo stesso. Potresti provare ad alzare i numeri e vedere se le
> differenze sono piu' evidenti, tipo 5istanze/5db vs. 1istanza/5db
> NB: un po' di informazioni in piu' sulla macchina/kernel/FS/dischi non
> guasterebbero (...credo)

Non l'ho fatto perche' non mi interessa avere una legge generale ma una
specifica della situazione nella quale andro' a lavorare.

Non ho postato i dati della macchina per non appesantire troppo la mail.
Per ora le prove le faccio sul mio portatile, tra poco le faro' su una
macchina piu' simile a quella di produzione (biprocessore e dischi
scsi), sicuramente vedro' delle differenze, ma per ora mi interessava un
vostro parere per capire meglio quali parametri valutare.

> 
> boh...
Grazie ancora per gli spunti che mi hai dato, inseriro' la lettura
dell'I/O nel comando time, tanto non mi costa niente farlo.

Ciao
Giuseppe

> -- 
> mattia
-- 
Giuseppe Pagano
Linux System Administrator @ Nekhem S.r.L
http://www.nekhem.com
[EMAIL PROTECTED]
cell. 348.45.31.572
fax. 011.56.35.904





Re: Postgresql e kernel/user mode benchmark

2003-06-17 Per discussione Mattia Dongili
Disclaimer: non sono un kernel hacker e molto di quello che sto per
scrivere potrebbero essere cavolate, pero' parliamone :)

> volevo chiedere agli hacker del kernel se e' meglio che un'applicativo
> risparmi CPU time in kernel mode a discapito dello user mode o
> viceversa.
[...]
> /usr/bin/time -o time.log --append -f "%P %S %U" sh test_script.sh 
> 
> Percentage  CPU-secondsCPU-seconds
> of the CPU   (in kernel mode)(in user mode)
> -- 2 istanze, 2 db 
[...]
> MEDIA 2.0611.93444
> 
> -- 1 istanze, 2 db --
[...]
> MEDIA 1.651   12.2787
> 
> La mia domanda principale e' perlappunto: e' meglio risparmiare CPU
> time in kernel mode e perderci in user mode (io penso di si) o
> viceversa ?

secondo me stai facendo i test sbagliati, ovvero il problema dei
database e' piu' facile che sia l'I/O piu' che il consumo di CPU.
Dovresti giocartela sul filesystem piu' che altro. 

Credo che il fatto che che 2 istanze e 2 db perdano piu' tempo in kernel
mode sia dovuta allo scheduler del kernel che deve switchare tra i 2
processi... mentre il fatto che il tempo in usermode di 1 istanza e 2 db
sia piu' alto e' per il sovraccarico di PG.

Tantopiu' che la differenza sul totale non e' apprezzabile e l'utilizzo
di CPU lo stesso. Potresti provare ad alzare i numeri e vedere se le
differenze sono piu' evidenti, tipo 5istanze/5db vs. 1istanza/5db

NB: un po' di informazioni in piu' sulla macchina/kernel/FS/dischi non
guasterebbero (...credo)

boh...
-- 
mattia




Re: Postgresql e kernel/user mode benchmark

2003-06-17 Per discussione Giuseppe Pagano
On Tue, 2003-06-17 at 14:17, Giuseppe Pagano wrote:

> Per ora sto analizzando la parte relativa al carico che si produce sulla
> macchina in conseguenza di una serie di query contemporanee sui 2 db.

Dimenticavo: 
non mi interessa valutare lo spazio occupato in memoria dalle 2 soluzioni visto 
che il server in oggetto ha il classico giga di ram che attualmente e' 
utilizzata solo in minima parte

Ciao
Giuseppe