Пређи на садржај

Шлајфовање (информатика)

С Википедије, слободне енциклопедије

Шлајфовање у информатици, се јавља када је рачунарска виртуелна меморија у константном стању страна, непрестано размењује податке у меморији за податке на диску, до искључења већине апликационих нива процеса. [1] Ово проузрукује перформанс рачунара да се деградира или сруши. Ситуација може тећи до бесконачности све док упут није адресиран. Термин је такође коришћен за многе сличне проблеме, посебно кретање између осталих нивоа меморијске хијерархије, где прогрес процесовања тече споро јер се много времена троши на стицање ресурса. 

Преглед[уреди | уреди извор]

Ако процес нема довољно страница, шлајфовање је активност високог страничења , а стопа грешака страна је висока. То доводи до ниског искоришћења процесора. У модерним рачунарима, шлајфовање може довести до страничног система (ако не постоји довољно физичке меморије или време приступа диска  је превише дуго), или у систему комуникација (посебно у сукобима око интерног приступа аутобуса), итд. У зависности од конфигурације и алгоритама у њему, проток и кашњење једног система може деградирати од више редова величине. Шлајфовање је стање у којој "продуктиван" рад процесора-ради све мање и 'замењује' више. Процесор је заузет разменом страница, толико да не може да одговори на програме корисника исто онолико колико је потребно. Шлајфовање настаје када има превише страница у меморији, а свака страна се односи на другу страну. Права меморија скраћује у капацитету да би имале све странице у њему, тако да користи "виртуелну меморију '. Када свака страна у извршењу захтева да страницу која тренутно није у реалној меморији (РАМ) оно ставља неке странице на виртуелну меморију и подешава потребну страницу на РАМ-у. Ако је процесор је превише заузет у изради овог задатка, шлајфовање се дешава.

Узроци[уреди | уреди извор]

У меморији виртуалних система, шлајфовање може бити узроковано програмима или оптерећењима који представљају довољну локалност референце: ако сет програма или оптерећење не може бити ефикасно у року  физичке меморије, затим константно премештање података, односно, може доћи до шлајфовање. Термин је први пут употребљен у току дана трака оперативног система да опише звук траке направљен када су подаци били брзо писани и читани. Пример за ову врсту ситуације дошло је на IBM Систем / 370 серија главних мејнфрејм рачунара, у коме посебно упутство не може садржати упутство о извршавању (које прелази границу страна) који указује на покрет упутства (које само такође прелази границу страница ), циљање кретање података из извора који прелази границу странице, у циљу података који такође прелазе границу странице. Укупан број страна дакле које се користе над овим конкретним упутствима је осам, а свих осам страница морају бити присутни у меморији у исто време. Ако оперативни систем издваја мање од осам страница стварне меморије, када се покуша заменити неки део упутства или података у подсетнику, инструкција ће поново бити грешка стране, а то ће шлајфовати на сваки покушај када  се поново покрене упутство грешака.

Решења[уреди | уреди извор]

Да би се решило шлајфовање због прекомерних страница, корисник може урадити било шта од следећег:

  • Повећати количину РАМ-а на рачунару.
  • Смањити број програма који раде на рачунару.
  • Заменити програме који користе много мемори за исте који користе мање меморије.
  • Додела радних приоритета програмима, односно низак, нормалан, висок.
  • Повећати локалност референци заменом петљи:
     // опозива то у C, низови користе arrays use Ред-главни поредак
     int m[256][256]; 
     for (column=0; column<256; column++) { 
       for (row=0; row<256; row++) { 
         m[row][column] = foo(); 
       } 
     }
    
са
  int m[256][256]; 
  for (row=0; row<256; row++) {
    for (column=0; column<256; column++) {
      // узастопне колоне живе у суседним меморијским локацијама
      m[row][column] = foo(); 
    } 
  }

Друга коришћења[уреди | уреди извор]

Са фрагментацијом, шлајфовање је најпознатије контексту меморије и складиштења, али аналогно феномену јављања за друге ресурсе

Термин се такође користи за промашаје између осталих нивоа меморијске хијерархије, а не само позивање (меморије на диску): када се малом скуп убржег простора за складиштење, намењн да убрза приступ већем скупу споријег складишног простора, приступа на начин који поништава било какве користи од бржег складиштења. Пример за то је кеш шлајфовање, где је главној меморијој приступљно преко  образца који доводи до вишеструких главних меморијских локација који се такмиче за исте кеш линије, што је резултирало прекомерним кеш промашајима. Ово је веома проблематично за кешове који имају ниску асоцијативност.

Сасвим слично је ТЛБ шлајфовање, где је јединица за управљање меморије (ММУ), која се користи за превођење виртуалне адресе за физичке адресе, ради на сету од више страница него што може да стане у кешу, бафер асоцијативног превођења (ТЛБ). ТЛБ шлајфовање се може јавити чак и ако упутства кеша или подаци кеш шлајфовање се неће догодити, јер они су сачувани у различитим величинама. Инструкције и подаци су сачувани у малим блоковима (кеш линије), а не у целим странама, али потрага адресе се врши на нивоу странице. Тако, чак и ако се број и подаци цата који раде уклапају у кеш, ако су радни сетови подељени по многим страницама, радни сет виртуелне адресе  не може да стане у ТЛБ, узрокујући ТЛБ шлајфовање.

Честа колекција смећа, због неуспеха да додели меморију за објекат, због недостатка слободне меморије или недовољне суседне слободне меморије (због фрагментације меморије) се назива хеап шлајфовање.[2] Сличан феномен се јавља за процесе: када процесни радни скуп не може да се закаже - тако да нису сви у интеракцији процеса  заказани за покретање истовремено - они доживљавају процес шлајфовања, због тога што је у више наврата заказан и незаказан, напредују споро.[3]

Види још[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ Denning, Peter J. (1968).
  2. ^ Hall, Arnold & Bergner 2014, стр. 170.
  3. ^ Ousterhout, J. K. (1982).

Литература[уреди | уреди извор]