Re: Postgresql e kernel/user mode benchmark
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
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
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
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
[...] > > 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
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
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
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