I datalogi, thrash er den dårlige ydeevne af et virtuel hukommelse (eller personsøgning)-system, når de samme sider indlæses gentagne gange på grund af mangel på hovedhukommelse til at holde dem i hukommelsen. Afhængigt af konfigurationen og algoritmen kan den faktiske gennemstrømning af et system forringes med flere størrelsesordener.
I datalogi, tæsk opstår, når en computers virtuelle hukommelsesressourcer overforbruges, hvilket fører til en konstant tilstand af side- og sidefejl, hvilket hæmmer de fleste behandlinger på applikationsniveau. Det får computerens ydeevne til at forringes eller kollapse. Situationen kan fortsætte på ubestemt tid, indtil brugeren lukker nogle kørende applikationer, eller de aktive processer frigør yderligere virtuelle hukommelsesressourcer.
For at vide mere klart om thrashing skal vi først vide om sidefejl og swapping.
Tærskning er, når sidefejlen og ombytning sker meget hyppigt med en højere hastighed, og så skal styresystemet bruge mere tid på at bytte disse sider. Denne tilstand i operativsystemet er kendt som thrashing. På grund af tæsk vil CPU-udnyttelsen blive reduceret eller ubetydelig.
Grundkonceptet er, at hvis en proces tildeles for få frames, vil der være for mange og for hyppige sidefejl. Som et resultat ville der ikke blive udført noget værdifuldt arbejde af CPU'en, og CPU-udnyttelsen ville falde drastisk.
Den langsigtede planlægger ville så forsøge at forbedre CPU-udnyttelsen ved at indlæse nogle flere processer i hukommelsen og derved øge graden af multiprogrammering. Desværre ville dette resultere i et yderligere fald i CPU-udnyttelsen, hvilket udløser en kædereaktion af højere sidefejl efterfulgt af en stigning i graden af multiprogrammering, kaldet thrashing.
Algoritmer under thrashing
Hver gang thrashing starter, forsøger operativsystemet at anvende enten den globale sideerstatningsalgoritme eller den lokale sideerstatningsalgoritme.
1. Global sideerstatning
Da global sideerstatning kan bringe en hvilken som helst side, forsøger den at bringe flere sider, hver gang der er fundet thrashing. Men det, der rent faktisk vil ske, er, at ingen proces får nok rammer, og som et resultat vil tæskningen stige mere og mere. Derfor er den globale sideerstatningsalgoritme ikke egnet, når der sker thrashing.
2. Lokal sideerstatning
I modsætning til den globale sideerstatningsalgoritme, vil lokal sideerstatning vælge sider, som kun tilhører den proces. Så der er en chance for at mindske tæsk. Men det er bevist, at der er mange ulemper, hvis vi bruger lokal sideerstatning. Derfor er lokal sideerstatning kun et alternativ til global sideerstatning i et thrashing-scenarie.
Årsager til tæsk
Programmer eller arbejdsbelastninger kan forårsage thrashing, og det resulterer i alvorlige ydeevneproblemer, såsom:
- Hvis CPU-udnyttelsen er for lav, øger vi graden af multiprogrammering ved at introducere et nyt system. Der bruges en global sideerstatningsalgoritme. CPU-planlæggeren ser den faldende CPU-udnyttelse og øger graden af multiprogrammering.
- CPU-udnyttelsen plottes mod graden af multiprogrammering.
- Efterhånden som graden af multiprogrammering øges, øges CPU-udnyttelsen også.
- Hvis graden af multiprogrammering øges yderligere, sætter thrashing ind, og CPU-udnyttelsen falder kraftigt.
- Så på dette tidspunkt, for at øge CPU-udnyttelsen og for at stoppe tæsk, må vi reducere graden af multiprogrammering.
Sådan fjerner du tæsk
Thrashing har nogle negative indvirkninger på harddiskens sundhed og systemets ydeevne. Derfor er det nødvendigt at tage nogle handlinger for at undgå det. For at løse problemet med thrashing er her følgende metoder, såsom:
Teknikker til at forhindre tæsk
Den lokale sideerstatning er bedre end den globale sideerstatning, men den lokale sideerstatning har mange ulemper, så det er nogle gange ikke nyttigt. Derfor er nedenfor nogle andre teknikker, der bruges til at håndtere thrashing:
1. Lokalitetsmodel
En lokalitet er et sæt sider, der aktivt bruges sammen. Lokalitetsmodellen siger, at når en proces udføres, bevæger den sig fra en lokalitet til en anden. Et program er således generelt sammensat af flere forskellige lokaliteter, som kan overlappe hinanden.
For eksempel, når en funktion kaldes, definerer den en ny lokalitet, hvor hukommelsesreferencer foretages til funktionskaldsinstruktionerne, lokale og globale variabler osv. På samme måde, når funktionen afsluttes, forlader processen denne lokalitet.
2. Arbejdssæt-model
Denne model er baseret på det ovenfor nævnte koncept for lokalitetsmodellen.
Det grundlæggende princip siger, at hvis vi allokerer nok rammer til en proces til at rumme dens nuværende lokalitet, vil den kun fejle, når den flytter til en ny lokalitet. Men hvis de tildelte rammer er mindre end størrelsen af den aktuelle lokalitet, er processen bundet til at tæske.
Ifølge denne model, baseret på parameter A, er arbejdssættet defineret som det sæt af sider i de seneste 'A'-sidereferencer. Derfor vil alle de aktivt brugte sider altid ende med at blive en del af arbejdssættet.
design mønstre java
Nøjagtigheden af arbejdssættet afhænger af værdien af parameter A. Hvis A er for stor, kan arbejdssæt overlappe hinanden. På den anden side, for mindre værdier af A, er lokaliteten muligvis ikke dækket helt.
Hvis D er den samlede efterspørgsel efter rammer og WSSjeger arbejdssætstørrelsen for proces i,
D = ⅀ WSSjeg
Nu, hvis 'm' er antallet af tilgængelige frames i hukommelsen, er der to muligheder:
- D>m, dvs. den samlede efterspørgsel overstiger antallet af frames, så vil thrashing forekomme, da nogle processer ikke ville få nok frames.
- D<=m, then there would be no thrashing.< li> =m,>
Hvis der er nok ekstra frames, så kan nogle flere processer indlæses i hukommelsen. På den anden side, hvis summeringen af arbejdssætstørrelser overstiger rammernes tilgængelighed, skal nogle af processerne suspenderes (skiftes ud af hukommelsen).
Denne teknik forhindrer tæsk og sikrer den højest mulige grad af multiprogrammering. Således optimerer det CPU-udnyttelsen.
3. Sidefejlsfrekvens
En mere direkte tilgang til at håndtere thrashing er den, der bruger Page-Fault Frequency-konceptet.
Problemet forbundet med thrashing er den høje sidefejlfrekvens, og derfor er konceptet her at kontrollere sidefejlfrekvensen.
Hvis sidefejlfrekvensen er for høj, indikerer det, at processen har tildelt for få frames. Tværtimod indikerer en lav sidefejlrate, at processen har for mange frames.
Øvre og nedre grænser kan etableres på den ønskede sidefejlfrekvens, som vist i diagrammet.
Hvis sidefejlfrekvensen falder under den nedre grænse, kan frames fjernes fra processen. På samme måde, hvis antallet af sidefejl overstiger den øvre grænse, kan flere frames allokeres til processen.
Med andre ord bør den grafiske tilstand af systemet holdes begrænset til det rektangulære område dannet i det givne diagram.
Hvis sidefejlfrekvensen er høj uden frie rammer, kan nogle af processerne suspenderes og allokeres til dem kan omallokeres til andre processer. De suspenderede processer kan genstarte senere.