<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/dev/random &#187; ottimizzazione</title>
	<atom:link href="http://alex.amiran.it/tag/ottimizzazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://alex.amiran.it</link>
	<description></description>
	<lastBuildDate>Sat, 14 Aug 2010 08:14:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<image>
<link>http://alex.amiran.it</link>
  <url>http://alex.amiran.it/wp-content/themes/shu/img/favicon.png</url>
  <title>/dev/random</title>
</image>
		<item>
		<title>Primi test sull&#8217;Eee 900</title>
		<link>http://alex.amiran.it/20080615/primi-test-sulleee-900/</link>
		<comments>http://alex.amiran.it/20080615/primi-test-sulleee-900/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 11:00:09 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[asus]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[subnotebook]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20080615/primi-test-sulleee-900/</guid>
		<description><![CDATA[Prima ancora di iniziare a usarlo, ho iniziato i benchmark. Magari non sono del tutto normale, ma avevo già provato la Xandros per qualche ora sull&#8217;Eee 701 di un amico, quindi prima ancora di acquistare l&#8217;Eee avevo già decise che ci avrei installato Debian. Avevo quindi bisogno di sapere le prestazioni del sistema originale, in [...]]]></description>
			<content:encoded><![CDATA[<p class="caption"     style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;font-style: italic; padding: 0 1em;font-style: italic; padding: 0 1em;">Prima ancora di iniziare a usarlo, ho iniziato i benchmark.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Magari non sono del tutto normale, ma avevo già provato la Xandros per qualche ora sull&#8217;Eee 701 di un amico, quindi prima ancora di acquistare l&#8217;Eee avevo già decise che ci avrei installato Debian. Avevo quindi bisogno di sapere le prestazioni del sistema originale, in modo da valutare se con una Debian ottimizzata &#8220;a mano&#8221; le prestazioni sarebbero state migliori o peggiori.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Cronometro alla mano (quello incluso nel cellulare&#8230;) ho iniziato a misurare un po&#8217; di tempi. Non saranno precisi al millesimo di secondo, ma mi servono soprattutto per avere un&#8217;idea di massima. Vediamoli.<span id="more-146" ></span></p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Boot e shutdown</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ho cronometrato 4-5 volte il tempo di boot, e i sisultati sono stati più o meno simili: circa 27 secondi dalla pressione del tasto di accensione all&#8217;apparizione del desktop completo di applet e icone della tab &#8220;Internet&#8221;. La spia dell&#8217;SSD lampeggia ancora un paio di volte in seguito, ma non ho capito ancora perché. Probabilmente precarica qualche libreria in RAM.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Lo shutdown impiega tra i 5 e i 6 secondi, dalla pressione sul tasto &#8220;OK&#8221; del requester, fino al completo spegnimento dell&#8217;ultimo LED sul frontale.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Qui devo fare una piccola critica alla Xandros, anche se credo sia dovuta all&#8217;indirizzo &#8220;utontesco&#8221; di questa versione. Per spegnere l&#8217;Eee bisogna premere il tasto di accensione (o l&#8217;apposita iconcina rossa in basso a destra), appare un requester che chiede se attivare il task manager, andare in standby, riavviare o chiudere la sessione. Premendo &#8220;chiudi sessione&#8221; appare un ulteriore requester che chiede conferma. Tre click per spegnere&#8230; Avrei preferito che il secondo requester di conferma non ci fosse stato.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Pochi minuti fa ho aggiornato il BIOS alla nuova versione 0601, e ho ripetuto i test. Nessun cambiamento significativo. Poi ho visto un&#8217;opzione nel BIOS di nome &#8220;Boot Booster&#8221;, disattivata di default. Ho fatto un giro sui forum di eeeuser.com per vedere a cosa servisse, ed ho scoperto che attivandola il BIOS si tiene una cache dei dispositivi rilevati al boot, quasi azzerando il tempo del rilevamento effettuato dal BIOS dopo la prima accensione.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questa opzione sembra dia problemi con Windows XP, probabilmente perché questo S.O. si appoggia molto al BIOS per rilevare le periferiche, mentre non ho trovato segnalazioni per quanto riguarda Linux. Quindi l&#8217;ho attivata!</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Al primo boot, naturalmente, nessuna differenza rispetto a prima, ma al secondo la schermata del BIOS è stata praticamente invisibile (occhio a premere F2 velocemente, se vi serve entrarci!) ed è apparsa subito quella di boot di Xandros. Il tempo di boot è sceso a 20 secondi a batteria e a 15 secondi con alimentazione collegata, immagino che Linux sia configurato per andare in modalità risparmio energetico più spinto quando si utilizza la batteria.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Non ho rilevato problemi di nessun tipo: le schede SD e le memory card USB vengono rilevate, ed anche l&#8217;indicatore della batteria funziona correttamente. Probabilmente perché la prima cosa che fa Linux dopo il boot è ignorare il BIOS e rifare tutto da solo.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Applicazioni</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Un po&#8217; di tempi per il caricamento delle applicazioni, rilevati con alimentatore scollegato, per simulare le condizioni di mobilità.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Firefox si carica in 4 secondi. Openoffice Writer in 9 secondi. Acrobat in 4 secondi. Thunderbird in circa 6 secondi. SMPlayer in 2 secondi. Il resto solitamente in 2 secondi o meno.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Memoria</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">A sistema appena avviato la memoria occupata è di circa 170 MB, ma solo 90 sono di applicazioni (tra cui il terminale), mentre oltre 80 sono di cache.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Tra le applicazioni caricate ci sono IceWM (circa 5.5 MB) come Window Manager, AsusLauncher (13.5 MB) per la gestione del desktop, diverse applet di monitoring (7 MB circa l&#8217;una) per un totale di circa 45 MB e alcuni servizi in background, tra cui CUPS, Samba e, naturalmente, udev e X.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per quanto riguarda le SSD interne, quella da 4 GB è riservata al sistema ed è partizionata in modo un po&#8217; particolare con UnionFS, così da poter ripristinare le impostazioni di fabbrica senza formattare, e quella da 16 GB è montata sotto /home.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">1.2 GB liberi sulla root e 14.5 sulla /home.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Batteria</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma veniamo alla parte interessante. <img src="http://alex.amiran.it/wp-includes/images/smilies/icon_smile.gif"  alt=":)"  class="wp-smiley"   style="border: 0;"/> </p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ho fatto un primo test di durata della batteria. Non molto scientifico e non assolutamente affidabile, ma che può dare un&#8217;idea delle reali condizioni di utilizzo. Il test è stato eseguito con il BIOS originale (0501), quindi senza i nuovi tweak per aumentare la durata. Nei prossimi giorni farò dei test col nuovo BIOS.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La luminosità dello schermo è stata impostata al massimo, lo screensaver disattivato, il WiFi attivato e collegato all&#8217;access point e quindi ad Internet per tutto il tempo. Per la prima ora il segnale WiFi era all&#8217;80% (ma secondo me era un po&#8217; ottimistico, visto che la velocità non era granché), al piano di sotto (l&#8217;AP è al piano di sopra), in linea d&#8217;aria a circa 8-10 metri dall&#8217;AP (ma con un pavimento e un muro in mezzo), mentre in seguito era al 100% (a 4-6 m dall&#8217;AP, sullo stesso piano, con solo un muro in mezzo).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Dopo mezz&#8217;ora la batteria segnava già 80%. Dopo un&#8217;ora 70%. In questo periodo ho visualizzato continuamente video su Youtube. Poi per mezz&#8217;ora ho giocato a Tuxracer. Al termine la batteria segnava 60%. A questo punto l&#8217;ho spento (dovevo uscire&#8230;).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Alla riaccensione, dopo poco la batteria è scesa al 50%. Visitato il sito delle webradio (il link è già inserito tra i bookmarks), attivato Radio Deejay e provate alcune applicazioni con la musica in sottofondo, tra cui anche Youtube, di cui non si sentiva l&#8217;audio. Probabilmente i due plugin, flash e mplayer, bloccano la scheda audio, quindi si possono usare solo uno alla volta. Ho continuato così per circa mezz&#8217;ora, quindi ho spento, con la batteria al 40%. Totale finora: 2 ore.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Riacceso dopo un&#8217;oretta, la batteria indicava ancora 40%. Mi sono ricollegato alle webradio ed attivato Deejay, ancora un po&#8217; di Youtube e di navigazione generica. Ho aperto OOo e scritto un po&#8217; di righe di prova (il correttore ortografico era attivo). Alla seconda ora e mezza la batteria è scesa al 20% e il led relativo ha iniziato a lampeggiare arancione. Intorno alle 2 ore e 45 è apparso un requester che mi avvisava che entro 4 minuti il computer si sarebbe spento, e di salvare tutti i dati o di collegare l&#8217;alimentazione.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Naturalmente l&#8217;ho lasciato &#8220;soffrire&#8221; e, dopo 2 ore, 52 minuti e 30 secondi, è partita la procedura di shutdown.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Devo dire che sono rimasto parecchio soddisfatto del risultato. Quasi tre ore di autonomia con il WiFi sempre attivo, con decoding di video quasi continuo, con mezz&#8217;ora di grafica 3D a dettagli molto alti (a proposito, se vi interessa, Tuxracer faceva 8-12 fps con le ombre attive e 12-15 senza ombre, ma disattivando il conteggio degli fps mi è sembrato più fluido) ed altre applicazioni usate in contemporanea, tra cui anche la webcam per una decina di minuti.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Non faccio spesso questo uso del notebook. Per la maggior parte del tempo scrivo o leggo, ma non guardo quasi mai video e raramente ascolto musica, quindi prevedo che per il mio uso la durata sarà molto maggiore.<br/>
Purtroppo il geek dentro di me ha insistito per aggiornare il firmware prima di fare un test senza WiFi e con luminosità abbassata, soprattutto perché non avrei saputo cosa fare per tre ore senza un collegamento a Internet. Inizierò a sfruttarlo davvero, principalmente per scrivere e programmare, solo dopo aver installato Debian e tutto il software che mi serve (Abiword, Geany, Apache, MySQL, PostgreSQL, ecc.).</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Lo schermo</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Una nota riguardo la luminosità dello schermo: non c&#8217;è differenza sostanziale tra tenerla al 50% e al 100%, e anche al minimo lo schermo è leggibilissimo, anche se alcuni potrebbero trovarlo un po&#8217; troppo scuro. Già al 30-35% comunque è quasi come a luminosità piena. Magari non potrete farci grafica professionale (siete pazzi??), ma la resa dei colori è, secondo me, molto buona.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Altre informazioni alla prossima puntata!</p>
<hr />
<p><small>© Alex for <a href="http://alex.amiran.it">/dev/random</a>, 2008. |
<a href="http://alex.amiran.it/20080615/primi-test-sulleee-900/">Permalink</a> |
<a href="http://alex.amiran.it/20080615/primi-test-sulleee-900/#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://alex.amiran.it/20080615/primi-test-sulleee-900/&title=Primi test sull&#8217;Eee 900">del.icio.us</a>
<br/>
Post tags: <a href="http://alex.amiran.it/tag/asus/" rel="tag">asus</a>, <a href="http://alex.amiran.it/tag/linux/" rel="tag">Linux</a>, <a href="http://alex.amiran.it/tag/ottimizzazione/" rel="tag">ottimizzazione</a>, <a href="http://alex.amiran.it/tag/subnotebook/" rel="tag">subnotebook</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20080615/primi-test-sulleee-900/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi core e programmazione concorrente</title>
		<link>http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/</link>
		<comments>http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 16:45:35 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[ottimizzazione]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/</guid>
		<description><![CDATA[Bisogna adeguarsi al mondo che cambia&#8230; Qualche giorno fa Donald Knuth, uno dei mostri sacri della programmazione, autore di vari libri della serie Art of Computer Programming, ha rilasciato un&#8217;intervista a InformIT in cui, tra le altre cose, esprime un parere estremamente negativo sulla attuale tendenza dei produttori hardware verso le architetture multi-core. Il suo [...]]]></description>
			<content:encoded><![CDATA[<p class="caption"     style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;font-style: italic; padding: 0 1em;font-style: italic; padding: 0 1em;">Bisogna adeguarsi al mondo che cambia&#8230;</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Qualche giorno fa Donald Knuth, uno dei mostri sacri della programmazione, autore di vari libri della serie Art of Computer Programming, ha rilasciato <a href="http://www.informit.com/articles/article.aspx?p=1193856"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">un&#8217;intervista a InformIT</a> in cui, tra le altre cose, esprime un parere estremamente negativo sulla attuale tendenza dei produttori hardware verso le architetture multi-core.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Il suo pensiero si può riassumere più o meno con: i produttori hardware non sanno più come migliorare le prestazioni dei loro chip, quindi hanno riciclato l&#8217;idea del multiprocessing, mantenendo le prestazioni fisse (o inferiori) su un singolo core, e mettendo diversi core per poter dire che la CPU è più veloce. In questo modo fanno ricadere la &#8220;colpa&#8221; nel mancato rispetto della legge di Moore (il raddoppio della potenza di elaborazione ogni 18 mesi) sui programmatori, dicendo che non sono in grado di scrivere software adatto alle nuove architetture.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Io, come diceva un saggio, sono &#8220;completamente d&#8217;accordo a metà col mister&#8221;.<span id="more-112" ></span></p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Il problema hardware</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Tutto si riconduce alla sostanziale stagnazione delle prestazioni delle CPU single-core da qualche anno a questa parte. Si sono raggiunte miniaturizzazioni oltre le quali si rischia di creare corto-circuiti tra i componenti, e frequenze oltre le quali si rischia di generare interferenze tra le piste o, peggio, surriscaldamenti e consumi sproporzionati, che possono portare la CPU a fondere o a esplodere letteralmente in mancanza di sistemi di raffreddamento che sono sempre più esagerati (dai ventoloni da 6&#8243; a 5-6000 giri/minuto a sistemi di raffreddamento a liquido o a celle di Peltier).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Semplicemente sembra che la tecnologia abbia quasi raggiunto il suo limite e, a meno di un &#8220;breakthru&#8221; nei metodi costruttivi, che comunque molti stanno cercando nel campo ottico o quantistico, sarà difficile spremere ulteriore potenza ai chip.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La soluzione, quindi, è stata quella di riciclare la vecchia idea del multi-processore, ma ottimizzandola: si mettono più processori sullo stesso chip, in modo da non occupare il bus principale di sistema durante le sincronizzazioni tra core, che quindi rimane libero per i trasferimenti da e per la RAM e il resto del sistema. Sono ormai diffusissimi i dual core, e si vedono tri-core, quad-core e anche chip a 8 core.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Il risultato, indubbiamente, è quello di raddoppiare, triplicare, quadruplicare o ottuplicare la &#8220;potenza&#8221; disponibile.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Il problema software</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Dal punto di vista software le cose non sono così semplici, purtroppo.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Il primo problema è quello a carico del Sistema Operativo, che deve garantire una certa sicurezza all&#8217;utente: che i suoi dati siano integri. In un&#8217;architettura multiprocessore (o multi-core, che è praticamente la stessa cosa) fisicamente vengono eseguite più operazioni contemporaneamente. Questo significa che ognuno dei core può (o potrebbe) modificare la stessa cella di memoria, o magari leggerla mentre un&#8217;altro la sta scrivendo, per non parlare dell&#8217;accesso contemporaneo a una periferica.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Parte di questo problema viene risolta dall&#8217;hardware, che arbitra l&#8217;accesso al bus ai processori, ma buona parte viene comunque delegata al S.O., visto che comunque una operazione che un software ritiene &#8220;elementare&#8221; come può essere scrivere un carattere sullo schermo viene spezzettata in decine o centinaia di istruzioni a livello assembly.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Inoltre il S.O. deve mantenere una certa affinità di un processo con una CPU, per evitare che dopo un context switch, un processo rimbalzi tra una CPU e l&#8217;altra, svalidando continuamente la cache relativa, e quindi ammazzando le prestazioni. Ma anche l&#8217;affinità deve essere tenuta sotto controllo, per evitare che, morti tutti i processi che giravano su una CPU, i restanti sfruttino solo l&#8217;altra, dimezzando le prestazioni.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questo porta quindi a dei rallentamenti per proteggere zone di memoria o semplicemente per decidere su quale CPU/core debba essere eseguita una certa operazione.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">L&#8217;altra faccia della medaglia è rappresentata dagli algoritmi: se c&#8217;è un solo processo che gira (e che fa calcoli pesanti, per esempio), questo occuperà una sola CPU, mentre l&#8217;altra sarà completamente inerte, dimezzando le prestazioni nel caso di un dual-core, o riducendole a 1/8 nel caso di un 8-core. Nel caso di 64 core&#8230;</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Alcuni algoritmi possono essere resi paralleli, ma anche in questo caso si presentano diversi problemi: per esempio l&#8217;algoritmo potrebbe essere parallelizzabile in due &#8220;stream&#8221; di calcolo, ma allora in una CPU ad 8 core ne sfrutterebbe solo due. Oppure potrebbe essere parallelizzabil, per esempio, con un numero di processi pari a 1/4 del totale dei dati. Ma allora con 16 &#8220;dati&#8221; si potrebbero sfruttare bene 4 core ma non sfruttarne 8, ma soprattutto con un milione di &#8220;dati&#8221; si sfrutterebbero bene 250.000 core, ma avendone solo 2 si creerebbero 125.000 processi per core, costringendo il S.O. a gestire questa enorme coda di processi, con la possibilità di passare più tempo a sincronizzare i processi che ad eseguirli.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Visto l&#8217;attuale tendenza (2 core, 4 core, 8 core e in aumento costante) è difficile pensare ad algoritmi &#8220;ben parallelizzabili&#8221; su diverse architetture. In pratica è un bersaglio mobile.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La &#8220;terza faccia della medaglia&#8221; è data dal fatto che non è affatto semplice, oggi come oggi, scrivere codice parallelo.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Si possono scrivere programmi multiprocesso per isolare i dati da elaborare e comunicare solo tramite dei &#8220;bus&#8221; (code messaggi, buffer, ecc.) tra i vari processi in esecuzione, oppure multithread, condividendo la stessa area di memoria per evitare l&#8217;overhead dei suddetti bus, ma col rischio di andare a sovrascrivere aree di memoria sbagliate e quindi mandando a monte tutti i calcoli effettuati.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">I linguaggi di programmazione attuali raramente offrono facilitazioni da questo punto di vista, quindi si tratta di un lavoro fondamentalmente manuale di sincronizzazione e trasferimento dati. Operazioni che rischiano di azzerare i vantaggi di un multicore, se effettuate in modo meno che ottimo.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Conclusioni</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La situazione è abbastanza complessa, ma è già stata affrontata in passato, ed esistono tecniche di programmazione e librerie ben collaudate, ma rimane lo scoglio della difficoltà di ottimizzazione, soprattutto rispetto ad architetture che cambiano continuamente numero di core.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Dall&#8217;altra parte il multicore è un &#8220;male necessario&#8221;, altrimenti saremmo ancora fermi a 2 anni fa con le prestazioni, ed il nuovo processore Atom di Intel ne è la dimostrazione: single core a 1.6 GHz più lento del Celeron M a 900 MHz. Certo, consuma meno, ma fornisce prestazioni maggiori solo se in modalità dual-core.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Dovremo quindi abituarci a convivere con questa architettura almeno per qualche anno (poi, per i soliti corsi e ricorsi storici, si tornerà al single core, magari quantistico, finché non si riterrà nuovamente necessario ricorrere ai multi-core quantistici, ecc. ecc.).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per i programmatori significa adeguarsi ad imparare la programmazione concorrente, e la mia speranza è che i nuovi linguaggi che si stanno affacciando ora sul mondo (D, Vala, ecc.) forniscano strumenti semplici per ottenerla. Con alcuni linguaggi semplicemente è impossibile programmare in modo concorrente, quindi potrebbero essere destinati se non all&#8217;oblio almeno a un forte ridimensionamento, in caso non si adeguassero.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per gli utenti significa capire il proprio PC, e sfruttarlo al meglio. Per esempio lanciare due istanze della stessa applicazione contemporaneamente al lavoro su dati diversi per sfruttare entrambi i core, se l&#8217;applicazione non li supporta di suo. Un caso emblematico: compilando software su Linux con make è sufficiente specificare l&#8217;opzione -j seguita dal numero di job contemporanei da eseguire. Conviene usare n+1, dove n è il numero di CPU/core, quindi 3 per un dual-core, 5 per un quad-core, ecc. (il +1 serve a sfruttare tutte le CPU in compilazione mentre il processo extra legge o scrive su disco).</p>
<hr />
<p><small>© Alex for <a href="http://alex.amiran.it">/dev/random</a>, 2008. |
<a href="http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/">Permalink</a> |
<a href="http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/&title=Multi core e programmazione concorrente">del.icio.us</a>
<br/>
Post tags: <a href="http://alex.amiran.it/tag/best-practices/" rel="tag">best practices</a>, <a href="http://alex.amiran.it/tag/ottimizzazione/" rel="tag">ottimizzazione</a>, <a href="http://alex.amiran.it/tag/programmazione/" rel="tag">Programmazione</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20080428/multi-core-e-programmazione-concorrente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ottimizzare Linux (3)</title>
		<link>http://alex.amiran.it/20071218/ottimizzare-linux-3/</link>
		<comments>http://alex.amiran.it/20071218/ottimizzare-linux-3/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 17:50:17 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20071218/ottimizzare-linux-3/</guid>
		<description><![CDATA[Accorcio il titolo dei post, perché ormai non si tratta più solo di portatili e server, ma rientrano anche i client. L&#8217;argomento di oggi infatti è totalmente trasversale e riguarda tutti gli usi possibili. Per motivi di efficienza nell&#8217;allocazione delle risorse, ogni (buon) programma su Linux si appoggia a una serie più o meno lunga [...]]]></description>
			<content:encoded><![CDATA[<p class="caption"     style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;font-style: italic; padding: 0 1em;font-style: italic; padding: 0 1em;">Accorcio il titolo dei post, perché ormai non si tratta più solo di portatili e server, ma rientrano anche i client. L&#8217;argomento di oggi infatti è totalmente trasversale e riguarda tutti gli usi possibili.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per motivi di efficienza nell&#8217;allocazione delle risorse, ogni (buon) programma su Linux si appoggia a una serie più o meno lunga di librerie condivise, le cosiddette Shared Objects, riconoscibili per l&#8217;estensione .so</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Queste librerie sono gestite in modo da averne in memoria una sola copia in ogni momento, e tutti i software che hanno bisogno delle funzioni fornite leggono dalla stessa copia in memoria. In questo modo si risparmia RAM e tempo di caricamento da disco, in quanto la libreria viene letta da disco una volta sola e poi viene collegata (link) agli eseguibili che ne fanno richiesta.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma c&#8217;è un problema: ogni programma ha una sua area di memoria isolata dagli altri programmi, e il kernel deve mappare all&#8217;interno di ognuna di queste aree le diverse librerie, e ricalcolare tutti gli offset delle funzioni all&#8217;interno del binario che le richiama. Questa operazione ha il vantaggio di slegare completamente il binario dalle librerie (possiamo avere due versioni della stessa libreria in memoria con due software diversi che le usano, e caricarli quando vogliamo), ma ha lo svantaggio che, al caricamento del programma, tutte queste mappature devono essere ricalcolate.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma c&#8217;è, naturalmente, un modo per rendere più efficiente questa operazione.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;"><span id="more-56" ></span></p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Prelink</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ed è qui che ci viene in aiuto prelink. Questo software, infatti, analizza tutti i programmi e tutte le librerie che abbiamo installato, e precalcola una volta per tutte degli spazi in memoria dove andranno allocate, quindi modifica i binari stessi per &#8220;suggerire&#8221; tale allocazione. Può anche spingersi ad analizzare le librerie che non vengono mai usate contemporaneamente e sovrapporre le loro aree di memoria, in modo da ottimizzarne la gestione.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma allora perché non lo usano tutti, chiederete voi! Il motivo principale è che ogni volta che si aggiorna qualcosa questo prelinking viene perso, quindi le prestazioni decadono, anche se lentamente. Un altro motivo è che alcuni vecchi software non lo supportano molto bene e rischiano di smettere di funzionare. Per esperienza personale non ne ho ancora incontrato uno, a dire il vero. In ogni caso prelink permette anche l&#8217;undo, quindi di ripristinare i binari come erano in origine.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma se avete una macchina che non aggiornate troppo spesso (un server, un palmare, ma anche un client, a meno che non usiate Debian sid o non aggiorniate la Debian testing 2-3 volte al giorno), o se siete disposti ad aspettare qualche minuto in più alla fine di ogni aggiornamento, il gioco vale decisamente la candela.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Come usarlo</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Se avete una Debian (e, presumo, anche una Ubuntu o altre derivate da Debian), l&#8217;installazione e la configurazione sono banali:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">aptitude update
aptitude install prelink</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">vi installerà il pacchetto assieme agli script cron necessari. Controllate il file /etc/default/prelink e, se necessario, modificate la linea che inizia con PRELINKING:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">PRELINKING=yes</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Nello stesso file ci sono altre opzioni impostabili. Lasciate così com&#8217;è la seguente:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">PRELINK_OPTS=-mR</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">mentre, se aggiornate spesso, può essere utile modificare l&#8217;intervallo in giorni a cui avviene un &#8220;full prelink&#8221;:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">PRELINK_FULL_TIME_INTERVAL=5</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questo specifica ogni quanti giorni il cronjob farà uno scan completo del sistema per ricalcolare i prelink. In questo caso l&#8217;abbiamo impostato a 5 giorni. Potete metterlo a 14 o a 30 se aggiornate molto poco (un server, per esempio), oppure a 1 o 2 se aggiornate ogni giorno.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">C&#8217;è un ultimo parametro in questo file:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;"> PRELINK_NONRPM_CHECK_INTERVAL=7</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questo serve a specificare che se non ci sono stati cambiamenti di pacchetti (installazioni o disinstallazioni) negli ultimi 7 giorni, non viene comunque forzato un full prelink, e viene eseguito un prelink incrementale. Funziona analizzando il file di stato della distribuzione, quindi non lasciatevi ingannare da quell&#8217;RPM: funziona anche coi deb (se usate il pacchetto deb di prelink, naturalmente).</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La configurazione è finita. Tranne la prima riga, che di solito è undefined o no di default, le altre potete anche lasciarle come sono. Non era difficile, no? <img src="http://alex.amiran.it/wp-includes/images/smilies/icon_smile.gif"  alt=":)"  class="wp-smiley"   style="border: 0;"/> </p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Avvio del prelink</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ora potete aspettare che cron faccia il suo lavoro (verso le 6 di mattina per il default Debian), o che lo faccia anacron (se spegnete la macchina ogni sera e, naturalmente, avete installato anacron).Oppure potete lanciare l&#8217;operazione manualmente richiamando, da utente root, direttamente il cronjob:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">/etc/cron.daily/prelink</pre>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Undo</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Se volete tornare alla situazione di partenza, togliendo tutti i prelink, il comando da dare, sempre da root, è:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">prelink -au</pre>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Disclaimer</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Come ho detto all&#8217;inizio, io finora non ho avuto alcun tipo di problema da prelink, e lo uso su una lenny (e prima su una etch, quando era testing) da oltre due anni. Ma, come dicono i &#8216;mmericani, your mileage may vary: potreste avere qualcosa che non va con prelink, o potrebbe saltarvi la corrente mentre scrive libc.so e impastarvi il sistema (compratevi un UPS!). A vostro rischio e pericolo. Ma la differenza sui tempi di caricamento si vede a occhio nudo, soprattutto su pacchetti grossi come OpenOffice o simili.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;"> Altre opzioni</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">La manpage di prelink elenca molte opzioni possibili. Per un uso normale non servono, ma se volete addentrarvi nei meandri del funzionamento del link su Linux, man prelink è vostro amico. L&#8217;unica opzione su cui voglio richiamare l&#8217;attenzione è -R, che comunque viene impostata di default in Debian, e serve a rendere casuale l&#8217;indirizzo di allocazione di ogni libreria. Questo serve ad evitare che un attaccante (un cracker) che abbia un sistema come il vostro possa prevedere a quale locazione di memoria viene installata una certa libreria, rendendogli più facile l&#8217;attacco.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">In /etc/prelink.conf la Debian preimposta già quali directory controllare e quali tipi di file ignorare durante il prelink. Si può personalizzare questo file nel caso si installino binari in luoghi fuori dalla gestione della distribuzione (per esempio in /usr/local o in /home). La sintassi è molto semplice, se avete letto e capito il man, altrimenti evitate di metterci mano.</p>
<hr />
<p><small>© Alex for <a href="http://alex.amiran.it">/dev/random</a>, 2007. |
<a href="http://alex.amiran.it/20071218/ottimizzare-linux-3/">Permalink</a> |
<a href="http://alex.amiran.it/20071218/ottimizzare-linux-3/#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://alex.amiran.it/20071218/ottimizzare-linux-3/&title=Ottimizzare Linux (3)">del.icio.us</a>
<br/>
Post tags: <a href="http://alex.amiran.it/tag/desktop/" rel="tag">desktop</a>, <a href="http://alex.amiran.it/tag/linux/" rel="tag">Linux</a>, <a href="http://alex.amiran.it/tag/memoria/" rel="tag">memoria</a>, <a href="http://alex.amiran.it/tag/ottimizzazione/" rel="tag">ottimizzazione</a>, <a href="http://alex.amiran.it/tag/server/" rel="tag">server</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20071218/ottimizzare-linux-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ottimizzare Linux per dispositivi mobili e server (2)</title>
		<link>http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/</link>
		<comments>http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 14:23:49 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/</guid>
		<description><![CDATA[Da un po&#8217; sto raccogliendo informazioni per la seconda parte di questo articolo, cercando di estrapolare solo suggerimenti non troppo complicati da applicare. Durante questa ricerca sono incappato in due documenti che raccolgono una messe di informazioni su come configurare varie componenti in diversi modi. Non sono sempre &#8220;digita e dimentica&#8221;, anzi, a volte richiedono [...]]]></description>
			<content:encoded><![CDATA[<p class="caption"     style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;font-style: italic; padding: 0 1em;font-style: italic; padding: 0 1em;">Da un po&#8217; sto raccogliendo informazioni per la seconda parte di questo articolo, cercando di estrapolare solo suggerimenti non troppo complicati da applicare.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Durante questa ricerca  sono incappato in due documenti che raccolgono una messe di informazioni su come configurare varie componenti in diversi modi.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Non sono sempre &#8220;digita e dimentica&#8221;, anzi, a volte richiedono un&#8217;analisi preventiva dell&#8217;hardware presente, e un tuning dei parametri per funzionare al meglio, ma sono una bella lista abbastanza completa. Alcune cose le ho già scritte nella <a href="http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">prima parte di questo articolo</a>.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma ecco i link:  <a href="http://linguistico.sourceforge.net/wiki/doku.php?id=debian:velocizzare_il_proprio_sistema_operativo_e_usare_meno_risorse"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">Velocizzare Debian</a> e <a href="http://linguistico.sourceforge.net/wiki/doku.php?id=debian:spazio_hd"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">Recuperare spazio sull&#8217;HD</a>.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">I consigli sono diretti a utenti Debian, ma la maggior parte sono validi per qualsiasi distribuzione.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Non tutti sono da applicare ad occhi chiusi, ma richiedono una minima conoscenza del (sotto-)sistema che si sta configurando. Magari in futuro ne estrapolerò qualcuno e lo approfondirò qui. Nel frattempo ne approfitto per ringraziare il progetto <a href="http://linguistico.sourceforge.net/wiki/doku.php?id=&amp;DokuWiki=9d17683ed8708b7993a947cc8a2c5745"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">Linguistico</a> per queste e per le altre guide che hanno pubblicato, oltre che per i dizionari e i thesaurus in italiano, naturalmente.</p>
<hr />
<p><small>© Alex for <a href="http://alex.amiran.it">/dev/random</a>, 2007. |
<a href="http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/">Permalink</a> |
<a href="http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/&title=Ottimizzare Linux per dispositivi mobili e server (2)">del.icio.us</a>
<br/>
Post tags: <a href="http://alex.amiran.it/tag/debian/" rel="tag">Debian</a>, <a href="http://alex.amiran.it/tag/linux/" rel="tag">Linux</a>, <a href="http://alex.amiran.it/tag/memoria/" rel="tag">memoria</a>, <a href="http://alex.amiran.it/tag/ottimizzazione/" rel="tag">ottimizzazione</a>, <a href="http://alex.amiran.it/tag/server/" rel="tag">server</a>, <a href="http://alex.amiran.it/tag/storage/" rel="tag">storage</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20071214/ottimizzare-linux-per-dispositivi-mobili-e-server-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Risparmio energetico: cosa usare?</title>
		<link>http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/</link>
		<comments>http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 17:25:17 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[risparmio energetico]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/</guid>
		<description><![CDATA[A volte, quando mi trovo davanti un nuovo PC su cui voglio abilitare il risparmio energetico, mi trovo a domandarmi quale sia il modulo del kernel giusto da caricare, vista la diversità tra il nome del driver e quello che il produttore dà al chip in questione. Ecco quindi una lista dei moduli per le [...]]]></description>
			<content:encoded><![CDATA[<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">A volte, quando mi trovo davanti un nuovo PC su cui voglio abilitare il risparmio energetico, mi trovo a domandarmi quale sia il modulo del kernel giusto da caricare, vista la diversità tra il nome del driver e quello che il produttore dà al chip in questione. Ecco quindi una lista dei moduli per le CPU più comuni:</p>
<ul>
<li>powernow_k6: per le CPU AMD K6 mobile (K6-2+ e K6-3+)</li>
<li>powernow_k7: per AMD Athlon, Duron e i Sempron a 32 bit</li>
<li>powernow_k8: per le CPU AMD a 64 bit: Athlon 64, Turion 64, Sempron 64, Opteron 64</li>
<li>p4_clockmod: per pentium 4, Celeron D, Pentium D, Celeron M</li>
<li>speedstep_centrino: per Pentium M (Centrino), Core Duo, Core 2 Duo</li>
<li>longrun: per CPU Transmeta</li>
<li>longhaul: per CPU Via Cyrix (quelli delle Epia, per esempio)</li>
<li>e_powersaver:per CPU VIA C7</li>
</ul>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Purtroppo ho scoperto anche che il p4_clockmod che devo usare per il mio Pentium-D non risparmia energia, ma aiuta solamente a ridurre la temperatura.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Per automatizzare la gestione del frequency scaler ci sono diversi programmi, ma quello che trovo migliore è powernowd che, nonostante il nome, è compatibile con tutte le CPU, perché non è altro che un&#8217;interfaccia al sysfs del kernel, che si occupa di tutto. Powernowd non fa altro che verificare il carico sulla CPU a intervalli costanti (configurabili, di default una volta al secondo) e, se sale oltre un certo limite (di default 80%, io l&#8217;ho impostato al 50%) aumenta la frequenza della CPU secondo un algoritmo, anch&#8217;esso configurabile (di default schizza al massimo e poi scende lentamente, ma si può impostare al contrario, oppure che salga e scenda gradualmente). Quando l&#8217;utilizzo scende sotto una certa soglia (di default 20%) cala la frequenza secondo l&#8217;algoritmo impostato. Non ha un file di configurazione, solo alcuni semplici flag che, in Debian, si impostano in /etc/default/powernowd in modo che lo script di avvio li trovi.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Mentre testavo questi aggeggini mi sono capitati davanti anche due pacchetti deb molto utili: cpufrequtils e sysfsutils. Il primo fornisce alcuni comandi per interrogare e impostare i parametri di cpufreq, appunto. Usando powernowd non dovrebbero essere necessari (gestisce tutto lui), ma cpufreq-info può essere utile per avere informazioni dettagliate sulle capacità di risparmio energetico della CPU.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">sysfsutils fornisce il comando systool per interrogare i vari sottosistemi riconosciuti dal kernel attraverso il file-system virtuale /sys. Onestamente non l&#8217;ho usato molto, e non saprei nemmeno immaginarne un uso, che sicuramente c&#8217;è per utilizzi avanzati.</p>
<hr />
<p><small>© Alex for <a href="http://alex.amiran.it">/dev/random</a>, 2007. |
<a href="http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/">Permalink</a> |
<a href="http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/&title=Risparmio energetico: cosa usare?">del.icio.us</a>
<br/>
Post tags: <a href="http://alex.amiran.it/tag/linux/" rel="tag">Linux</a>, <a href="http://alex.amiran.it/tag/ottimizzazione/" rel="tag">ottimizzazione</a>, <a href="http://alex.amiran.it/tag/risparmio-energetico/" rel="tag">risparmio energetico</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20071213/risparmio-energetico-cosa-usare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ottimizzare Linux per dispositivi mobili e server (1)</title>
		<link>http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/</link>
		<comments>http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 10:57:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/</guid>
		<description><![CDATA[Ci sono molti piccoli accorgimenti che si possono adottare per adattare il nostro sistema Linux all&#8217;uso che lo aspetta, che si tratti di un sistema desktop o di un server. Martin Michlmayr ha pubblicato un paio di articoli su come ottimizzare Linux per l&#8217;uso su dispositivi embedded (NSLU2 nel caso specifico): per la riduzione della [...]]]></description>
			<content:encoded><![CDATA[<p class="caption"     style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;font-style: italic; padding: 0 1em;font-style: italic; padding: 0 1em;">Ci sono molti piccoli accorgimenti che si possono adottare per adattare il nostro sistema Linux all&#8217;uso che lo aspetta, che si tratti di un sistema desktop o di un server.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Martin Michlmayr ha pubblicato un paio di articoli su come ottimizzare Linux per l&#8217;uso su dispositivi embedded (NSLU2 nel caso specifico): per la <a href="http://www.cyrius.com/debian/nslu2/reducing-memory.html"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">riduzione della memoria occupata</a> e per il <a href="http://www.cyrius.com/debian/nslu2/linux-on-flash.html"  target="_blank"   style="color: #4fc84f; font-weight: bold; text-decoration: underline;color: #4fc84f; font-weight: bold; text-decoration: underline;">funzionamento su memorie flash</a>.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Ma molti consigli valgono anche in generale per migliorare le prestazioni di Linux, sia su dispositivi portatili che non. Ne traduco qui alcuni e mi permetto di aggiungerne altri che possono tornare utili, con un&#8217;occhio all&#8217;uso desktop e uno all&#8217;uso server.<span id="more-38" ></span></p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Accesso al disco</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Linux ha un ottimo sistema di gestione dei dischi, ma di default offre funzionalità che migliorano l&#8217;affidabilità e la tracciabilità delle operazioni, perfette per un server, ma costose per le prestazioni su un PC desktop, un portatile o un palmare/cellulare.</p>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Atime</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Una di queste è l&#8217;atime dei file: viene memorizzata su disco la data e ora dell&#8217;ultimo accesso al file. Questa funzione è utile in rarissimi casi, pertanto si può disattivare senza problemi, perché causa una scrittura su disco per ogni lettura effettuata. Sui normali dischi si guadagna in prestazioni, mentre sulle memorie flash si guadagna anche in durata del supporto (le scritture sono limitate su questi dispositivi). Per disattivarlo è sufficiente modificare (da utente root) il file /etc/fstab aggiungendo l&#8217;opzione &#8220;noatime&#8221; ai vari mount-point.</p>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Commit time</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Sempre in questo file possiamo modificare il tempo di commit di ext3, in modo da effettuare meno scritture su disco, e da scrivere più dati in un colpo solo, migliorando le prestazioni. Di default sono 5 secondi, ma possiamo alzarlo a 2 minuti (120 secondi). In questo caso lo svantaggio è che se salta la corrente quando i dati non sono ancora stati scritti se ne perderanno di più. Il mio consiglio è di avere sempre un UPS (un gruppo di continuità) anche piccolo (500-650 VA sono sufficienti per reggere 5-10 minuti, dipende dal carico del vostro PC) ed evitare sia questo problema che quello delle sovratensioni che si verificano ogni tanto e che bruciano alimentatori.</p>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">fstab</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Andiamo quindi a vedere come modificare il nostro /etc/fstab</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;"># /etc/fstab: static file system information.#

# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;                     &lt;dump&gt;  &lt;pass&gt;

proc            /proc           proc    defaults                        0       0

/dev/hda1       /               ext3    defaults,errors=remount-ro,noatime,commit=120 0       1
/dev/hda3       /home           ext3    defaults,noatime,commit=120     0       2
/dev/hda4       /usr            ext3    defaults,noatime,commit=120     0       3
/dev/hda2       none            swap    sw                              0       0</pre>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">syslog</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Possiamo anche modificare syslog perché bufferizzi i log prima di scriverli su disco. Sui normali dischi questo può ridurre la frammentazione, oltre a evitare di scrivere continuamente su disco pochi bytes, mentre sulle memorie flash il vantaggio è lo stesso del noatime: si prolunga la vita della flash. Lo svantaggio è che se il computer ha un crash (molto raro, ma può succedere) o se manca la corrente si perdono i dati dei log degli ultimi minuti. Quindi non attivatelo se state testando nuovi kernel instabili, moduli proprietari del kernel o driver per X o per qualsiasi cosa giri coi permessi di root e vi servono log affidabili. Su un server potrebbe essere addirittura conveniente togliere il buffering già presente su alcuni file.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Il file da modificare, in questo caso, è /etc/syslog.conf e basta aggiungere un trattino (il normale &#8220;meno&#8221;) prima del nome del file di log. Ecco un esempio:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">#  /etc/syslog.conf     Configuration file for syslogd.#

# First some standard logfiles.  Log by facility.

#auth,authpriv.*           /var/log/auth.log
*.*;auth,authpriv.none    -/var/log/syslog
#cron.*                    /var/log/cron.log
daemon.*                  -/var/log/daemon.log
kern.*                    -/var/log/kern.log
lpr.*                     -/var/log/lpr.log
mail.*                    -/var/log/mail.log
user.*                    -/var/log/user.log</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questo è un pezzo del file standard della Debian. Come vedete alcuni file hanno già il trattino davanti, e vengono bufferizzati. Si tratta solitamente di log meno importanti, per cui non è necessario avere un riscontro preciso nei file, mentre, ad esempio, il file di log delle autorizzazioni (quello che vi scrive &#8220;root ha fatto login alle 02:37:21 del 25 dicembre&#8221;) viene scritto direttamente su disco per motivi di sicurezza. Qui tale log è disattivato.<br/>
Le prestazioni guadagnate in questo caso non sono granché, quindi questa modifica ha senso solo su dispositivi con flash memory: palmari, cellulari, media-center e simili, dove interessa poco avere log precisi ed aggiornati. Si può invece aggiungere (o decommentare nel caso della Debian) una sezione apposita che vada a scrivere i log su una console non utilizzata. Io uso quella in Alt-F12:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
daemon,mail.*;\
        news.=crit;news.=err;news.=notice;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       /dev/tty12</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">In questo modo c&#8217;è un riscontro diretto in tempo reale con i più importanti servizi di sistema. Su un server si può addirittura lasciare attiva quella console di default, in modo da vedere i messaggi di log semplicemente accendendo il monitor, senza fare login.</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Memoria</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Nei PC moderni ormai la memoria si spreca. Non è raro avere 1, 2 o addirittura 4 Gb di RAM, soprattutto se il PC è in dual-boot con Windows per giocare.</p>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">SWAP</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Allora la cosa migliore da fare è usare tale memoria e limitare al minimo l&#8217;uso della swap e del disco in generale, molto più lento della RAM. Nei kernel 2.6 c&#8217;è un parametro apposta per indicare al sistema quanto deve usare la swap: /proc/sys/vm/swappiness</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Basta fare un cat di tale file per vederne l&#8217;impostazione, e con un echo regolare la quantità che vogliamo:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">~# cat /proc/sys/vm/swappiness
60</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Se vogliamo ridurre al minimo l&#8217;uso della swap (a scapito dei buffer e delle cache dei file aperti) possiamo metterlo a 0, per esempio su un sistema desktop in cui si passa spesso da un&#8217;applicazione all&#8217;altra. Se vogliamo che il sistema metta in swap più memoria possibile possiamo metterlo a 100, per esempio su un server dove ci sono alcune applicazioni che vengono lanciate ogni tanto (i backup) e quindi possono essere messe in cache, mentre vogliamo massimizzare i buffer per avere più dati possibili in memoria in ogni momento (per esempio le pagine web da servire ai client). Basterà quindi un:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">echo 10 &gt;/proc/sys/vm/swappiness</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">per abbassare senza esagerare la tendenza allo swap. Possiamo rendere permanente questa modifica aggiungendo al file /etc/sysctl.conf questa riga:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">vm/swappiness = 10</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">In questo file si possono inserire tutte le modifiche da fare al boot a qualsiasi cosa si trovi sotto /proc/sys come vedremo tra poco.</p>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Cache in scrittura</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">A metà tra l&#8217;uso della memoria e quello del disco viene il laptop_mode, un sistema per impostare il sistema per l&#8217;uso minimo del disco. Ormai la sintassi per le modifiche è chiara, quindi andiamo a vedere direttamente come modificare sysctl.conf e quali parametri possiamo impostare:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">vm/laptop_mode = 5
vm/dirty_writeback_centisecs = 12000
vm/dirty_expire_centisecs = 12000
vm/dirty_ratio = 95
vm/dirty_background_ratio = 20</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Il primo parametro indica dopo quanti secondi, dal risveglio del disco causato da una lettura, iniziare una scrittura. Impostato a 0 disattiva il laptop_mode. Impostato troppo basso può rallentare la lettura per effettuare la scrittura. Qui l&#8217;abbiamo impostato a 5 secondi. Abbastanza da permettere di finire la lettura, e abbastanza poco da permettere al disco da tornare a dormire presto. Può essere utile, assieme ai parametri successivi, per l&#8217;uso con le flash memory per ridurre le scritture al minimo e migliorare le prestazioni, soprattutto se si ha una buona quantità di RAM.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">dirty_writeback_centisecs specifica ogni quanto il kernel deve controllare se ci sono dati da scrivere, in centesimi di secondo. dirty_expire_centisecs specifica dopo quanto tempo i dati da scrivere devono fisicamente essere scritti sul disco. Conviene impostare questi due valori con lo stesso numero. Qui il kernel controlla ogni 120 secondi (2 minuti) se ci sono dati da scrivere e, se ci sono, li scrive su disco. Su un notebook, per far dormire il più possibile il disco, si può impostare a 15-20 minuti, stando attenti al livello della batteria.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">dirty_ratio specifica quale percentuale della memoria usare per i dati in attesa. Possiamo impostarlo molto alto, in quanto i dati vengono comunque scritti su disco se la memoria serve per altro. dirty_background_ratio specifica la percentuale di memoria occupata dai dati in attesa alla quale il processo di scrittura si può fermare. Col parametro che abbiamo impostato sopra il sistema cercherà di scrivere dati su disco almeno finché questi non occuperanno il 20% o meno della memoria disponibile.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questi parametri hanno senso su un portatile o su un dispositivo con memoria flash, ma possono aiutare anche a ridurre la frammentazione dei file su dischi con poco spazio libero (mentre su dischi con molto spazio libero il kernel ha un sistema di allocazione che riduce automaticamente la frammentazione man mano che si usa il disco).</p>
<h3  style="font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-style: italic; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Ridurre la memoria occupata</h3>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Naturalmente ha poco senso avere 1 Gb di memoria e lanciare decine di daemon in background senza usarli mai. Conviene quindi &#8220;spegnerli&#8221; ed attivarli solo quando servono. Per questa modifica bisogna capire, almeno a grandi linee, come funziona il sistema di init di Linux.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Al boot il primo software ad essere eseguito, dopo il kernel, è init, che legge il file /etc/inittab e ne lancia i vari script in base alle informazioni che vi trova. Tra questi c&#8217;è l&#8217;attivazione del runlevel di default, che in Debian è sempre il 2. Il livello 0 significa &#8220;spegnimento&#8221;, il livello 1 &#8220;monoutente&#8221;, il livello 6 &#8220;riavvio&#8221;. I livelli da 3 a 5 sono personalizzabili, ma per i nostri usi li considereremo equivalenti al livello 2. Quindi dovremo impostare i daemon che ci servono perché partano (start, quindi S) ai livelli da 2 a 5, e perché si fermino (kill, quindi K) ai livelli 0, 1 e 6, mentre impostaremo quelli che usiamo poco (apache, MySQL e Postgres, per esempio, se saltuariamente sviluppiamo per il web) perché siano K (kill) a tutti i livelli. Li avvieremo manualmente quando ci servono. In Debian possiamo usare update-rc.d per automatizzare il tutto, e avremo a disposizione anche alcune opzioni che ci semplificano la vita:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">update-rc.d -f apache2 remove
update-rc.d -f mysql remove
update-rc.d -f postgresql-8.2 remove</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">I nomi da usare per i vari servizi li trovate guardando come si chiamano i file in /etc/init.d.</p>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Questa forma (remove) cancella tutti i link di avvio e di stop del servizio, che quindi andrà sia avviato che fermato a mano prima di spegnere il computer. Dobbiamo quindi ripristinare lo spegnimento dei servizi allo shutdown/reboot/single-user:</p>
<pre  style="font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;font-family: 'DejaVu Sans Mono' Consola Inconsolata fixed; margin: 1em; padding: 0.5em; border: 1px solid #9f9;">update-rc.d apache2 stop 20 0 1 2 3 4 5 6 .
update-rc.d mysql stop 20 0 1 2 3 4 5 6 .
update-rc.d postgresql-8.2 stop 20 0 1 2 3 4 5 6 .</pre>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Buona parte degli script di avvio/fermata dei daemon tiene traccia del funzionamento di un daemon, quindi non darà alcun warning allo shutdown. Attenzione al punto alla fine delle righe!</p>
<h2  style="font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;font-size: 1.4em; font-weight: bold; line-height: 1.5em; font-family: 'DejaVu Serif' Tahoma 'Times New Roman' times serif;">Conclusioni</h2>
<p  style="margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;margin: 1em 2em; line-height: 1.6em; font-size: 1em; font-family: 'DejaVu Sans' Verdana sans-serif; text-align: justify;">Si chiude qui questo primo articolo sull&#8217;ottimizzazione di Linux. Ci sono molti altri piccoli e grandi accorgimenti adottabili. Li vedremo nella prossima puntata.</p>
<hr />
<p><small>© Alex for <a href="http://alex.amiran.it">/dev/random</a>, 2007. |
<a href="http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/">Permalink</a> |
<a href="http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/#comments">5 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/&title=Ottimizzare Linux per dispositivi mobili e server (1)">del.icio.us</a>
<br/>
Post tags: <a href="http://alex.amiran.it/tag/linux/" rel="tag">Linux</a>, <a href="http://alex.amiran.it/tag/memoria/" rel="tag">memoria</a>, <a href="http://alex.amiran.it/tag/ottimizzazione/" rel="tag">ottimizzazione</a>, <a href="http://alex.amiran.it/tag/storage/" rel="tag">storage</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://alex.amiran.it/20071118/ottimizzare-linux-per-dispositivi-mobili-e-server-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 2.179 seconds -->
