Trattata syscall, e avanti sulle priorita' di I/O
[gapil.git] / prochand.tex
index da1d5020ba81e2a5101fa70697eca06797bb5a5f..b879a1da05fbe55e448c0a223b838e1f1f45fc9f 100644 (file)
@@ -2982,9 +2982,38 @@ risorsa che i processi devono contendersi, un'altra, altrettanto importante
 per le prestazioni, è quella dell'accesso a disco. Per questo motivo sono
 stati introdotti diversi \textit{I/O scheduler} in grado di distribuire in
 maniera opportuna questa risorsa ai vari processi. Fino al kernel 2.6.17 era
-possibile soltanto decidere le politiche di gestione scegliendo un diverso
-\textit{I/O scheduler}  
-
+possibile soltanto differenziare le politiche generali di gestione, scegliendo
+di usare un diverso \textit{I/O scheduler}; a partire da questa versione, con
+l'introduzione dello scheduler CFQ (\textit{Completely Fair Queuing}) è
+divenuto possibile, qualora si usi questo scheduler, impostare anche delle
+diverse priorità di accesso per i singoli processi.\footnote{al momento
+  (kernel 2.6.31), le priorità di I/O sono disponibili soltanto per questo
+  scheduler.}
+
+La scelta dello scheduler di I/O si può fare in maniera generica a livello di
+avvio del kernel assegnando il nome dello stesso al parametro
+\texttt{elevator}, mentre se ne può indicare uno per l'accesso al singolo
+disco scrivendo nel file \texttt{/sys/block/\textit{dev}/queue/scheduler}
+(dove \texttt{\textit{dev}} è il nome del dispositivo associato al disco); gli
+scheduler disponibili sono mostrati dal contenuto dello stesso file che
+riporta fra parentesi quadre quello attivo, il default in tutti i kernel
+recenti è proprio il \texttt{cfq},\footnote{nome con cui si indica appunto lo
+  scheduler \textit{Completely Fair Queuing}.} che supporta le priorità; per i
+dettagli sulle caratteristiche specifiche degli altri scheduler, la cui
+discussione attiene a problematiche di ambito sistemistico, si consulti la
+documentazione nella directory \texttt{Documentation/block/} dei sorgenti del
+kernel.
+
+Una volta che si sia impostato lo scheduler CFQ ci sono due specifiche system
+call, specifiche di Linux, che consentono di leggere ed impostare le priorità
+di I/O.\footnote{se usate in corrisponenza ad uno scheduler diverso il loro
+  utilizzo non avrà alcun effetto.} Dato che non esiste una interfaccia
+diretta nelle librerie del C per queste due funzioni occorrerà invocarle
+tramite la funzione \func{syscall} (come illustrato in
+sez.~\ref{sec:intro_syscall}).
+
+Lo scheduler CFQ prevede la presenza di tre diverse classi, e ricalcando i
+concetti dello scheduler della CPU, 
 
 %TODO trattare le priorità di I/O
 % vedi man ioprio_set e Documentation/block/ioprio.txt