Разлики между предварителното извличане и Superfetch в Windows

  • Prefetch в Windows оптимизира реда и четенето на файлове от диска, използвайки .pf следи, докато Superfetch/SysMain се фокусира върху предварителното зареждане на най-използваните приложения в RAM паметта.
  • На твърди дискове и двете услуги обикновено осигуряват забележимо подобрение в плавността, но на системи със SSD дискове ползата е намалена и в случая на Superfetch може дори да бъде контрапродуктивна.
  • Конфигурацията на Prefetch се контролира от системния регистър (EnablePrefetcher) и Superfetch/SysMain като услуга, което ви позволява да регулирате или деактивирате поведението му според хардуера и употребата.

Разлики между предварителното извличане и супер извличането в Windows

Ако използвате Windows от години, вероятно сте чували за... Предварително извличане, Superfetch или SysMain Но може би не сте напълно сигурни какво точно правят, как се различават или дали има смисъл да ги деактивирате, особено сега, когато почти всеки инсталира SSD. Те са една от онези функции, които са налице, работят безшумно и за които се сещаме само когато твърдият диск започне да шуми или RAM паметта е изчерпана.

В тази статия ще разгледаме ясно Разлики между предварителното извличане и Superfetch в WindowsЩе обясним как работят вътрешно, каква е връзката им с процесора, какво е реалното им въздействие върху твърдите дискове (HDD) и SSD дисковете (SSD) и кога е разумно да ги модифицираме (или да ги оставим на мира). Ще използваме достъпен език, но ще се задълбочим в техническите аспекти и ще се позовем на обширните си знания от документация и практически опит.

Какво е предварително извличане: хардуер срещу софтуер

Терминът Предварителното извличане описва техника Това включва прехвърляне на данни или инструкции в по-бърза памет, преди да са необходими, с цел минимизиране на латентността, когато системата или приложението ще ги използват. Тази концепция съществува както на софтуерно ниво (операционна система, компилатор), така и на хардуерно ниво (процесор).

Когато говорим за предварително извличане на софтуер, имаме предвид механизми, реализирани в операционната система или в компилаторакоито анализират моделите на достъп и предварително подготвят данните. Типичен пример е използването на функции като __builtin_prefetch в компилатори като GCC, които вмъкват специални инструкции в двоичния файл, така че процесорът да изисква данни от паметта, преди да има нужда от тях.

От страна на хардуера, предварителното извличане се осъществява от процесора, използвайки специални устройства, които наблюдават достъпа до паметта и се опитват да предвидят. В x86 архитектурите, например, има специфични инструкции, като например PREFETCH Тези техники позволяват на процесора предварително да въведе линиите памет в кешовете L1/L2/L3. Хубавото на този подход е, че той работи прозрачно за потребителя.

Общата цел и в двата случая е данните или инструкциите вече да са в много бърза памет, когато ще бъдат използвани, така че Минимизиране на времето за изчакване поради достъп до основната памет или дискаТази обща концепция е това, което Windows след това адаптира със собствените си технологии Prefetch и Superfetch.

Предварително извличане в Windows: какво е това и как работи

В рамките на екосистемата на Windows, Prefetch е технология, въведена в Windows XP и се поддържа в по-късни версии като Windows Vista, Windows 7, Windows 10 и Windows 11. Той е имплементиран в ядрото на Windows NT и основната му цел е да ускори стартирането на системата и първоначалното зареждане на приложенията.

Когато Windows се стартира или когато стартирате програма, системата Той записва кои файлове се четат и в какъв ред.С тази информация генерира специални файлове с разширение .pf, които запазва в папката C: \ Windows \ PrefetchВсеки наблюдаван изпълним файл има свой собствен файл за предварително извличане, където се съхранява следата от достъпите, необходими за по-бързо зареждане следващия път.

Благодарение на тези файлове, при следващи стартирания на Windows може пренареждане и групиране на четения от дискове Това оптимизира системата, предотвратявайки произволното ѝ прескачане на твърдия диск и значително намалявайки времето за стартиране на системата и времето, необходимо за отваряне на често срещани приложения. Това беше ключов фактор за по-плавната работа на Windows XP в сравнение с предшествениците му.

В допълнение към самия алгоритъм, има и това, което можем да наречем „Услуга за предварително извличане“, интегрирана в систематакойто обработва това заснемане и използване на следи. От гледна точка на потребителя, няма да видите услуга с това име в конзолата за услуги, но ясно ще видите активността в папката предварително извличане със създаването и модифицирането на .pf файлове.

Важно е да се разбере, че Prefetch в Windows работи на ниво файлова система: Това не е просто обикновен кеш на RAM паметтаа по-скоро механизъм, който решава кои файлове да прочете, в какъв ред и по кое време, в подготовка за последващи стартирания или изпълнения на приложения.

Папка за предварително извличане и .pf файлове: какво съдържат и за какво се използват

Известната папка C:\Windows\Prefetch е видимото сърце на системата Prefetch в Windows. В тази директория се съхраняват .pf файловете, които представляват следите от зареждането на всяко приложение или системен компонент, подложен на този процес на оптимизация.

Всеки път, когато стартирате програма, Windows може да генерира или актуализира .pf файл с името на приложението и идентификатор (например, FIREFOX.EXE-24B8FB1A.pf). Този файл включва данни като файловете, до които е осъществен достъп по време на инициализацията, техните вътрешни пътища (например, пътища като \DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\KERNEL32.DLL) и метаданни, като например броя на изпълненията или часа на последното стартиране.

От гледна точка на администрацията и компютърната криминалистика, тези файлове са много полезни, защото те позволяват реконструкцията на моделите на употребакои приложения са се изпълнявали, колко пъти, по кое време и дори кои конкретни библиотеки или файлове са били заредени при стартиране. Инструменти като WinPrefetchView, Prefetch Parser, Windows File Analyzer или prefetch-tool Те ви позволяват да отваряте и анализирате подробно тези .pf файлове.

Има вътрешно ограничение за броя на записите, които се съхраняват в директорията Prefetch: Windows обикновено запазва максимум 128 следиТова означава, че с продължаващото използване на системата, по-рядко използваните или по-старите приложения постепенно се премахват, за да се освободи място за най-подходящите, съгласно настоящия модел.

Много потребители нямат представа, че тази папка съществува, което прави реалните среди... Обикновено е пълно с полезна информация.Именно затова много пакети за „почистване на поверителността“ или „оптимизация“ включват опцията за изпразване на папката Prefetch, което може да изтрие ценни следи за криминалистичен анализ и, поне временно, да нулира част от обучението на Windows.

Разлики между Prefetch и Superfetch (SysMain)

С появата на Windows Vista, Microsoft добави втори компонент, наречен SuperFetch (преименуван на sysmain (от версия 1809 на Windows 10), което често се бърка с Prefetch, въпреки че функцията му е малко по-различна. И двете са част от Разширено управление на паметта и зареждането на приложения в Windowsно те решават различни проблеми.

От една страна, Prefetch се занимава с оптимизация моделът за четене от диска По време на стартиране на системата и първоначалното зареждане на приложението, тя използва .pf файлове като ориентир. Фокусира се върху това какво се чете от диска и в какъв ред, а не върху това да поддържа нещо активно в RAM паметта извън нормалното поведение за кеширане на файлове.

Superfetch, от друга страна, е услуга, която работи във фонов режим и чиято основна мисия е предвидете приложенията, които вероятно ще използвате и предварително зарежда данните си в RAM паметта. Това, което прави, е да наблюдава навиците на потребителя във времето (кои програми отваря, по кое време, колко често) и въз основа на това запазва най-използваните приложения в паметта, така че те да се отварят почти мигновено.

Докато Prefetch управлява предимно дискови следи и планиране на четенеSuperfetch действа като „иконом“ на RAMзапълвайки го с това, от което най-вероятно имате нужда. На машини с достатъчно памет това е предимство, защото неизползваната свободна RAM памет на практика е пропиляна RAM памет.

Важно е да се има предвид, че Superfetch/SysMain е променял поведението си с всяка версия на Windows, като е по-добре настройвал кога и как предварително зарежда данни, особено след като използването на SSD е станало стандартизирано. Въпреки това все още има сценарии, при които Ползата или недостатъкът на Superfetch Те зависят много от количеството RAM памет и вида на паметта, с която разполагате.

Superfetch/SysMain: реално въздействие върху HDD и SSD

Superfetch първоначално е проектиран с мисъл за екипи. относително бавни механични твърди дискове (HDD)където времето за търсене и достъп е високо. В този контекст е напълно логично Windows да се опита да предвиди това, като запълни RAM паметта с данни от често използвани приложения, така че да не се налага да ги чете от диска всеки път.

На твърд диск (HDD) времето за произволен достъп е много по-високо, отколкото на SSD, така че всичко, което намаляване на случайните четения или груповите достъпи Това обикновено се изразява в забележимо подобрение във възприеманата скорост. Ето защо много по-стари ръководства препоръчваха Prefetch и Superfetch да се оставят активирани на системи с механични твърди дискове.

С широкото разпространение на потребителските SSD дискове, чиято скорост на произволно четене е далеч по-висока, Положителното въздействие на Superfetch е значително намаленоВремето за зареждане на приложенията от SSD вече е много ниско, така че поддържането на услуга, която пренарежда и предварително зарежда данни в RAM, може да бъде неподходящо по отношение на подобрението или дори контрапродуктивно в определени сценарии, като изразходва памет и генерира допълнителни входно-изходни операции.

Всъщност много потребители със SSD дискове и малко RAM памет са забелязали това SysMain може да задейства използването на диск или памет При определени обстоятелства, особено при по-стар или по-малко мощен хардуер, той е бил деактивиран в търсене на по-стабилна и предвидима система, дори ако е загубена известна „предвидимост“ при зареждането на програмата.

Microsoft, от своя страна, усъвършенства поведението на услугата в последните версии на Windows 10 и 11, така че да бъдат по-малко агресивни към системи със SSD дисковеТова обаче не означава, че в някои специфични компютри потребителят може да реши да го изключи, ако открие неоправдани пикове в активността или износване на диска, които смята за ненужни.

Предварително извличане на процесора: предварително извличане на кеша и видове

Отвъд Windows, терминът предварително извличане се използва и за описание вътрешни механизми на съвременните процесори насочени към намаляване на наказанието, свързано с достъпа до бавна памет. В този случай вече не говорим за .pf файлове или папки в операционната система, а за хардуерна логика в процесора.

Съвременните микроархитектури включват кеш предварително извличане, което анализира модела на достъп в паметта (както данни, така и инструкции) и се опитва да въведе в кеша редове, които все още не са били официално заявени, но които, въз основа на наблюдавания модел, е много вероятно да са необходими следващи.

Най-общо казано, можем да различим два вида предварително извличане на ниво процесор: предварително извличане на данни и предварително извличане на инструкцииПървият се фокусира върху операнди, които инструкциите ще манипулират (структури от данни в паметта, буфери и др.), докато вторият извежда предварително инструкции, които все още не са изпълнени, захранвайки опашката от инструкции на процесора и намалявайки закъсненията поради липса на кеширан код.

Тези видове техники съществуват от десетилетия. Процесори като Intel 8086 с неговата 6-байтова опашка Семейството Motorola 68000, с 4-байтовия си кеш, използва ранни форми на предварително извличане на инструкции. Днес всеки високопроизводителен процесор за настолен или преносим компютър включва няколко нива на кеш. усъвършенствани алгоритми за предварително извличане способен да разпознава последователни модели, крачки, индиректни модели и др.

В някои BIOS/UEFI ще намерите опции като Предварително извличане на процесора, предварително извличане на хардуера, предварително извличане на съседна кеш линия или подобни, които ви позволяват да активирате или деактивирате тези механизми. Обикновено не е препоръчително да ги модифицирате, освен ако не отстранявате много специфични проблеми, тъй като те са предназначени да подобрят цялостната производителност на почти всяко работно натоварване.

Как да активирате или деактивирате предварителното извличане в Windows

Поведението на предварителното извличане в Windows се контролира чрез Регистрация на системата на определен ключТова ви позволява да настроите дали системата да прилага предварително извличане към стартиране, към приложения или и двете, и дори да го деактивирате напълно, ако желаете.

Основната конфигурация се намира в пътя за регистрация HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ управление на паметта \ PrefetchParametersВ този ключ се появява стойност, наречена EnablePrefetcher (или EnablePrefetch в някои препратки), който приема няколко числови стойности.

Типичните стойности, които този параметър може да приеме, са следните: 0 за деактивиране на предварителното извличане напълно, 1 за да се активира само предварителното зареждане, свързано със стартирането на приложенията, 2 за да се фокусира върху стартирането на системата и 3 за да се активира както оптимизацията на стартирането на системата, така и тази на приложенията, като последната е препоръчителната стойност и тази, която обикновено се задава по подразбиране.

За да промените това поведение, трябва да отворите Редактор на системния регистър на Windows (regedit)Отидете до посочения път и променете стойността на EnablePrefetcher. Важно е да направите това внимателно и, ако е възможно, с резервно копие на системния регистър, тъй като неправилната промяна може да доведе до проблеми с производителността или стабилността.

Освен промяната на конфигурационната стойност, някои потребители избират да периодично изпразвай съдържанието на папката C:\Windows\Prefetch за да „почисти“ системата. Windows обаче вече управлява тази директория автоматично, премахвайки стари или рядко използвани следи, така че освен в много специфични случаи (например тестове за производителност или много специфични среди), това обикновено не е нито необходимо, нито особено полезно.

Как да активирате или деактивирате Superfetch (SysMain) в Windows 10 и по-нови версии

За разлика от Prefetch, който до голяма степен се контролира чрез регистрация, Superfetch/SysMain се управлява предимно като услуга на WindowsТова означава, че може да бъде активирана или деактивирана, точно както други системни услуги, от конзолата за услуги.

Във версии на Windows 10 преди 1809 г. услугата се е наричала SuperFetchОт тази актуализация нататък Microsoft започна да използва името sysmain за същия компонент, въпреки че функцията му остава същата: да следи моделите на употреба и да зарежда предварително приложения в паметта, за да ускори реакцията им.

За да манипулирате тази услуга, трябва да отворите прозореца за изпълнение с Win + R и въведете services.mscНатиснете Enter и в прозореца „Услуги“ намерете съответния запис (Superfetch или SysMain в зависимост от версията на вашата система). Щракването двукратно върху него отваря прозореца със свойствата на услугата.

В тези свойства можете да промените Тип старт Активирано, Ръчно или Деактивирано. Ако изберете Деактивирано и приложите промените, услугата ще спре да се изпълнява и Windows ще спре агресивно да зарежда предварително приложения в RAM паметта, въпреки че системата ще продължи да използва основния си файлов кеш и други вътрешни оптимизации.

Много потребители с компютри с твърди дискове избират Поддържайте Superfetch/SysMain активен защото помага на системата да се чувства по-отзивчива, докато тези, които използват SSD дискове, особено на компютри с малко RAM, често го деактивират, за да избегнат пикове на I/O, които считат за ненужни, тъй като SSD дискът вече е достатъчно бърз за обичайната им употреба.

Prefetch и Superfetch на HDD срещу SSD: кога има смисъл да ги деактивирате?

Един от най-честите въпроси е дали Струва си да деактивирате Prefetch и Superfetch Когато операционната система е инсталирана на SSD вместо на традиционен механичен твърд диск, реакцията не е идентична за двата компонента.

В случай на Prefetch, дори при SSD дискове, Windows продължава да се възползва донякъде от оптимизацията за четене.Това е особено вярно за системи със скромен хардуер или разнообразни натоварвания. Въпреки че подобрението не е толкова драматично, колкото при твърдия диск, отрицателното въздействие от оставянето му активиран обикновено е малко, така че в повечето ситуации не се препоръчва да го деактивирате, освен ако няма много конкретна причина.

Със Superfetch/SysMain историята се променя малко: на системи със SSD дискове и достатъчно RAM, Ползата от предварителното зареждане на приложения в паметта е по-малка Защото времето за четене от SSD дискове е вече много кратко. Освен това, ако услугата генерира много дискова или паметова активност, на някои машини това може да бъде по-скоро пречка, отколкото помощ, особено ако се използват ресурсоемки приложения или има малко свободна RAM памет.

От друга страна, трябва да се отбележи, че както Prefetch, така и Superfetch Те леко увеличават броя на записите и четенията на диска.Това не е особено критично при твърдите дискове (HDD), но влияе върху дългосрочното износване на SSD дисковете, въпреки че в днешно време съвременните SSD дискове имат повече от достатъчна устойчивост за ежедневна употреба, дори когато тези услуги са активни.

В крайна сметка решението обикновено се свежда до тестване на собственото ви оборудване: Ако забележите пикове на диска или проблеми с производителността, ясно свързани със SysMainМоже би има смисъл да го деактивирате и да видите дали системата ще се държи по-добре. С Prefetch обаче обикновено е най-добре да го оставите на стойността му по подразбиране (3), освен ако не търсите много специфично поведение или дебъгване на нещо конкретно.

Ограничения, проблеми и критичен поглед върху Prefetch и Superfetch

Въпреки че на хартия Prefetch и Superfetch са интелигентни механизми за ускоряване на WindowsНа практика те не са без проблеми и съмнителни дизайнерски решения. Един от най-критикуваните моменти е липсата на диференциация в това какво се извлича предварително или наблюдава.

Например, системата може да генерира следи и предварително извличане дори от изпълними файлове, които се използват само веднъжТова е така при много инсталатори на setup.exe, които изтегляте, стартирате и след това изтривате или премествате. В тези ситуации усилията, вложени в създаването на следи и запазването им в Prefetch, на практика нямат полза, защото в повечето случаи този файл няма да бъде използван отново.

Друг отбелязан проблем е, че когато програмите се актуализират често, Prefetch и Superfetch могат да натрупват записи от по-стари версии. Приложенията, които вече не са инсталирани или са променили местоположението си, се запазват в списъците си, като се запазват препратките, които вече не служат за никаква цел. Това допринася, макар и леко, за известно претрупване и заема място с данни, които няма да имат реална употреба.

В този контекст някои напреднали потребители избират да използват по-сложни деинсталаториНапример, инструменти с отворен код, които освен деинсталирането на софтуер, сканират системния регистър, файловата система и дори изтриват записи от Prefetch, свързани с тези приложения, опитвайки се да оставят системата по-чиста от следи.

Накрая, някои критикуват факта, че въпреки времето, изминало от пускането на Windows 10 през 2015 г., Тези функции не са се развили толкова, колкото може да се очаква.Въпреки че Microsoft е съсредоточила усилията си върху интегрирането на реклами, уеб компоненти, джаджи, предварително инсталирани приложения и множество припокриващи се панели с настройки, от тази по-критична гледна точка, дизайнът на Prefetch/Superfetch изглежда е в застой в сравнение с по-леките алтернативи, предлагани от софтуер на трети страни за търсене, индексиране и управление на производителността.

Разбирането на това как работят Prefetch, Superfetch/SysMain и CPU prefetching позволява вземайте по-информирани решения Що се отнася до тяхната конфигурация, преценете кога си струва да ги поддържате активни и кога може да е изгодно да ги деактивирате, и между другото, използвайте техните следи за задачи за анализ на производителността или дори за реконструкция на активността на системата при криминалистични разследвания.

Предварително зареждане на Windows 11 File Explorer
Свързана статия:
Windows 11 ускорява Explorer с предварително зареждане във фонов режим