Prefetching gekürzt

This commit is contained in:
WieErWill 2022-02-20 11:57:13 +01:00
parent c9f5d020b4
commit dbf21b0ffd
2 changed files with 64 additions and 105 deletions

Binary file not shown.

View File

@ -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