Ram og Windows en miniguide

Ram d.  21. maj. 2016, skrevet af Sven Bent
Vist: 2437 gange.

Sven
 
Superbruger
Tilføjet:
21-05-2016 02:12:15
Svar/Indlæg:
3661/82
Windows RAM haandtering er en ret kompliceret sag og paa trods af meget laesning og legning med Windows memory manager forstarr jeg den heller ikke helt.
men jeg vil her give et lille indblik i hvad der foregaar naar Windows haandtere ram.

Mange gaar med en opfattelse af ram er enten brug eller frit. Det lyder temmelig logisk det er trods alt blot en data opbverings enhede. ligesom en skotoejsAeske indeholder sko. saa indeholder RAm altsaa data. sadan var det ihvertfald da far var barn og vi skrev lange koder o et lilel dispaly med 80x25 bogstaver for at faa maskine til at virker som vi ville have det.

Ja jeg taler om DOS tiden. men slevdengang var ram en ret komplciret sag
Vi havde conventionelt hukkomelse. Uppper memory High memmory, Extended memory, Expanded memory.
Dengnag sad man som ubber noerd og pokede rundt i rammen for at finde smaa huller der ikke blev brugt saa man kunn foreoge sin Upper memory og flytter programmer derop for at frigive convetionelt hukkomelse.
Eller hvis man var lidt frisk kunne man overskrive sin monochrome display Bios shadow kopi. og foroge sin conventionelel hukkomelse til helt op til 700 kbytes og lidt til.

Heldgivis har vi det ikke saaledes mere og u har vi en storr slags hukkomelse.... eller naesten dag. der er stadgivaek lidt forskellelig slag hukommelse men det er typisk ikke brugeren der skal lege med det mere
Tilgengalede har vi med alt vores nye metode ti lat udnytte ram til at goeres voes pc hurtiger havnet i en komplicret udgave brugt/halt brugt/ikke brugt Fuzzy logic udgave der hurtigt kan forvirre den almindelig brugere


Lad mig started med det samme at forklare at windows ikke langer bruger fysisk ram som ram. den bruger det som en stor cache til at cache virtuel hukommelse. og lad dig ikke narre her er ofte mis forsaeelse. Virtuel hukommelse er IKKE det samme som din pagefil selvom det er naert beslaegtet.
Virtuel hukommelse er den metode Windows bruger til at styrre baade fysisk ram OG page file. HVad det reelt betyder er at programme ikke laenger for en fysisk placre i fysisk ram men en virtuell adresse til et stykke virtuel hukommelse.
f.eks kan et progam der snupper 1gb Hukommelse. bliver placet mellem 1GB og 2GB adressen. men det fortaeller inte i sig selv hvor det er henne i systemm.
Windows oversaette saa dise virtuel adresse til hvor data rent fysisk skal placres. det kan vare den bestemm sig for at 512mb af det skal placre i fysisk ram og det restende 512mb placere i din pagefil.
Vituel ram er simpelhetn blot et mellelam koncept som udgoer ALT den adresser bar data programmer kan tilgaa. typisk fysisk ram + pagefil


Ja ha det vi ved nu godt SvenBums. Kom ind i kampen. ok ok bevares jeg ville lige have grund pillen paa plads.
I windows findes en hel del bibliotek filers. aka .dll filer. du har nok stoed paa dem en del gange pga du manglede en her og der. Saadan en fatter et et lille bilbiotek af koder og algortimer. der kan .feks indeholder super optimeret Fast Furios Transform koder. eller koder til at finde ud af om et tal af et prim tal eller ej, eller alt muligt mellem himmel og jord. Den slags .dll filer har vi for at programmoere ikke skal opfinde dne dybe tallerken igen igen.
Et program kan alsa holdes mindre og udvikles hurtiger foride nogel af de grundliggende funktioner allerede er i windows eller kommer ind med andres udvidelses biblioteks filers. de betyder ogsaa at flere programmer der bruger den samme kode fra den samme dll. file saa er det kun den ene .dll fil der ska opdatere med hurtigere kode for at alle programmer er hurtigere. ret smart et have tingene samlet paa den maade. ( hvis altsaa det ikke var et helvede at holde styr paa men det er uvedekommende for dages emne

men nar nu et program laese sadda en .dll fil op saa skal det jo ogsaa op i ram.
Hvis progam A skal bruge en .dll fil og program B skal bruge den samme .dll fil saa kan vi jo hodt see det er dumt at hive dne op i fysisk ram 2 gange.
Heldivis har de kaere folk fra redmond tager hoejde for dette.

og her har vi saa vores forste brugt/ram ikek brug ram forvirrings for hvis di har progam A som fylder 1mb + 512kb .dll filer og program B som fylder 4mb og 1mb.dll filers hvor den bruger alle de .dll filers som program A bruger lige saa. hvor meget fylder de programm hver for sig og til sammen

A ville fylde 1mb +512kb = 1536kb
B Ville fylde 4mb + 1mb = 5mb
men tilsammen fylder de kun 1+4+1 mb = 6mb

Da de er et overlapp af hukkomelse brug kan vi altsaa ikke bare ligge storrelse af programmer sammen.
Det betyder ogsaa at vi ikke bare kan sige MAX virtuelle ram - programmers ram forbug = frit ram forbrug

Det vi har arbejde med her her memmory Workin set. det hvor meget ram som programmet har som "Beroerings flade"

HVis du tage en tur i taskmanger og gauer under process ( win7 og aledre) eller under details (win10) saa kan du her se denne stoerrelse. Du ser altsaa ikek her hvor meget fysisk ram der tage i brugt men hvor meget fysisk ram der beroeres)

vaelger du at saette nogel flere kolloner inde vil du se der er flere Hukommelse kolloner

f.eks
Memory Privat working set

Detter he er hvor meget programmer bruger for sig selv.
i oevenstaaende eksempel drejer det sig altsa om det forste tal. selve hovede koden uden de delte ram omraade til .dll filerne.

men heller ikke det goer det nemmere at forstaa hvad der er brugt og frit. for ligger vi dem sammen saa glemmer vi det brugte hukommelse omraade til .dll filerne.

ja det er ikke helt nemt.

nogle udre sig maaske over navnet working set og privat working set. og hvis du har win 10 speorger ud nok om Shared working set.
La os lige runde Shared af for god ordens skyld.

Shared working set af den del af processes hukkomelse omradde som er delt med andre. dvs i vores eksempel .dll filerne.

Saa Working set = Privat working set + Shared working set

puha heldigvis noget det var lidt nemt.

Men dette her er kun toppen af bjerget. for working sets hvad ente det er det ene eller andet handler om hvad der lige PT ligger i fysisk ram.
hvis du vaelger at slaa commit size til som kollone vil du har set hvad di program optager af virtuel hukommelse. ( igen ikke nodvendgivsi pagefil)

dvs commit size - Wokingset = pagefile

Du vil nok blive forbavset hvor meget de ligger i din pagefile og faa en trang til at foelge daarlig tweaks til at slaa din pagefil fra nar du ser dette.

men STOOOP. roer ikke ved din mus...
nar nu vi har lidt af ram grund principper paa plads saa kan vi begynde at kigge lidt paa hvordan windows reelt set bruge sin pagefil.

Igen har mange folk dne ide er din pagefil er til nar du loeber toer for fysisk ram. Det er til dels ret men det er absolut ikke den eneste opgaver.
Din pagefile er til for at give dig mere fysisk ram og/eller goere dit fysisk ram mere effektivt.

Se Windows er faktisk ret smart. Windows er godt klar over at nar du starter dit fancy Word, eller Excel op eller glukker paa porno i din browser. Jaa saa bruger du jo ikke hele programmer.
I word bruger du maaske ikke alle ordboegene eller mere avancre cliprts. i excel bruger du maaske ikke graffer. og i dit Porno glukkeri bruger du kun venstra haand.
Windows kan ikke goere mege for din venstre hand men den kan se i din programmer hvilke omradde af programmer du bruger og ikke bruger. nar du saa nu ikke bruger funktion X og Y. saa laver den en kopi i din pagefil af de hukommelse omraade som den kode tilhoere.

Hvilket giver ogsaa endu en komplicering af brugt/ikke brugt. vi ha haf flere programmer der har kode i samme ram omraade. Nu har vi et program som har kode i flere ram omraader.

og her kommer en lille mere forvirring. Det ram omraade dine ubrugt funktioner er ikke brugt...

Ja det er korrekt der ligger et stykke kode i din fysisk ram. men ram omradde er ikke brugt. det vil vise sig i din taskmanager som varende brugt. men her skal vi igen huske paa at vi maale berrogisn falde og ikke brugt som i optager ingen adgang for andre.

for nar dette stykke kode ligger i din pagefil saa ved windwos ogsaa godt at det kan overskrive kopiere i din fysik hukkomelse skulle det var noedvendigt.

Lad os antage du har af darlig vane med at have omkring 200tabs aaben i din por... webrowser. og saa skal der sgu lige games lidt doom 3
Du har kun brugt 6 af disse tabs i dennem sruf session saa windows har allerede lagt en kopi af de 194 andre tabs ud i din pagefile mens du ikke saa det.

Du starte doom op. og vupti windows overskrive de fysisk ram omradde fra din 194 tabs med doom.
praecist som hvis det var ubrugt ram.

og det er her at pagefil viser sin genialitet.

Skulle du nu have nok ram til baad at koere doom og 200tabs i din browser ville der ikke skee noget. windows er klog nok til at bruge "tomt" ram omraade foerst

jeg skriver "tomt" fordi hvis du saetter dig ned med en ram poker vil du se at der ikke er noget tomt ram i din maskine efter du har brugt den lidt tid.

Ser I Windows er mere smart end som saa. alt det fysisk ram omraade som du ikke bruger til din process/programmer.
det bruger windows til at gamme en kopi af de filer du har loades og de filer som den tror du skal bruge lige om lidt ( superfetch)
Windows prover med andre ord saa meget som muligt at lare hvad du bruger pa din pc og foer du har brug for det loade ting op du skal bruge og loade ting ud du ikke skal bruge. for konstant at have saa meget data som muligt du reelt set bruger i din hurtige fysisk ram, istedet for at spilde det paa tom plads og ting du alligevel aldrig bruger (Sibirisk stavekontrol).

nar du fjerne page fil handicapper du windows. i at udfore denne funktione. den kan ikke slippe af med kode du ikke bruger. og kan derved ikke frigive fysisk ram til at putte kode/data du bruger op og din maskine bliver en tand sloevere at arbejde med.


Der er nolge tips hvor de anbefale af slaa superfect fra for at spare ram. Det er igen placre paa et forkert opfattelse af brugt/ikke brugt.
Du kan have fysisk ram der indehodler data uden at det er Optaget. nar Superfect loade en fil op i din ram bliver ram omradde ikke saet som optaget. saa ligesom den sibirska stavekontrol windows smed en kopi i din pagefile. saa kan dette ram omraade superfect optager ogsaa direkte overskrives. efter superfect ogsaa blot er en kopi af hvad der ligger paa dit lager media er der ikek behove for at laese det i dine ram og gemme det et sted foerst. det blvier fuldstading ignored og overskrevet.

Ram cleaners
uha det er bare godt.... NOT
Det er logisk at taenke at ram cleanr er bare sagen for t frigore fysisk ram. men her skal vi tankte over en ting. selv hvis det gjorde en forskelle. hvad skal vi med ubrugt ram. Windows goer et utroligt arbejde med at fylde din ram med data og uden data i dine ram laver din ram ingenting.

Der findes to slags ram cleaners groft sagt
Den aldre type som bare loade et kaempe array af data. det tvinger windows til at overskrive de ram omrade hvor den har lag t en kopi ud i pagefilen. og hvis ram kraevet stiger fra din ram cleaners. begynder Windows haegte at smide data du rent faktisk bruger ud i din pagefile.
denn slags ram cleaner tager typisk lidt tid og du vil opleve at din maskine under cleanigns fasen er utroligt sloev. Eftersom alting skal pages ind og ud fra din pagefile
med andre ord... skidt skidt skidt

naeste sakgs ram cleaner bruger windows eget kal til at minimere process storrelse i fysisk ram
Det kan enteb vaere "SetProcessWorkingSetSize"
https://msdn.microsoft.com/en-...
hvor hvis du saetter max og min til -1 tvinger widows ti lat page saa mget ud til pagefil som muligt

Eller den mere direkte metode "EmptyWorkingSet"
https://msdn.microsoft.com/en-...
som er samme results men som kun kan tvinge Windows ti lat page en process fuld ud.

hvis du har sat "commit size" ti lat blvie vist i din taskmanger som tidliger foreslaaet. saa vi ldu se at disse ram cleaners goer absolut INGENTING paa dit commit size. med andre ord dit programmer tager stadgivake samme mangde virtuell hukommelse. det er blot blevet flyttet til din langsomme pagefil istedet for dine hurtige ram.

pracist det samme som windows ville have gjort HVIS det var nodvendigt og KUN ui nodvendig grad. med en ram cleaners goer du UDEN det er nodvendgics nodvensgis og du smider ALT ud.
og vi vil ikke de ting vi bruger lige nu ud i pagefile. pagefil er til ting vi ikke bruger. og fysisk ram til det vi bruger. saa helt haablorst at bruger denne slags Slange oile.

Det du skal huske paa er at disse ram cleaners slet ikke ved hvad du bruger lie nu og her. og hvis du f,esk har firefoxe vil du se firefox's working set droppe fra 500mb til maaske 20mb... og saa begynder den ellers at loade sig op igen fordi det var altsaa nodvendigt kode.
og mens det star paa arbejde din HDD eller SSD og din maskine bliver sloevet indtil alting ar komme tilbage til statsu quo
med andre ord efter et stykke tid har dit ram cleanr har NADA effekt udover at sloeve din maskine med en masse skrivning og laesning til og fra dit lager media.

Hvad med memmoryleaks hore jeg en nede i hjoernet sige.
NADA. det goer ingenting for memmory leaks. det hukommelse omraade som bliver slugt af et memory leak vil stadigvaek vare optaget, det er blot smidt ned paa din pagefile hvor det ente vill blive suget op i din fysiks ram igen., Eller windows ville have smidt det dernede anyway og frigigvet fysisk ram nar der var brug for det.


den hurtige paa aftrakkene vil nok ogsaa indse det lidt komisk nar en person anbeafle baade at slaa pagefile fra OG bruge en ramcleaner samtidigt

Det ene er et forsog paa at have saa meget data i ram og vaek fra pagefilen.
det andet er et forag paa at faa saa meget data i pagefile og vaek fra ram....
Komplet modsaetninger

sandheden er at det er et samarbejde mellem din pagefil og dine fysisk ram der giver det optimale hastighed.

Fysisk ram til dat du skal bruge.
pagefil til data du ikke bruger saa det ikke optager din fysisk ram.

Det sammenspil er bleve tweaket over mange windows generation. og smaa 10 sekunders tweak er ikke noget der er overset. hold fingrene vaek og lad windows haandtere det selv



Beklager all taste fejl jeg skulle lige presse det her ud mens konen blev klar til filmaften.
Jeg haaber det har gjort folk lidt klogere paa emnet og hvis der er nogen spoergsmal skriv dme her og jeg vil proeve at besvare dem til det bedste af min viden,



tid til film 😲
Sven
 
Superbruger
Tilføjet:
21-05-2016 02:30:52
Svar/Indlæg:
3661/82
Lidt om de kolloner i Windows taskmanger og hvad de betyder

http://windows.microsoft.com/e... =windows-7

Microsoft defination af working set
https://msdn.microsoft.com/en-...


nCa
 
Elitebruger
Tilføjet:
21-05-2016 12:08:30
Svar/Indlæg:
714/10
Hold da op Sven Bent 😛

Den må jeg færdiggøre senere 😴


XPAction
 
Superbruger
Tilføjet:
21-05-2016 15:15:05
Svar/Indlæg:
136/1
😲 wow sikke en lang tråd, det kunne være det laves som en artikel?


Sven
 
Superbruger
Tilføjet:
21-05-2016 17:08:33
Svar/Indlæg:
3661/82
I mit hovede fyldte det ikke saa meget 🤣


Ferns
 
Korrekturlæser
Tilføjet:
21-05-2016 20:38:43
Svar/Indlæg:
1442/81
Tak for indlægget Sven Bent! Det var en fornøjelse (og til tider en prøvelse) at læse. Jeg tror ikke jeg er blevet klogere på RAM og Pagefil, men jeg sidder alligevel med en fornemmelse af at være præsenteret for noget jeg ikke havde den fjerneste anelse om før... Dit indlæg vil i hvert tilfælde blive læst et par gange mere.

Forresten - Så er det vel givet på forhånd at Windows ikke kan gøre noget for min venstre hånd, det er jo lavet af Micro SOFT.


phansen
 
Superbruger
Tilføjet:
21-05-2016 22:08:00
Svar/Indlæg:
492/0
Windows 10 har fået et ekstra lag mellem ram og pagefile, nemlig komprimeret ram. Det betyder, at der går længere tid, inden data bliver skrevet til pagefilen.