Što je predmemorija na tvrdim diskovima

Predmemoriranjem zapisa na uređaju za pohranu naziva se upotreba nestabilne memorije velike brzine za prikupljanje naredbi za pisanje poslanih na uređaje za pohranu i njihovo predmemoriranje sve dok sporiji mediji (bilo fizički diskovi ili jeftina flash memorija) ne mogu s njima rukovati. Većina uređaja koji koriste predmemoriranje zapisa zahtijevaju neprekidno napajanje.

Da biste upravljali predmemoriranjem zapisa diska, otvorite Upravljačka ploča - Upravitelj uređaja.

U poglavlju Disk uređaji dvaput kliknite pogon koji želite.

Idite na karticu Političari

Brzo uklanjanje

Ova je vrijednost obično najbolji izbor za uređaje koje je potrebno često uklanjati iz sustava, kao što su USB flash pogoni, SD, MMC, Compact Flash ili slične memorijske kartice i drugi vanjski dodaci za pohranu.

Ako je odabrana opcija Brzo uklanjanje, tada Windows kontrolira naredbe proslijeđene uređaju metodom tzv prolazno predmemoriranje... S prolaznim predmemoriranjem uređaj tretira naredbe za pisanje kao da predmemorija nije prisutna. Predmemorija može pružiti malu prednost u izvedbi, ali naglasak je na maksimalnoj sigurnosti podataka presretanjem naredbi poslanih na primarni uređaj za pohranu. Glavna prednost je mogućnost brzog uklanjanja uređaja za pohranu bez rizika od gubitka podataka. Na primjer, ako slučajno uklonite flash pogon iz njegovog priključka, vjerojatnost gubitka zapisanih podataka značajno se smanjuje.

Ova je opcija obično optimalna za uređaje koji trebaju omogućiti najbrže moguće performanse; za uređaje koji se rijetko uklanjaju iz sustava. Ako je odabrana ova opcija i uređaj je isključen iz sustava prije nego što se na njega upišu svi podaci (na primjer, prilikom uklanjanja USB flash pogona), podaci se mogu izgubiti.

Ako je odabrana opcija Optimalne performanse, tada Windows koristi tehniku ​​koja se zove keširanje zapisivanja. Ova metoda omogućuje uređaju za pohranu da sam odredi hoće li predmemorija velike brzine uštedjeti vrijeme pri izvršavanju naredbi za pisanje. Ako je tako, uređaj govori računalu da su podaci uspješno spremljeni, iako se podaci možda zapravo ne nalaze na primarnom uređaju za pohranu (poput diska ili flash memorije). Ova metoda dramatično poboljšava performanse operacija pisanja, koje su često glavna uska grla za ukupne performanse sustava. No ako se iz bilo kojeg razloga izgubi napajanje uređaja, tada se mogu izgubiti svi podaci u predmemoriji (za koje računalo smatra da su sigurno pohranjeni).

Zapišite predmemoriju na disk

Po Windows zadano koristi write cache na disk. To znači da će sustav povremeno uputiti uređaj za pohranu da pošalje sve podatke u predmemoriji na primarni uređaj za pohranu. Odabirom ovog parametra onemogućuju se ove naredbe za periodični prijenos podataka. Ne podržavaju svi uređaji sve ove značajke.

Ako je primarna briga velike brzine prijenos podataka, trebali biste omogućiti oba parametra: u odjeljku Politika uklanjanja odaberite stavku Optimalne performanse, i u odjeljku Politika keširanja zapisa odaberite stavku Dopusti predmemoriranje zapisa za ovaj uređaj(ako hardver sustava i uređaj za pohranu podržavaju ove značajke).

Kako mogu promijeniti postavke keširanja zapisa za uređaj?

Većina uređaja za pohranu usmjerenih prema potrošačima, poput USB flash pogona, SD ili MMC kartica, ili vanjski pogoni ne dopušta promjenu postavki predmemoriranja za uređaj. Unutarnji tvrdi diskovi sa SATA ili SAS sučeljima isporučenim sa sustavom Windows obično dopuštaju promjenu ovih parametara (ovisno o proizvođaču uređaja). Da biste razumjeli mogućnosti keširanja određenog uređaja i odredili koje opcije najbolje odgovaraju vašim potrebama, pogledajte dokumentaciju proizvođača.

Saznajte više o sprječavanju gubitka podataka

Sustavi koji imaju omogućeno predmemoriranje zapisa bilo gdje između aplikacije i uređaja za pohranu moraju biti stabilni i ne podliježu skokovima struje. Ako uređaj priključen na sustav koristi predmemoriranje zapisivanja, algoritmi predmemoriranja uređaja pretpostavljaju stalnu dostupnost energije i za predmemoriju i premještaju podatke u i iz predmemorije. Ako se zna da sustav ili napajanje imaju potencijalnih problema s opskrbom energijom, onda se te prilike ne bi trebale koristiti.

Također biste trebali pažljivo ukloniti prijenosne uređaje za pohranu, poput USB flash pogona, SD, MMC ili Compact Flash kartica i vanjskih pogona. Prilikom korištenja parametra Sigurno uklanjanje Windows će u većini scenarija moći zaštititi korisničke podatke. Međutim, određeni upravljački programi ili aplikacije možda neće odgovarati modelu sustava Windows, što može dovesti do gubitka podataka kada se takvi uređaji uklone. Ako je moguće, otvorite aplikaciju Sigurno uklanjanje prije uklanjanja vanjskog uređaja za pohranu iz sustava.

Izvori: Windows Help Documentation.

AZPC - Osobno računalo od A do Z. Internet portal o računalima sa sustavom Windows.

Podsjetit ću vas da uslužni program Seagate SeaTools Enterprise omogućuje korisniku upravljanje politikom predmemoriranja i, posebno, prebacivanje najnovijih Seagate SCSI pogona između dva različiti modeli predmemoriranje - Način radne površine i Način poslužitelja. Ova se stavka u izborniku SeaTools naziva Performance Mode (PM) i može imati dvije vrijednosti- On (Desktop Mode) i Off (Server Mode). Razlike između ova dva načina rada su isključivo softverske - u slučaju Desktop načina rada, predmemorija tvrdi disk podijeljen je na fiksni broj segmenata stalne (jednake) veličine, a zatim se koriste za predmemoriranje pristupa za čitanje i pisanje. Štoviše, u zasebnoj stavci izbornika korisnik može čak i sam dodijeliti broj segmenata (upravljati segmentacijom predmemorije): na primjer, umjesto zadanih 32 segmenta, postavite drugu vrijednost (u ovom slučaju volumen svakog segmenta će proporcionalno smanjivati).

U slučaju poslužiteljskog načina rada, segmenti međuspremnika (predmemorije diska) mogu se dinamički (ponovno) dodijeliti, mijenjajući njihovu veličinu i broj. Sam mikroprocesor (i firmver) diska dinamički optimizira broj (i kapacitet) segmenata predmemorije ovisno o naredbama koje dolaze na disk za izvršenje.

Tada smo mogli saznati da upotreba novih pogona Seagate Cheetah u "Desktop" načinu rada (s fiksnim dijeljenjem prema zadanim postavkama - 32 segmenta) umjesto zadanog "Poslužitelja" s dinamičkim sjeckanjem može neznatno povećati performanse pogona u brojnim zadaci tipičniji za stolno računalo ili medijske poslužitelje. Štoviše, ovo povećanje ponekad može doseći 30-100% (!) Ovisno o vrsti zadatka i modelu diska, iako se u prosjeku procjenjuje na 30%, što, vidite, također nije loše. Među takvim zadacima su rutinski rad stolnog računala (testovi WinBench, PCmark, H2bench), čitanje i kopiranje datoteka, defragmentacija. Istodobno, u čisto poslužiteljskim aplikacijama performanse pogona ne padaju gotovo (ako padnu, ne padaju značajno). Međutim, uspjeli smo primijetiti primjetan dobitak korištenjem Desktop Mode -a samo na Cheetah 10K.7 disku, dok njegovu stariju sestru Cheetah 15K.4 nije bilo briga u kojem načinu rada raditi na desktop aplikacijama.

Pokušavajući dalje razumjeti kako je ošamućenje predmemorije ovih tvrdi diskovi o performansama u različitim aplikacijama i koji su načini segmentiranja (koliko memorijskih segmenata) korisniji pri izvršavanju određenih zadataka, istraživao sam utjecaj broja segmenata predmemorije na performanse Pogon Seagate Gepard 15K.4 u širokom rasponu vrijednosti- od 4 do 128 segmenata (4, 8, 16, 32, 64 i 128). Rezultati ovih studija predstavljeni su vašoj pozornosti u ovom dijelu pregleda. Dopustite mi da naglasim da su ovi rezultati zanimljivi ne samo za ovaj model pogona (ili SCSI pogona iz Seagatea općenito) - segmentiranje predmemorije i odabir broja segmenata jedan je od glavnih pravaca optimizacije firmvera, uključujući stolne pogone s ATA -om sučelja, koja su sada također opremljena s pretežno 8 MB međuspremnika. Stoga su rezultati izvedbe pogona opisani u ovom članku u različitim zadacima, ovisno o dijeljenju predmemorijske memorije, također relevantni za industriju ATA pogona za stolna računala. A budući da je metodologija ispitivanja opisana u prvom dijelu, idemo izravno na same rezultate.

No, prije nego što nastavimo s raspravom o rezultatima, pogledajmo pobliže strukturu i rad segmenata predmemorije pogona Seagate Cheetah 15K.4 kako bismo bolje razumjeli o čemu je riječ. Od osam megabajta za stvarnu predmemoriju (to jest za operacije predmemorije), ovdje je dostupno 7077 KB (ostalo je područje usluge). Ovo je područje podijeljeno na logičke segmente (Odabir načina rada Stranica 08h, bajt 13), koji se koriste za čitanje i pisanje podataka (za obavljanje funkcija čitanja unaprijed s ploča i odgođenog pisanja na površinu diska). Za pristup podacima na magnetskim pločama, segmenti koriste logičko adresiranje pogonskih blokova. Pogoni u ovoj seriji podržavaju najviše 64 segmenta predmemorije, pri čemu je duljina svakog segmenta cijeli broj sektora diskova. Količina dostupne predmemorijske memorije očito je ravnomjerno raspoređena po segmentima, odnosno ako postoje, recimo, 32 segmenta, tada je veličina svakog segmenta približno 220 KB. S dinamičkom segmentacijom (u načinu rada PM = isključeno), tvrdi disk može automatski promijeniti broj segmenata, ovisno o toku naredbi s hosta.

Poslužiteljske i stolne aplikacije zahtijevaju razne operacije predmemoriranje s diskova za optimalne performanse, pa je teško osigurati jednu konfiguraciju za najbolje izvršavanje ovih zadataka. Prema Seagateu, "desktop" aplikacije zahtijevaju konfiguriranje predmemorije kako bi brzo odgovorile na ponovljene zahtjeve veliki broj mali segmenti podataka bez odlaganja za čitanje ispred susjednih segmenata. Nasuprot tome, zadaci na strani poslužitelja zahtijevaju da predmemorija bude konfigurirana na takav način da osigurava primanje velikih količina sekvencijalnih podataka u zahtjevima koji se ne ponavljaju. U ovom slučaju važnija je mogućnost predmemorijske memorije za spremanje više podataka iz susjednih segmenata tijekom čitanja unaprijed. Stoga za stolni način rada proizvođač preporučuje korištenje 32 segmenta (u ranijim verzijama Cheetaha korišteno je 16 segmenata), a za poslužiteljski način prilagodljivi broj segmenata počinje od samo tri za cijelu predmemoriju, iako se tijekom rada može povećati . U našim eksperimentima o utjecaju broja segmenata na performanse u različitim aplikacijama ograničit ćemo se na raspon od 4 segmenta do 64 segmenta, a kao provjeru ćemo "pokrenuti" disk i sa 128 segmenata instaliranih u Program SeaTools Enterprise (program ne obavještava da je ovaj broj segmenata na ovom disku nevažeći).

Rezultati fizikalnih ispitivanja

Nema smisla prikazivati ​​linearne grafikone brzine čitanja s različitim brojem segmenata predmemorije - isti su. No prema brzini sučelja Ultra320 SCSI izmjerenom testovima, možete primijetiti vrlo znatiželjnu sliku: sa 64 segmenta neki programi počinju pogrešno određivati ​​brzinu sučelja, smanjujući je za više od reda veličine.

U smislu izmjerenog prosječnog vremena pristupa, razlike između različitog broja segmenata predmemorije postaju uočljivije - kako se segmentacija smanjuje, prosjek izmjeren prema Windows vrijeme pristup čitanja neznatno raste, a značajno bolje očitanje opaža se u načinu rada PM = isključeno, iako je teško ustvrditi da je broj segmenata vrlo mali ili, naprotiv, vrlo velik na temelju tih podataka. Moguće je da disk u ovom slučaju jednostavno počinje zanemarivati ​​unaprijed dohvaćeno čitanje kako bi se isključila dodatna kašnjenja.

Učinkovitost algoritama lijenog pisanja firmvera diska i keširanje podataka zapisanih u međuspremniku pogona možete pokušati procijeniti prema tome kako prosječno vrijeme pristupa za pisanje izmjereno operativnim sustavom pada u odnosu na očitanje s omogućenim keširanjem pogona za povrat (to je uvijek bilo omogućeno u našim testovima). Da bismo to učinili, obično koristimo rezultate C "T H2benchW testa, ali ovaj put ćemo sliku nadopuniti testom u programu IOmeter, za koje su uzorci čitanja i pisanja koristili 100% slučajni pristup u blokovima od 512 bajtova s jedinicom dubine reda zahtjeva. (Naravno, ne biste trebali misliti da prosječno vrijeme pristupa pisanju u dva donja dijagrama doista odražava ovo tjelesne karakteristike pogona! Ovo je samo određeni parametar, programski izmjeren pomoću testa, po kojem se može prosuditi učinkovitost keširanja zapisa u međuspremnik diska. Stvarno prosječno vrijeme pristupa pisanju koje je proizvođač izjavio za Cheetah 15K.4 je 4,0 + 2,0 = 6,0 ms). Usput, očekujući pitanja, napominjem da u ovom slučaju (to jest, kad je omogućeno lijeno pisanje na disk), pogon izvješćuje hosta o uspješnom dovršenju naredbe pisanja (DOBAR status) čim zapisuju se u predmemoriju, a ne izravno u magnetski medij ... To je razlog niže vrijednosti prosječnog vremena pristupa upisu izmjerenog izvana nego analognog parametra pri čitanju.

Prema rezultatima ovih testova, postoji jasna ovisnost učinkovitosti keširanja nasumičnog zapisa malih blokova podataka o broju segmenata predmemorije - što više segmenata, to bolje. S četiri segmenta učinkovitost naglo pada, a prosječno vrijeme pristupa za pisanje raste gotovo do vrijednosti za čitanje. A u "poslužiteljskom načinu" broj segmenata u ovom je slučaju očito blizu 32. Slučajevi od 64 i "128" segmenta potpuno su identični, što potvrđuje softversko ograničenje na razini od 64 segmenta s vrha.

Zanimljivo je da test IOmeter u najjednostavnijim uzorcima za nasumični pristup u blokovima od 512 bajta daje točno iste vrijednosti pri pisanju kao i C "T H2BenchW test (s točnošću doslovno stotinki milisekunde), dok pri očitanju IOmetra pokazao je malo precijenjeni rezultat u cijelom rasponu segmentacije - moguće 0,1-0,19 ms razlike s drugim testovima za vrijeme slučajnog pristupa tijekom čitanja zbog nekih "unutarnjih" razloga za IOmeter (ili veličina bloka od 512 bajtova umjesto 0 bajtova, što je idealno potrebno za takva mjerenja). Međutim, rezultati očitanja IOmetra praktički se podudaraju s rezultatima testa diska programa AIDA32.

Performanse u aplikacijama

Prijeđimo na mjerila performansi pohrane u aplikacijama. I prije svega, pokušajmo saznati koliko su diskovi optimizirani za višestruko nit. Da bih to učinio, tradicionalno koristim testove u programu NBench 2.4, gdje se datoteke od 100 MB zapisuju i čitaju s diska u nekoliko istovremenih niti.

Ovaj dijagram nam omogućuje da procijenimo učinkovitost algoritama za višestruko lijeno pisanje tvrdih diskova u stvarnim (a ne sintetičkim, kao što je to bilo na dijagramu s prosječnim vremenom pristupa) uvjetima kada operativni sustav radi s datotekama. Vodstvo oba Maxtor SCSI diska pri pisanju u nekoliko istovremenih tokova je nesumnjivo, ali u Chiti već opažamo određeni optimum u području između 8 i 16 segmenata, dok pri višim i nižim vrijednostima brzina diska za te zadatke pada . Za način poslužitelja, broj segmenata je očito 32 (s dobrom točnošću :)), a "128" segmenata je zapravo 64.

Za čitanje s više niti, pogoni Seagate očito se poboljšavaju u odnosu na pogone Maxtor. Što se tiče utjecaja segmentacije, tada, kao i kod snimanja, promatramo određeni optimum bliže 8 segmenata (tijekom snimanja bio je bliže 16 segmenata), a s vrlo velikom segmentacijom (64) brzina diska značajno se smanjuje (kao u snimanju) ... Zadovoljstvo je što poslužiteljski način rada "nadzire bazar" domaćina i mijenja oštrenje s 32 pri pisanju na ~ 8 pri čitanju.

Pogledajmo sada kako se diskovi ponašaju u "starim", ali još uvijek popularnim Disk WinMark 99 testovima iz paketa WinBench 99. Dopustite mi da vas podsjetim da ove testove provodimo ne samo za "početak", već i za "sredinu" ( u smislu volumena) fizički mediji za dva datotečna sustava, a dijagrami prikazuju prosječne rezultate. Naravno, ovi testovi nisu "profilni" za SCSI pogone, a mi ovdje predstavljamo njihove rezultate, radije odajemo počast samom testu i onima koji su navikli procjenjivati ​​brzinu diska prema testovima WinBench 99. Kao "utjehu" napominjemo da će nam ovi testovi s određenim stupnjem sigurnosti pokazati kakve su performanse ovih pogona poduzeća pri izvršavanju zadataka tipičnijih za stolno računalo.

Očito ovdje postoji optimum segmentacije, a s malim brojem segmenata disk izgleda neizražajno, a s 32 segmenta - najbolji način(možda su zato programeri Seagatea "pomaknuli" zadanu postavku Desktop Mode sa 16 na 32 segmenta). Međutim, za način poslužitelja u uredskim (poslovnim) zadacima segmentacija nije sasvim optimalna, dok je za profesionalne (vrhunske) performanse segmentacija više nego optimizirana, osjetno nadmašujući čak i optimalnu "stalnu" segmentaciju. Očigledno se tijekom izvođenja testa mijenja ovisno o tijeku naredbi i zbog toga se dobiva povećanje ukupne izvedbe.

Nažalost, takva se optimizacija "tijekom testa" ne primjećuje kod novijih "track" složenih testova za procjenu "desktop" performansi diskova u paketima PCMakr04 i C "T H2BenchW.

Na oba (ili bolje rečeno, na 10 različitih) "tragova aktivnosti" inteligencija načina poslužitelja zamjetno je inferiorna u odnosu na optimalnu konstantnu segmentaciju, koja je za PCmark04 oko 8 segmenata, a za H2benchW - 16 segmenata.

Za oba ova testa, 4 segmenta predmemorije pokazuju se vrlo nepoželjnima, a također i 64, pa je teško reći gdje način rada poslužitelja više gravitira u ovom slučaju.

Za razliku od ovih, naravno, svi isti sintetički (iako vrlo slični stvarnosti) testovi - potpuno "pravi" test brzine diskova s ​​privremenom datotekom Adobe programi Photoshop. Ovdje je situacija mnogo mračnija - što više segmenata, to bolje! Način poslužitelja ga je gotovo "ulovio", koristeći 32 segmenta za svoj rad (iako bi 64 bilo čak i malo bolje).

Mjerila Intel Iometer

Prijeđimo na zadatke koji su tipičniji za profile korištenja SCSI pogona - rad različitih poslužitelja (DataBase, File Server, Web Server) i radne stanice (Workstation) prema odgovarajućim obrascima u verziji Intel IOmeter 2003.5.10.

Maxtor najbolje simulira poslužitelj baze podataka, dok je način poslužitelja najisplativiji za Seagate, iako je zapravo ovaj potonji vrlo blizu 32 trajna segmenta (svaki po 220 KB). Manje ili više segmentacije je u ovom slučaju gore. Međutim, ovaj je uzorak previše jednostavan u smislu vrste zahtjeva - da vidimo što će se dogoditi sa složenijim uzorcima.

Prilikom oponašanja poslužitelj datoteka adaptivna segmentacija ponovno vodi, iako je zaostatak za njom za 16 konstantnih segmenata zanemariv (32 segmenta su ovdje malo lošija, iako su i sasvim dovoljna). S malom segmentacijom dolazi do pogoršanja u velikom redu naredbi, a pri prevelikom (64) bilo koji red općenito je kontraindiciran - očito se u ovom slučaju veličina sektora predmemorije ispostavlja da je premala (manja od 111 KB, odnosno samo 220 blokova na mediju) za učinkovito predmemoriranje količina podataka razumne veličine.

Konačno, za web poslužitelj vidimo još zabavniju sliku - s redom naredbi NON -ONE, način poslužitelja je ekvivalentan bilo koji razina segmentacije, osim 64, iako je pojedinačno nešto bolja od svih ostalih.

Kao rezultat geometrijskog usrednjavanja opterećenja poslužitelja prikazanih gore uzorcima i redovima zahtjeva (bez pondera), otkrivamo da je adaptivno sharding najbolje za takve zadatke, iako 32 konstantna segmenta neznatno zaostaju, a 16 segmenata također izgledaju dobro. Općenito, izbor Seagatea sasvim je razumljiv.

Što se tiče uzorka " radna stanica", Da je ovdje način poslužitelja očito najbolji.

Optimum za trajnu segmentaciju je na razini od 16 segmenata.

Sada - naši uzorci za IOmeter, koji su namjenski bliži stolnim računalima, iako su definitivno indikativni za pohranu podataka u poduzećima, budući da u "duboko profesionalnim" sustavima tvrdi diskovi čitaju i pišu velike i male datoteke, a ponekad i kopiraju datoteke. A budući da je priroda poziva u ovim uzorcima u tim uzorcima u testu IOmeter (nasumične adrese unutar cijelog volumena diska) tipičnija za sustave klase poslužitelja, važnost ovih uzoraka za diskove koji se proučavaju je veća.

Čitanje velikih datoteka opet je bolje za Poslužiteljski način, osim nerazumljivog pada na QD = 4. Međutim, mali broj velikih segmenata očito je poželjniji za disk na tim operacijama (što je u načelu predvidljivo i odlično se slaže s rezultatima za čitanje datoteka s više niti, vidi gore).

Sporadično snimanje velike datoteke, s druge strane, i dalje su preteške za inteligenciju poslužiteljskog načina rada, a ovdje je konstantna segmentacija na razini od 8-16 segmenata povoljnija, kao i kod snimanja datoteka s više niti, vidi gore. Odvojeno, napominjemo da je u tim operacijama veliko segmentiranje predmemorije izuzetno štetno - na razini od 64 segmenta. Međutim, pokazalo se da je korisno za male operacije čitanja datoteka s velikim redom zahtjeva:

Mislim da je ovo ono što poslužiteljski način koristi za odabir prilagodljivog načina - njihovi su grafikoni vrlo slični.

Istodobno, pri pisanju malih datoteka na nasumične adrese, 64 segmenta ponovno ne uspijevaju, a način poslužitelja ovdje je inferioran u odnosu na stalnu segmentaciju s razinom od 8-16 segmenata po predmemoriji, iako se mogu vidjeti napori poslužiteljskog načina korištenja optimalnih postavki ( samo s 32-64 segmenata u redu izašlo je 64 peha;)).

Kopiranje velikih datoteka očit je neuspjeh načina poslužitelja! Ovdje je očitavanje s razinom 16 očito povoljnije (ovo je optimalno, budući da su 8 i 32 lošiji u redu 4).

Što se tiče kopiranja malih datoteka, 8-16-32 segmenata ovdje su praktički jednaki, nadmašujući 64 segmenta (dovoljno čudno), a poslužiteljski način rada je malo "čudan".

Na temelju rezultata geometrijskog usrednjavanja podataka za slučajno čitanje, pisanje i kopiranje velikih i malih datoteka, otkrivamo da se najbolji rezultat u prosjeku daje stalnom segmentacijom s razinom od samo 4 segmenta po predmemoriji (to jest, veličine segmenata u odnosu na 1,5 MB!), Dok su 8 i 16 segmenata približno jednaki i gotovo da nisu zaostajali za 4 segmenta, ali su 64 segmenta jasno kontraindicirana. U prosjeku je prilagodljivi način poslužitelja samo neznatno podlegao stalnoj segmentaciji - gubitak od jedan posto teško se može smatrati zamjetnim.

Ostaje napomenuti da pri simulaciji defragmentacije promatramo približnu jednakost svih razina stalne segmentacije i malu prednost načina rada poslužitelja (za istih 1%).

A u uzorku strujanja čitanja i pisanja u velikim i malim blokovima, malo je povoljnije koristiti mali broj segmenata, iako su opet razlike u brzini konfiguracija predmemorije ovdje, začudo, homeopatske.

zaključci

Nakon što su u drugom dijelu našeg pregleda proveli detaljniju studiju utjecaja sharinga predmemorije na performanse pogona Seagate Cheetah 15K.4 u različitim zadacima, želio bih napomenuti da programeri nisu imenovali načine predmemorije kako su ih nazvali s razlogom: u poslužiteljskom načinu rada prilagođavanjem oštre memorije često se izvodi predmemorijska memorija za izvršavajući zadatak, a to ponekad dovodi do vrlo dobrih rezultata - osobito pri izvođenju "teških" zadataka, uključujući obrasce poslužitelja u Intel IOmetru, i High-End Disk WinMark 99 test, te nasumično čitanje malih blokova po cijelom disku ... Istodobno, često se pokaže da je odabir razine razrješivanja predmemorije u poslužiteljskom načinu rada neoptimalan (i zahtijeva daljnji rad) poboljšati kriterije za analizu tijeka naredbi domaćina), a zatim Desktop Mode izlazi s fiksnim dijeljenjem na razini od 8, 16 ili 32 segmenta po predmemoriji. Štoviše, ovisno o vrsti zadatka, ponekad je isplativije koristiti 16 i 32, a ponekad - 8 ili samo 4 memorijska segmenta! Potonji uključuju čitanje i pisanje s više niti (nasumično i sekvencijalno), testove praćenja poput PCMark04 i streaming zadatke uz istovremeno čitanje i pisanje. Iako "sintetika" za slučajni pristup pisanju jasno pokazuje da se učinkovitost lijenog pisanja (na proizvoljnim adresama) značajno smanjuje sa smanjenjem broja segmenata. Odnosno, postoji borba između dva trenda - i zato je u prosjeku učinkovitije koristiti 16 ili 32 segmenta po 8 MB međuspremnika. Ako se veličina međuspremnika udvostruči, može se predvidjeti da je isplativije zadržati broj segmenata na razini 16-32, ali proporcionalnim povećanjem kapaciteta svakog segmenta prosječna izvedba pogona može se značajno povećati. Očigledno, čak i sada neučinkovito u većini zadataka, segmentiranje predmemorije sa 64 segmenta pri udvostručavanju veličine međuspremnika može se pokazati vrlo korisnim, dok će korištenje 4 ili čak 8 segmenata u ovom slučaju postati neučinkovito. Međutim, ti zaključci također snažno ovise o tome koji blokovi operacijskog sustava i aplikacija više vole raditi s pogonom i koje se datoteke koriste u ovom slučaju. Sasvim je moguće da se pri promjeni okruženja optimalno dijeljenje predmemorije može pomaknuti u jednom ili drugom smjeru. Pa, želimo Seagateu uspjeh u optimiziranju "inteligencije" poslužiteljskog načina rada, koji u određenoj mjeri može ublažiti tu "ovisnost o sustavu" i "ovisnost o zadatku" tako što će naučiti kako odabrati najoptimalniju segmentaciju ovisno o toku naredbe domaćina u najbolji način.

Najpoznatiji Alyosha Runet dijeli šokantne informacije.
http://www.exler.ru/blog/item/12406/?25

Sjećam se da sam devedesetih na raznim računalima koristio takozvane kontrolere predmemorije za koje su performanse bile važne pri radu s tvrdim diskom: to su bile kartice opremljene utorima za RAM memorija, u koji je umetnuta određena količina ove memorije, a uz pomoć kartice korištena je za spremanje podataka s tvrdog diska. Takva stvar uvelike je ubrzala rad s tvrdim diskom, osobito kada se koriste grafički paketi poput Corel Drawa.

Pogotovo kada koristite grafičke pakete poput Corel Drawa. Točno.
(pucketanje prsnutih šablona, ​​tup udarac glavom o stol)

Prvo, definirajmo što je predmemorija hardverskog diska.
Općenito, ovo je mali dio operativnog materijala, "ušivenog" u elektroniku tvrdog diska.

Keš memorija djeluje kao međuspremnik za spremanje međuproizvoda koji su već pročitani s tvrdog diska ali još nisu podneseni na daljnju obradu i za pohranu podataka kojima sustav pristupa dosta često... Potreba za prolaznom pohranom uzrokovana je razlikom između brzine čitanja podataka s tvrdog diska i propusnosti sustava.

Ako sustav često koristi datoteku, bit će smještena u predmemoriju diska kako 1) ne bi nepotrebno povukao disk i 2) ubrzao pristup ovoj datoteci. Ubijanje dvije ptice jednim udarcem.

Općenito govoreći, nije datoteka koja se stavlja u predmemoriju, već bilo koji sadržaj blokova tvrdog diska koji se često čita. Na primjer, podaci o uslugama sustav datoteka... Ili MBR. Ili 12 kilobajta iz sredine datoteke baze podataka od gigabajta. Disk ne razlikuje svoj sadržaj, nije ga briga.
Situacija s datotekom data je radi jasnoće.

Problem je u tome što su se 90 -ih proizvodili diskovi ili bez predmemorije, ili su bili premali za pohranu potrebnih podataka. I ovaj je problem doista riješen upotrebom kontrolera predmemorije.

Tada su diskovi postali osjetno brži, operacijski sustav počeo je pristojno keširati, pa, pojedini kontrolori predmemorije polako su izumrli, pogotovo jer nisu bili jeftini, plus za njih ste ipak morali kupiti memoriju.

Što se tiče relativne brzine, tvrdi diskovi nisu bili daleko od brzine 90 -ih: oni su i dalje najsporiji dio računala. No, napredak tehnologije omogućio je umetanje dovoljno cache memorije u diskove. Dovoljno da se eliminira potreba za zasebnim kontrolerima predmemorije.

Osim toga, u Unix OS -u "dodatni" (nekorišteni) RAM djeluje kao dodatna predmemorija. Takozvani, predmemorija softverskog diska... Ponekad se naziva i "međuspremnik", ali to je nešto drugačije.

Windows ga također imaju, ali sve njegove prednosti u potpunosti se nadoknađuju neadekvatnom upotrebom datoteke straničenja.
Normalno stanje sustava je da se sadržaj RAM -a nalazi na disku (pagefile.sys), a sadržaj diska u RAM -u (predmemorija soft diska). Shizofrenija.

Ne tako davno ti su se kontroleri predmemorije počeli vraćati, ali već u obliku SSD pogona. Prvo su se pojavili takozvani hibridni pogoni-obični tvrdi diskovi, u koje je također ugrađen zaseban mali SSD (16-32 GB), koji se koristio isključivo za predmemoriranje.

Autor ne razumije da nigdje ništa nije otišlo, pa se sada može vratiti s vatrometom i pompom.
A da su hibridni pogoni marketinški trik (iz nekog razloga, SSD od 16 GB bio je uguran u običan vijak, pa čak i sa smanjenom funkcionalnošću).
Što je logičnije, lakše i ispravnije koristiti dva vijka: brzi SSD za sustav i obični vijak za podatke. Za predmemoriju od 16 svirki očaravajuća je glupost (uz jednu napomenu: na ovaj trenutak ).

A sada su počeli proizvoditi zasebne SSD -ove, koji se također koriste posebno za predmemoriranje.

Pročitajte - obični SSD diskovi s crvenim natpisom "Cache Only".

Gore od lamera samo je lamer s velikom publikom. ©

Danas je uobičajeno skladištenje informacija magnetsko HDD... Ima određenu količinu memorije namijenjenu za pohranu osnovnih podataka. Također ima međuspremnik, čija je svrha pohranjivanje posrednih podataka. Profesionalci nazivaju međuspremnik tvrdog diska izrazom "cache memory" ili jednostavno "cache". Shvatimo zašto je potreban HDD međuspremnik, na što utječe i koliki je.

Međuspremnik tvrdog diska pomaže operacijski sustav privremeno pohraniti podatke koji su pročitani iz glavne memorije tvrdog diska, ali nisu preneseni na obradu. Potreba za tranzitnom memorijom posljedica je činjenice da je brzina čitanja informacija s HDD -a i propusnost OS se značajno razlikuje. Stoga računalo treba privremeno pohraniti podatke u "predmemoriju", pa ih tek onda koristiti za njihovu namjenu.

Sam međuspremnik tvrdog diska nije zaseban sektor, kako vjeruju nesposobni korisnici računala. To je poseban memorijski čip koji se nalazi na unutarnjoj ploči tvrdog diska. Takva mikro kola mogu raditi mnogo brže od samog pogona. Zbog toga uzrokuju povećanje (za nekoliko posto) performansi računala koje se opaža tijekom rada.

Valja napomenuti da veličina "predmemorije" ovisi o određenom modelu diska. Ranije je to bilo oko 8 megabajta, a ta se brojka smatrala zadovoljavajućom. Međutim, s napretkom tehnologije, proizvođači su uspjeli proizvesti čipove s više memorije. Stoga većina modernih tvrdih diskova ima međuspremnik čija veličina varira od 32 do 128 megabajta. Naravno, najveći "predmemorija" instaliran je u skupim modelima.

Kako međuspremnik tvrdog diska utječe na performanse

Sada ćemo vam reći zašto veličina međuspremnika tvrdog diska utječe na performanse računala. Teoretski, što će više informacija biti u "predmemoriji", operacijski sustav će rjeđe pristupiti tvrdom disku. To se posebno odnosi na radni scenarij kada potencijalni korisnik obrađuje veliki broj malih datoteka. Jednostavno prelaze u međuspremnik tvrdog diska i tamo čekaju svoj red.

Međutim, ako se računalo koristi za obradu velikih datoteka, tada "predmemorija" gubi važnost. Uostalom, informacije ne mogu stati na mikro sklopove čiji je volumen mali. Kao rezultat toga, korisnik neće primijetiti povećanje performansi računala jer se međuspremnik teško koristi. To se događa u slučajevima kada će se u operacijskom sustavu pokrenuti programi za uređivanje video datoteka itd.

Stoga se pri kupnji novog tvrdog diska preporučuje obratiti pozornost na veličinu "predmemorije" samo ako se planirate stalno baviti obradom malih datoteka. Tada će se pokazati da ćete zaista primijetiti povećanje vaše produktivnosti osobno računalo... A ako će se računalo koristiti za uobičajene dnevne zadatke ili obradu velikih datoteka, međuspremniku ne možete pridavati nikakvu važnost.

Vrlo važan, specifičan oblik međuspremnika je predmemoriranje ... Ovaj se izraz odnosi na korištenje relativno male, ali brze memorije kako bi se broj poziva smanjio na sporiju, veliku memoriju.

Ideja iza predmemorije temelji se na tzv hipoteza o lokalitetu poveznice ... Ova hipoteza je sljedeća. Ako je u nekom trenutku došlo do pristupa određenom podatku, tada je u bliskoj budućnosti s velikom vjerojatnošću moguće očekivati ​​ponavljanje poziva istim podacima ili susjednim podacima. Naravno, lokalitet poveznica ne može se smatrati zakonom, ali praksa pokazuje da je ta hipoteza opravdana za veliku većinu programa.

U modernim računalnim sustavima može se koristiti nekoliko razina predmemorije. V. ovaj tečaj hardverska predmemorija procesora se ne uzima u obzir, što omogućuje smanjenje broja pristupa glavnoj memoriji zbog upotrebe registara velike brzine. Softversko predmemoriranje uređaja sa slučajnim pristupom (diskovi) izravnije je povezano s radom OS -a. U ovom se slučaju hipoteza o lokalitetu veza može preformulisati točnije: ako program čita ili piše podatke s određenog bloka diska, onda je vrlo vjerojatno da će u bliskoj budućnosti biti još operacija čitanja ili pisanja podataka iz istog bloka.

Uloga brze memorije (cache) ovdje je niz međuspremnika koji se nalaze u sistemskoj memoriji. Svaki međuspremnik sastoji se od zaglavlja i podatkovnog bloka koji po veličini odgovaraju bloku (sektoru) diska. Zaglavlje međuspremnika sadrži adresu bloka diska čija se kopija trenutno nalazi u međuspremniku i nekoliko zastavica koje karakteriziraju stanje međuspremnika.

Kad sustav primi zahtjev za čitanje ili pisanje određenog bloka podataka s diska, prvo provjerava je li kopija tog bloka trenutno u jednom od međuspremnika predmemorije. To zahtijeva pretraživanje kroz zaglavlja međuspremnika. Ako se blok nalazi u predmemoriji, tada se disku neće pristupiti. Umjesto toga, podaci se čitaju iz međuspremnika ili se zapisuju u međuspremnik. U slučaju upisivanja podataka, također treba u zaglavlju međuspremnika upotrijebiti posebnu zastavicu da je međuspremnik postao " prljavo ", Tj. njegov se sadržaj ne podudara s podacima na disku.

Ako traženi blok diska nije pronađen u predmemoriji, tada mu se mora dodijeliti međuspremnik. Problem je u tome što je ukupan broj međuspremnika predmemorije ograničen. Da biste jedan od njih dobili za traženi blok, jedan od blokova koji su tamo pohranjeni mora biti "istisnut" iz predmemorije. U tom slučaju, ako je prethodno isključeni blok "prljav", tada ga je potrebno "očistiti", tj. zapisan na disk. Kada je "čisti" blok isključen, nije potrebno izvoditi nikakve operacije s diskom.

Koji blok u predmemoriji treba odabrati za iseljenje radi smanjenja ukupnog broja pristupa disku? Ovo je iznimno važno pitanje, a ako se netočno riješi, tada se cijeli rad sustava može usporiti zbog stalnih pristupa disku.

Za ovaj problem postoji teoretski optimalno rješenje koje je sljedeće. Broj pristupa disku bit će minimalan ako svaki put odaberete za iseljenje blok podataka kojima neće biti moguće pristupiti najduže u budućnosti. Nažalost, nemoguće je koristiti ovo pravilo u praksi, jer je slijed pristupa blokovima diskova nepredvidljiv. Ovaj teorijski rezultat koristan je samo kao nedostižni ideal s kojim se mogu usporediti rezultati primjene realističnijih algoritama za odabir.

Među algoritmima koji se koriste u praksi najbolji je onaj LRU (Najmanje nedavno korišteno, labavo prevedeno "dugo se ne koristi"). Sastoji se u sljedećem: za pomak treba izabrati blok kojem se najdulje nije pristupalo. Ovdje se koristi načelo lokalizacije veza: budući da već duže vrijeme nema poziva, vjerojatno ih neće ni biti u bliskoj budućnosti.

Kako se u praksi provodi odabir bloka temeljen na LRU pravilu? Očigledno rješenje je zabilježiti trenutno vrijeme u njegovo zaglavlje svaki put kada se pristupi međuspremniku, a pri odabiru preduhitrenja previše je glomazno i ​​sporo za traženje najranijeg zapisa. Postoji mnogo bolja prilika.

Svi međuspremnici predmemorije povezani su u linearni popis. Zaglavlje svakog međuspremnika sprema referencu na sljedeći međuspremnik po redoslijedu popisa (zapravo, indeks tog međuspremnika pohranjen je u matrici me uspremnika). Svaki put kad se pristupi podatkovnom bloku za čitanje ili pisanje, odgovarajući međuspremnik se također pomiče na kraj popisa. To ne znači premještanje podataka pohranjenih u međuspremniku, mijenja se samo nekoliko veza u zaglavljima.

Kao rezultat neprestanog premještanja rabljenih blokova na kraj popisa me uspremnika, ovaj je popis razvrstan uzlaznim redoslijedom posljednjeg vremena pristupa. Na početku popisa nalazi se međuspremnik čijim podacima se najduže ne pristupa. On je ono što nam treba kao kandidat za represiju.

Na sl. 2-3 prikazuje niz međuspremnika povezanih u popis.

Sada o prljavim odbojnicima. U kojim slučajevima ih treba "očistiti", t.j. pisanje bloka podataka iz međuspremnika predmemorije na disk? Tri su takva slučaja.

· Odabir bloka za iseljenje iz predmemorije.

· Zatvaranje datoteke kojoj pripadaju prljavi blokovi. Općenito je prihvaćeno da se datoteka, kada se zatvori, mora spremiti na disk.

· Rad prisilnog brisanja svih međuspremnika ili samo međuspremnika koji se odnose na određenu datoteku. Slična se operacija može izvesti radi poboljšanja pouzdanosti pohrane podataka kao osiguranja od mogućih kvarova. U UNIX OS -u, na primjer, ispiranje svih međuspremnika tradicionalno se vrši svakih 30 sekundi.

Treba priznati da keširanje operacija pisanja na disk, za razliku od predmemoriranja čitanja, uvijek predstavlja određeni rizik od gubitka podataka. U slučaju slučajnog kvara sustava, nestanka struje itd. moglo bi se pokazati da je važna informacija koji je trebao biti zapisan na disk zaglavio se u prljavim međuspremnicima predmemorije i stoga se izgubio. Ovo je neizbježna cijena za značajno povećanje performansi sustava. Programi koji zahtijevaju visoku pouzdanost rada s podacima (na primjer, bankovni programi) obično zapisuju podatke izravno na disk. U tom slučaju predmemorija se uopće ne koristi ili se kopija podataka zapisuje u međuspremnik predmemorije, što može biti korisno za sljedeće operacije čitanja.

Usko grlo predmemoriranja diska je pronalaženje potrebnog bloka podataka u predmemoriji. Kao što je gore opisano, sustav za to traži zaglavlja međuspremnika. Ako se predmemorija sastoji od nekoliko stotina međuspremnika, vrijeme pretraživanja bit će vidljivo. Jedna moguća UNIX tehnika ubrzanja pretraživanja prikazana je na Sl. 2-4.

Na UNIX -u se svaki međuspremnik može pojaviti istovremeno na dva linearna popisa. Jedan od njih, nazvan "besplatni popis blokova", je poznati LRU popis koji se koristi za određivanje bloka za iseljavanje. Besplatno ne znači prazno; u ovom slučaju ova riječ znači blok koji trenutno nije zauzet operacijom čitanja / pisanja koju izvodi neki proces. Drugi popis naziva se "hash chain" i koristi se za ubrzavanje pretraživanja željenog bloka.

Prilikom upisivanja u podatke međuspremnika koji odgovaraju određenom bloku diska, broj raspršenog lanca, u koji će se taj međuspremnik smjestiti, određuje se kao ostatak dijeljenja broja bloka s N - broj lanaca raspršivanja. Radi jasnoće, brojka je usvojila vrijednost N = 10. Dakle, blokovi s brojevima 120, 40, 90 spadaju u lanac 0, blokovi 91, 1, 71 - u lanac 1 itd. Kada sustav traži u predmemoriji blok s određeni broj, prije svega, prema broju bloka određuje u kojem bi se hash lancu trebao nalaziti ovaj blok. Ako blok nije u ovom lancu, onda uopće nije u predmemoriji. Na ovaj način moguće je skratiti pretraživanje u najboljem slučaju za faktor N (ako su svi lanci iste duljine).

Premještanje međuspremnika iz jednog hash lanca u drugi, poput premještanja na kraj slobodnog popisa, ne zahtijeva prepisivanje cijelog podatkovnog bloka u memoriju i izvodi se promjenom referenci u zaglavljima blokova.

Druga značajka predmemoriranja diska u UNIX -u je ta da kada se na početku besplatnog popisa nađu prljavi međuspremnici, sustav ih počinje ispirati, ali ne čeka da se ti procesi dovrše, već odabire prvi čisti blok na popisu za iseljenje. Kad je ispiranje dovršeno, blokovi se vraćaju na vrh besplatne liste, a preostali su prvi kandidati za preimućstvo.