<?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>Kiwi&#039;s Blog &#187; MTD</title>
	<atom:link href="http://kiwized.net/tag/mtd/feed/" rel="self" type="application/rss+xml" />
	<link>http://kiwized.net</link>
	<description>Things and other interesting things</description>
	<lastBuildDate>Sat, 16 Jan 2010 04:02:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Impostare l&#039;IO scheduler per le SSD</title>
		<link>http://kiwized.net/2008/08/31/impostare-lio-scheduler-per-le-ssd/</link>
		<comments>http://kiwized.net/2008/08/31/impostare-lio-scheduler-per-le-ssd/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 11:10:28 +0000</pubDate>
		<dc:creator>kiwi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[elevator]]></category>
		<category><![CDATA[I/O]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MTD]]></category>
		<category><![CDATA[scheduler]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://blog.kiwized.net/2008/08/31/impostare-lio-scheduler-per-le-ssd/</guid>
		<description><![CDATA[Dopo qualche ricerca piuttosto superficiale non ho trovato uno scheduler decente per le SSD sotto linux.
Per SSD intendo esplicitamente i dispositivi flash-based non MTD (quindi ATA, USB storage, SCSI, SD/MMC/CF/MS/XD o che altro) . Questa classe di dispositivi sono abbastanza difficili da gestire perchè nascondono il fatto di essere sotto sotto degli MTD e così [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo qualche ricerca piuttosto superficiale non ho trovato uno scheduler decente per le <a href="http://en.wikipedia.org/wiki/Solid-state_drive" title="Solid State Drive" target="_blank">SSD</a> sotto linux.</p>
<p>Per SSD intendo esplicitamente i dispositivi flash-based non <a href="http://en.wikipedia.org/wiki/Memory_Technology_Device" title="Memory Technology Device" target="_blank">MTD</a> (quindi ATA, USB storage, SCSI, SD/MMC/CF/MS/XD o che altro) . Questa classe di dispositivi sono abbastanza difficili da gestire perchè nascondono il fatto di essere sotto sotto degli MTD e così facendo impediscono di conoscere gli internals e quindi fare le cose fatte bene.</p>
<p>Purtroppo non essendoci uno scheduler specifico le prestazioni non saranno ottimali. Una SSD non ha problemi di seeking e ordinare le richieste secondo la posizione su disco, o peggio ancora dare priorità ad un richiesta perché è vicina a quella precedente non può che aumentare la latenza. Il read-ahead poi peggiora ulteriormente le cose leggendo dati potenzialmente inutili senza trarne alcun vantaggio.</p>
<p>Vediamo come neutralizzare questi meccanismi sotto linux.</p>
<p>Un metodo  molto semplice potrebbe essere usare lo scheduler noop, che esegue le richieste in ordine di arrivo.</p>
<p>Quindi, per il disco sda si procede come segue:</p>
<blockquote><p> echo noop &gt; /sys/block/sda/queue/scheduler</p></blockquote>
<p>Inoltre bisogna ridurre il read-ahead, in quanto non è costoso ritornare su una determinata &#8220;posizione&#8221; per leggere i dati. In realtà c&#8217;è il costo di mettere in coda una nuova richiesta e aspettare che venga soddisfatta, ma questo è poco rilevante in confronto a fare una lettura per nulla. Il read ahead viene fatto comunque (anche per letture di i-node, file microscopici&#8230;) quindi è piuttosto pesante.</p>
<p>Quindi mettiamo un valore basso, a naso <img src='http://kiwized.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<blockquote><p>echo 8 &gt;  /sys/block/sda/queue/read_ahead_kb</p></blockquote>
<p align="left">La cosa migliore sarebbe mettere la dimensione di un blocco flash (che non conosciamo) e avere le richieste allineate al blocco. Ma non si può, pazienza&#8230;</p>
<p>Questa non è ancora una soluzione completamente ottimizzata, ma un ripiego. Infatti una caratteristica propria delle SSD (o meglio di quasi tutte le flash)  è avere una velocità di scrittura molto più bassa di quella di lettura, in genere il rapporto è 50% o 25% o in casi sfortunati anche il 10%. Sarebbe quindi opportuno riordinare le richieste dando priorità alla lettura  in maniera proporzionale al rapporto medio tra le due velocità, ovviamente avendo una qualche deadline dopo la quale scrivere comunque i dati.</p>
<p>In definitiva non riusciamo ad avere una soluzione completa, ma comunque abbiamo degli incrementi nelle prestazioni. In fondo questi dispositivi <em>dovrebbero</em> essere temporanei in attesa che i sistemi operativi supportino tutti nativamente i dispositivi MTD. Linux li supporta da un pezzo, ma sul mercato non troveremo mai MTD da 8 Gb, proprio perchè avrebbero poco mercato grazie ad altri sistemi operativi, senza fare nomi <img src='http://kiwized.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Fkiwized.net%2F2008%2F08%2F31%2Fimpostare-lio-scheduler-per-le-ssd%2F&amp;linkname=Impostare%20l%26%2339%3BIO%20scheduler%20per%20le%20SSD"><img src="http://kiwi.tastybra.in/blog/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Save/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://kiwized.net/2008/08/31/impostare-lio-scheduler-per-le-ssd/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
