Prefetching gekürzt
This commit is contained in:
parent
c9f5d020b4
commit
dbf21b0ffd
BIN
Advanced Operating Systems - Cheatsheet.pdf
(Stored with Git LFS)
BIN
Advanced Operating Systems - Cheatsheet.pdf
(Stored with Git LFS)
Binary file not shown.
@ -128,8 +128,8 @@
|
||||
\item Requirements: (nicht-)Funktionale Eigenschaften entstehen durch Erfüllung von (nicht-)funktionalen Anforderungen
|
||||
\item funktionale Eigenschaft: was ein Produkt tun soll
|
||||
\item nichtfunktionale Eigenschaft (NFE): wie ein Produkt dies tun soll
|
||||
\item andere Bezeichnungen NFE: Qualitäten, Quality of Service
|
||||
\end{itemize*}
|
||||
\item andere Bezeichnungen NFE: Qualitäten, Quality of Service
|
||||
\end{itemize*}
|
||||
|
||||
\subsubsection{Hardwarebasis}
|
||||
\begin{itemize*}
|
||||
@ -210,149 +210,108 @@
|
||||
Beispiele:
|
||||
\begin{itemize*}
|
||||
\item mobile Geräte: Sparsamkeit mit Energie
|
||||
\item Sparsamkeit mit weiteren Ressourcen, z.B. Speicherplatz
|
||||
\item Betriebssystem (Kernel + User Space): geringer Speicherbedarf
|
||||
\item optimale Speicherverwaltung durch Betriebssystem zur Laufzeit
|
||||
\item Baugrößenoptimierung(Platinen-und Peripheriegerätegröße)
|
||||
\item Kostenoptimierung(kleine Caches, keine MMU, ...)
|
||||
\item massiv reduzierte HW-Schnittstellen (E/A-Geräte, Peripherie)
|
||||
\end{itemize*}
|
||||
\item Sparsamkeit mit weiteren Ressourcen, z.B. Speicherplatz
|
||||
\item Betriebssystem (Kernel + User Space): geringer Speicherbedarf
|
||||
\item optimale Speicherverwaltung durch Betriebssystem zur Laufzeit
|
||||
\item Baugrößenoptimierung(Platinen-und Peripheriegerätegröße)
|
||||
\item Kostenoptimierung(kleine Caches, keine MMU, ...)
|
||||
\item massiv reduzierte HW-Schnittstellen (E/A-Geräte, Peripherie)
|
||||
\end{itemize*}
|
||||
|
||||
Mobile und eingebettete Systeme (kleine Auswahl)
|
||||
\begin{itemize*}
|
||||
\item mobile Rechner-Endgeräte
|
||||
\item Weltraumfahrt und -erkundung
|
||||
\item Automobile
|
||||
\item verteilte Sensornetze (WSN)
|
||||
\item Chipkarten
|
||||
\item Multimedia-und Unterhaltungselektronik
|
||||
\item mobile Rechner-Endgeräte
|
||||
\item Weltraumfahrt und -erkundung
|
||||
\item Automobile
|
||||
\item verteilte Sensornetze (WSN)
|
||||
\item Chipkarten
|
||||
\item Multimedia-und Unterhaltungselektronik
|
||||
\end{itemize*}
|
||||
|
||||
\subsection{Energieeffizienz}
|
||||
Hardwaremaßnahmen: zeitweiliges Abschalten/Herunterschalten momentan nicht benötigter Ressourcen
|
||||
zeitweiliges Abschalten momentan nicht benötigter Ressourcen
|
||||
|
||||
Betriebssystemmechanismen
|
||||
\begin{enumerate*}
|
||||
\item Dateisystem-E/A:energieeffizientes Festplatten-Prefetching(2.2.1)
|
||||
\item CPU-Scheduling: energieeffizientes Scheduling(2.2.2)
|
||||
\item Speicherverwaltung:minimale Leistungsaufnahme durch Speicherzugriffe mittels Lokalitätsoptimierung {[}DGMB07{]}
|
||||
\item Netzwerk:energiebewusstes Routing
|
||||
\item Verteiltes Rechnen auf Multicore-Prozessoren: temperaturabhängige Lastverteilung
|
||||
\item Dateisystem-E/A: energieeffizientes Festplatten-Prefetching
|
||||
\item CPU-Scheduling: energieeffizientes Scheduling
|
||||
\item Speicherverwaltung: Lokalitätsoptimierung
|
||||
\item Netzwerk: energiebewusstes Routing
|
||||
\item Verteiltes Rechnen: temperaturabhängige Lastverteilung
|
||||
\end{enumerate*}
|
||||
|
||||
\subsubsection{Energieeffiziente Dateizugriffe}
|
||||
Hardwarebedingungen: HDD, Netzwerkgeräte, ... sparen nur bei relativ langen Inaktivitätsintervallen Energie.
|
||||
|
||||
HDD/Netzwerkgeräte/... sparen nur bei relativ langer Inaktivität Energie
|
||||
\begin{itemize*}
|
||||
\item Aufgabe: Erzeugen kurzer, intensiver Zugriffsmuster $\rightarrow$ lange Inaktivitätsintervalle (für alle Geräte mit geringem Energieverbrauch im Ruhezustand)
|
||||
\item Beobachtung bei HDD-Geräten: i.A. vier Zustände mit absteigendem Energieverbrauch:
|
||||
\item Aufgabe: kurze, intensive Zugriffsmuster $\rightarrow$ lange Inaktivität
|
||||
\item HDD-Geräten: Zustände mit absteigendem Energieverbrauch:
|
||||
\begin{enumerate*}
|
||||
\item Aktiv: einziger Arbeitszustand
|
||||
\item Idle (Leerlauf): Platte rotiert, aber Plattenelektronik teilweise abgeschaltet
|
||||
\item Idle: Platte rotiert, Elektronik teilweise abgeschaltet
|
||||
\item Standby: Rotation abgeschaltet
|
||||
\item Sleep: gesamte restliche Elektronik abgeschaltet
|
||||
\end{enumerate*}
|
||||
\item ähnliche, noch stärker differenzierte Zustände bei DRAM
|
||||
\item ähnliche, noch stärker differenzierte Zustände bei DRAM
|
||||
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-energiezustände-festplatte.png}
|
||||
\item durch geringe Verlängerungen des idle - Intervalls kann signifikant der Energieverbrauch reduziert werden
|
||||
\end{itemize*}
|
||||
|
||||
Energiezustände beim Betrieb von Festplatten:
|
||||
\subsubsection{Prefetching-Mechanismus}
|
||||
\begin{itemize*}
|
||||
\item %\includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-energiezustände-festplatte.png}
|
||||
\item Schlussfolgerung: durch geringe Verlängerungen des idle - Intervalls kann signifikant der Energieverbrauch reduziert werden.
|
||||
\end{itemize*}
|
||||
|
||||
\paragraph{Prefetching-Mechanismus}
|
||||
|
||||
\begin{itemize*}
|
||||
\item Prefetching (,,Speichervorgriff'', vorausschauendes Lesen) \& Caching
|
||||
\item Prefetching (,,Speichervorgriff'', vorausschauend) \& Caching
|
||||
\begin{itemize*}
|
||||
\item Standard-Praxis bei moderner Datei-E/A
|
||||
\item Voraussetzung: Vorwissen über benötigte Folge von zukünftigen Datenblockreferenzen (z.B. Blockadressen für bestimmte Dateien, gewonnen durch Aufzeichnung früherer Zugriffsmuster beim Start von Anwendungen -Linux: readahead syscall)
|
||||
\item Ziel: Performanzverbesserungdurch Durchsatzerhöhung u. Latenzzeit-Verringerung
|
||||
\item Idee: Vorziehen möglichst vieler E/A-Anforderungen an Festplatte + zeitlich gleichmäßige Verteilung der verbleibenden
|
||||
\item Umsetzung: Caching (Zwischenspeichern) dieser vorausschauend gelesenen Blöcke in ungenutzten Hauptspeicherseitenrahmen ( pagecache )
|
||||
\item Voraussetzung: Vorwissen über benötigte Folge von zukünftigen Datenblockreferenzen
|
||||
\item Ziel: Performanzverbesserung durch Durchsatzerhöhung und Latenzzeit-Verringerung
|
||||
\item Idee: Vorziehen möglichst vieler E/A-Anforderungen an Festplatte + zeitlich gleichmäßige Verteilung verbleibender
|
||||
\item Umsetzung: Caching dieser vorausschauend gelesenen Blöcke in ungenutzten PageCache
|
||||
\end{itemize*}
|
||||
\item Folge: Inaktivitätsintervalle überwiegend sehr kurz $\rightarrow$ Energieeffizienz ...?
|
||||
\item Zugriffsoperation: (durch Anwendung)
|
||||
\begin{itemize*}
|
||||
\item access(x) ... greife (lesend/schreibend) auf den Inhalt von Festplattenblock x im Page Cache zu
|
||||
\end{itemize*}
|
||||
\item Festplattenoperationen:
|
||||
\item Folge: Inaktivität überwiegend sehr kurz $\rightarrow$ Energieeffizienz ...?
|
||||
\item Zugriffs-/Festplattenoperationen
|
||||
\begin{itemize*}
|
||||
\item access(x) ... greife auf Inhalt von Festplattenblock x im PageCache zu
|
||||
\item fetch(x) ... hole Block x nach einem access(x) von Festplatte
|
||||
\item prefetch(x) ... hole Block x ohne access(x) von Festplatte
|
||||
\item beide Operationen schreiben x in einen freien Platz des Festplattencaches; falls dieser voll ist ersetzen sie einen der Einträge gemäß fester Regeln $\rightarrow$ Teil der (Pre-) Fetching-Strategie
|
||||
\end{itemize*}
|
||||
\item Beispiel für solche Strategien: Anwendung ...
|
||||
\item Fetch-on-Demand-Strategie bisher (kein vorausschauendes Lesen)
|
||||
\item Traditionelles Prefetching
|
||||
\begin{itemize*}
|
||||
\item mit Datenblock-Referenzstrom A, B, C, D, E, F, G, ...
|
||||
\item mit konstanter Zugriffsdauer: 10 Zeiteinheiten je Blockzugriff
|
||||
\item Cache-Kapazität: 3 Datenblöcke
|
||||
\item Zeit zum Holen eines Blocks bei Cache-Miss: 1 Zeiteinheit
|
||||
\end{itemize*}
|
||||
\item Beispiel: Traditionelles Prefetching
|
||||
\begin{itemize*}
|
||||
\item Fetch-on-demand-Strategie (kein vorausschauendes Lesen)
|
||||
\item Strategie entsprechend Prefetching- Regeln nach Cao et al. {[}CFKL95{]} (= traditionelle Disk-Prefetching- Strategie)
|
||||
\item traditionelle Prefetching-Strategie: bestimmt
|
||||
\begin{itemize*}
|
||||
\item wann ein Datenblock von der Platte zu holen ist (HW-Zustand aktiv )
|
||||
\item welcher Block zu holen ist
|
||||
\item welcher Block zu ersetzen ist
|
||||
\item traditionelle Prefetching-Strategie: bestimmt
|
||||
\begin{itemize*}
|
||||
\item wann Block von der Platte holen (HW aktiv)
|
||||
\item welcher Block zu holen ist
|
||||
\item welcher Block zu ersetzen ist
|
||||
\end{itemize*}
|
||||
\item Regeln für diese Strategie:
|
||||
\begin{enumerate*}
|
||||
\item Optimales Prefetching: Jedes \emph{prefetch} sollte den nächsten Block im Referenzstrom in den Cache bringen, der noch nicht dort ist.
|
||||
\item Optimales Ersetzen: Bei jedem ersetzenden \emph{prefetch} sollte der Block überschrieben werden, der am spätesten in der Zukunft wieder benötigt wird.
|
||||
\item ,,Richte keinen Schaden an'': Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird.
|
||||
\item Erste Möglichkeit: Führe nie ein ersetzendes \emph{prefetch} aus, wenn dieses schon vorher hätte ausgeführt werden können.
|
||||
\end{itemize*}
|
||||
\begin{enumerate*}
|
||||
\item Optimales Prefetching: Jedes \emph{prefetch} sollte den nächsten Block im Referenzstrom in den Cache bringen, der noch nicht dort ist
|
||||
\item Optimales Ersetzen: Bei jedem ersetzenden \emph{prefetch} sollte der Block überschrieben werden, der am spätesten in der Zukunft wieder benötigt wird
|
||||
\item ,,Richte keinen Schaden an'': Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird
|
||||
\item Erste Möglichkeit: Führe nie ein ersetzendes \emph{prefetch} aus, wenn dieses schon vorher hätte ausgeführt werden können
|
||||
\end{enumerate*}
|
||||
\end{itemize*}
|
||||
\item
|
||||
Energieeffizientes Prefetching
|
||||
\item Energieeffizientes Prefetching
|
||||
\begin{itemize*}
|
||||
\item Optimale Ersetzungsstrategie und 3 unterschiedliche Prefetching-Strategien:
|
||||
\item Fetch-on-demand-Strategie:
|
||||
\begin{itemize*}
|
||||
\item Laufzeit: 66 ZE für access(A) ... access(F) , 7 Cache-Misses
|
||||
\item Disk-Idle-Zeit: 6 Intervalle zu je 10 ZE
|
||||
\end{itemize*}
|
||||
\item Strategie entsprechend Prefetching-Regeln {[}CFKL95{]} (traditionelle Disk-Prefetching-Strategie):
|
||||
\begin{itemize*}
|
||||
\item Laufzeit: 61 ZE für access(A) ... access(F) , 1 Cache-Miss
|
||||
\item Disk-Idle-Zeit: 5 Intervalle zu je 9 ZE und 1 Intervall zu 8 ZE (= 53 ZE)
|
||||
\end{itemize*}
|
||||
\item Energieeffiziente Prefetching-Strategie, die versucht Länge der Disk-Idle-Intervalle zu maximieren:
|
||||
\begin{itemize*}
|
||||
\item gleiche Laufzeit und gleiche Anzahl Cache-Misses wie traditionelles Prefetching
|
||||
\item Disk-Idle-Zeit: 2 Intervalle zu 27 bzw. 28 ZE (= 55 ZE)
|
||||
\end{itemize*}
|
||||
\item versucht Länge der Disk-Idle-Intervalle zu maximieren
|
||||
\end{itemize*}
|
||||
\item Auswertung: Regeln für energieeffiziente Prefetching-Strategie nach Papathanasiou elal.: {[}PaSc04{]}
|
||||
\begin{enumerate*}
|
||||
\item Optimales Prefetching: Jedes \emph{prefetch} sollte den nächsten Block im Referenzstrom in den Cache bringen, der noch nicht dort ist.
|
||||
\item Optimales Ersetzen: Bei jedem ersetzenden \emph{prefetch} sollte der Block überschrieben werden, der am spätesten in der Zukunft wieder benötigt wird.
|
||||
\item ,,Richte keinen Schaden an'': Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird.
|
||||
\item Maximiere Zugriffsfolgen: Führe immer dann nach einem \emph{fetch} oder \emph{prefetch} ein weiteres \emph{prefetch} aus, wenn Blöcke für eine Ersetzung geeignet sind. (i.S.v. Regel 3)
|
||||
\item Beachte Idle-Zeiten: Unterbrich nur dann eine Inaktivitätsperiode durch ein \emph{prefetch} , falls dieses sofort ausgeführt werden muss, um einen Cache-Miss zu vermeiden.
|
||||
\end{enumerate*}
|
||||
\begin{enumerate*}
|
||||
\item Optimales Prefetching: Jedes \emph{prefetch} sollte den nächsten Block im Referenzstrom in den Cache bringen, der noch nicht dort ist
|
||||
\item Optimales Ersetzen: Bei jedem ersetzenden \emph{prefetch} sollte der Block überschrieben werden, der am spätesten in der Zukunft wieder benötigt wird
|
||||
\item ,,Richte keinen Schaden an'': Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird
|
||||
\item Maximiere Zugriffsfolgen: Führe immer dann nach einem \emph{fetch}/\emph{prefetch} ein weiteres \emph{prefetch} aus, wenn Blöcke für eine Ersetzung geeignet sind
|
||||
\item Beachte Idle-Zeiten: Unterbrich nur dann eine Inaktivitätsperiode durch ein \emph{prefetch}, falls dieses sofort ausgeführt werden muss, um Cache-Miss zu vermeiden
|
||||
\end{enumerate*}
|
||||
\end{itemize*}
|
||||
|
||||
Allgemeine Schlussfolgerungen
|
||||
|
||||
\begin{enumerate*}
|
||||
\item Hardware-Spezifikation nutzen: Modi, in denen wenig Energie verbraucht wird
|
||||
\item Entwicklung von Strategien, die langen Aufenthalt in energiesparenden Modi ermöglichen , und dabei Leistungsparameter in vertretbarem Umfang reduzieren
|
||||
\item Entwicklung von Strategien, die langen Aufenthalt in energiesparenden Modi ermöglichen und dabei Leistungsparameter in vertretbarem Umfang reduzieren
|
||||
\item Implementieren dieser Strategien in Betriebssystemmechanismen zur Ressourcenverwaltung
|
||||
\end{enumerate*}
|
||||
|
||||
\subsubsection{Energieeffizientes Prozessormanagement}
|
||||
|
||||
Hardware-Gegebenheiten
|
||||
|
||||
\begin{itemize*}
|
||||
\item
|
||||
z.Zt. meistgenutzte Halbleitertechnologie für Prozessor-Hardware: CMOS
|
||||
\item z.Zt. meistgenutzte Halbleitertechnologie für Prozessor-Hardware: CMOS
|
||||
( Complementary Metal Oxide Semiconductor)
|
||||
\item
|
||||
Komponenten für Energieverbrauch: \$P = P\_\{switching\} +
|
||||
@ -495,7 +454,7 @@
|
||||
\item Beschränkung des Energieverbrauchs (durch Qualitätseinbußen, schlimmstenfalls Ausfall)ab einem oberen Schwellwert \$E\_\{max\}\$
|
||||
\item Problem: energieintensive Threads behindern alle nachfolgenden Threads trotz gleicher Priorität $\rightarrow$ Fairnessmaß von RR (gleiche Zeitscheibenlänge T ) untergraben
|
||||
%\begin{itemize*}
|
||||
\item %\includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-round-robin-unfair.png} \end{itemize*}
|
||||
%\item \includegraphics[width=\linewidth]{Assets/AdvancedOperatingSystems-round-robin-unfair.png} \end{itemize*}
|
||||
%\end{itemize*}
|
||||
\item Problem 2: energieintensive Threads niedrigerer Priorität behindern
|
||||
später ankommende Threads höherer Priorität
|
||||
|
Loading…
Reference in New Issue
Block a user