[RISOLTO] [OT] - Lentezza Firebird con ext4 lazarus / 16-Databases ---------------------------------------------------------------------- Stefano · 2014-05-04 17:59 Un saluto a tutto il forum. Anche se l'argomento non riguarda prettamente Lazarus, ritengo utile informare di problemi di enorme lentezza che si verificano utilizzando Firebird in modalità sincrona con filesystem ext4 (Linux). Non so se il problema si verifichi con altri databases oltre Firebird oppure no, non ho provato. Sembra che con filesystem ext4, con le barriere attivate (opzione di default per ext4 a partire dalla versione 2.6.30 del kernel), in modalità sincrona (ossia con le Forced Writes attivate, opzione peraltro di default per Firebird per assicurare la massima sicurezza dei dati), si verifichi una lentezza spesso inaccetabile di Firebird. Oltre ad avere constatato di persona il problema, sia nel passaggio a suo tempo alla 10.04 di Ubuntu e più recentemente alla Wheezy di Debian (le impostazioni di default hanno previsto il passaggio da ext3 a ext4), ho anche trovato diverse conferme sul web, indico alcuni links interessanti sull'argomento: http://firebird.1100200.n4.nabble.com/Performance-of-FW-databases-on- ext4-filesystem-td3775089.html http://firebird.1100200.n4.nabble.com/Firebird-terribly-slow-on- Ubuntu-10-04-ext4-td3779809.html http://www.firebirdsql.org/en/newsletter/firebird-sql-project-news--- december-29-2011-14019/#i43 http://www.ibphoenix.com/resources/documents/search/doc_26 http://www.firebirdnews.org/?p=6457 http://blog.jolexa.net/2012/02/linode-dont-use-barriers-and-ext-4/ https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Barriers_on_by_defau lt Per risolvere il fastidioso problema è possibile utilizzare una di queste soluzioni: -Utilizzare ext3 come filesystem del server invece di ext4 (opzione a mio parere consigliata, soprattutto se non si vuole gestire il db in modalità asincrona); -Disabilitare le Forced Writes del database, in questo caso il database viene gestito in modalità asincrona con elevatissimo incremento delle prestazioni, restano chiaramente i rischi della gestione asincrona, ossia che se qualcosa non dovesse andare a buon fine durante la scrittura ci sarebbero poi gravi problemi di perdite dati, quindi è raccomandata una gestione dell'hardware adeguata; -Disabilitare le barriers nel file /etc/fstab che sono abilitate di default con ext4, anche in questo caso eventuali problemi al momento della scrittura sull'HD porterebbero a gravissime perdite di dati, per cui pure in questo caso la scelta dovrebbe essere più che mai ponderata e la gestione dell'hardware dovrebbe essere anche in questo caso impeccabile da un punto di vista tecnico. Eventualmente le ultime due opzioni potrebbero anche coesistere. Personalmente preferisco la prima soluzione (ext3), a meno che a prescindere dal problema non si intenda comunque lavorare in modalità asincrona, per avere le massime prestazioni (il guadagno è veramente notevole, peraltro sia con ext3 che con ext4): in questo caso la gestione dell'hardware dovrà avvenire in maniera estremamente meticolosa con tutte le garanzie del caso, per prevenire ed evitare la possibile perdita di dati (per quanto mi riguarda, sarò di vecchio stampo, generalmente preferisco ancora la modalità sincrona visto che parliamo di server). Non forzerei quindi la disabilitazione delle Forced Writes al solo scopo di risolvere questo problema di lentezza, che può invece essere bypassato utilizzato un filesystem diverso come ext3 (al limite su una partizione). L'eventuale scelta della modalità asincrona secondo me dovrebbe essere infatti indipendente da questo problema e riguardare più in generale come si vuole l'impostazione del database (a prescindere dal problema di lentezza come detto bypassabile). Tra le ultime due soluzioni, istintivamente mi verrebbe da limitarmi alle Forced Writes lasciando abilitate le barriers, almeno eventuali problemi al momento della scrittura si ripercutono "solo" sul database e non su tutti i files dell'HD in genere, S.O. incluso. Spero che questa precisazione possa essere utile ad altri. Buona serata a tutti, Stefano