Перформансе

Шта је вм.мин_фрее_кбитес и како га подесити?

Шта је вм.мин_фрее_кбитес и како га подесити?
Шта је вм.мин_фрее_кбитес сисцтл прилагодљив за линук кернел и на коју вредност треба да буде постављен?  У овом чланку ћемо проучити овај параметар и како он утиче на покренут Линук систем.  Тестираћемо његов утицај на кеш странице ОС-а и на маллоц-е и шта системска бесплатна команда показује када се постави овај параметар.  Направићемо неколико образованих нагађања о идеалним вредностима за ову подешљивост и показаћемо како поставити вм.мин_фрее_кбитес трајно да би преживео поновно покретање.  Па идемо.

Како вм.мин_фрее_кбитес ради

Алокација меморије може бити потребна систему како би се осигурало правилно функционисање самог система.  Ако језгро дозволи додељивање све меморије, могло би се мучити када му је потребна меморија за редовне операције како би ОС одржавао несметан рад.  Због тога кернел нуди подесиви вм.мин_фрее_кбитес.  Подесиво ће присилити управитељ меморије језгра да задржи најмање Кс количине слободне меморије.   Ево званичне дефиниције из линук кернел документација: „Ово се користи да присили Линук ВМ да одржи минимални број килобајта слободним.  ВМ користи овај број за израчунавање вредности воденог жига [ВМАРК_МИН] за сваку зону ловмем у систему. Свака зона ниског нивоа добија одређени број резервисаних бесплатних страница пропорционално величини. Потребна је минимална количина меморије да би се задовољиле ПФ_МЕМАЛЛОЦ алокације; ако ово подесите на мање од 1024КБ, систем ће постати суптилно покварен и склон застоју под великим оптерећењима. Ако поставите ово превисоко, ваша машина ће одмах ООМ.„

Провера ваљаности вм.мин_фрее_кбитес Ради

Да бих тестирао да поставка мин_фрее_кбитес ради како је дизајнирано, креирао сам линук виртуелну инстанцу са само 3.75 ГБ РАМ-а.  Користите бесплатну команду испод да бисте анализирали систем:

# бесплатно -м

Гледајући горњи услужни програм за бесплатну меморију помоћу заставице -м да би се вредности штампале у МБ.  Укупна меморија је 3.5 до 3.75 ГБ меморије.  Заузима се 121 МБ меморије, 3.3 ГБ меморије је бесплатно, 251 МБ користи кеш меморија.  И 3.Доступно је 3 ГБ меморије.

Сада ћемо променити вредност вм.мин_фрее_кбитес и погледајте какав је утицај на системску меморију.  Одазваћемо нову вредност у виртуелни систем датотека да бисмо променили вредност параметра језгра према доле:

# ецхо 1500000> / проц / сис / вм / мин_фрее_кбитес
# сисцтл вм.мин_фрее_кбитес

Видите да је параметар промењен у 1.Отприлике 5 ГБ и ступио је на снагу.  Сада ћемо користити бесплатно поново наредбу да бисте видели све промене које систем препознаје.

# бесплатно -м

Слободна меморија и предмеморија међуспремника не мењају се наредбом, али количина меморије приказује се као доступан је смањен са 3327 на 1222 МБ.  Што је приближно смањење промене параметра на 1.5 ГБ мин слободне меморије.

Хајде сада да креирамо датотеку података од 2 ГБ и да видимо шта читање те датотеке у предмеморију међуспремника чини вредностима.  Ево како у наставку креирати датотеку података од 2 ГБ у 2 реда басх скрипте.  Скрипта ће генерисати случајну датотеку од 35 МБ помоћу наредбе дд, а затим ће је 70 пута копирати у нову дата_филе излаз:

# дд иф = / дев / рандом оф = / роот / д1.ткт цоунт = 1000000
# фор и у 'сек 1 70'; до ецхо $ и; мачка / корен / д1.ткт >> / роот / дата_филе; Готово

Прочитајмо датотеку и занемаримо њен садржај читањем и преусмеравањем датотеке на / дев / нулл како је наведено у наставку:

# цат дата_филе> / дев / нулл

Ок, шта се догодило са нашом системском меморијом са овим сетом маневара, хајде да то сада проверимо:

# бесплатно -м

Анализирајући горње резултате.  Још увек имамо 1.8 ГБ слободне меморије, тако да је кернел заштитио велики део меморије резервисан због наше поставке мин_фрее_кбитес.  Кеш меморија користи 1691 МБ, што је мање од укупне величине наше датотеке података која износи 2.3 ГБ.  Очигледно цео дата_филе није могао да се ускладишти у кеш меморији због недостатка доступне меморије за употребу у бафер кеш меморији.  Можемо да потврдимо да цела датотека није ускладиштена у кеш меморији већ да одређује време поновљених покушаја читања датотеке. Ако је био кеширан, требало би му делић секунде да прочита датотеку.  Хајде да пробамо.

# тиме цат дата_филе> / дев / нулл
# тиме цат дата_филе> / дев / нулл

Читање датотеке трајало је скоро 20 секунди, што значи да готово сигурно није сва у кешу.

Као последњу валидацију смањимо вм.мин_фрее_кбитес да би кеш странице имао више простора за рад, а можемо очекивати да кеш ради и да се датотека чита много брже.

# ецхо 67584> / проц / сис / вм / мин_фрее_кбитес
# тиме цат дата_филе> / дев / нулл
# тиме цат дата_филе> / дев / нулл

Са додатном меморијом доступном за кеширање време читања датотеке је смањено са 20 секунди пре на .364 секунде са свим у кеш меморији.

Радознао сам да направим још један експеримент.  Шта се дешава са маллоц позивима за додељивање меморије из програма Ц насупрот овом заиста великом вм-у.подешавање мин_фрее_кбитес.  Хоће ли пропасти маллоц?  Да ли ће систем умрети?  Прво ресетујте вм.мин_фрее_кбитес подешавање на заиста високу вредност за наставак наших експеримената:

# ецхо 1500000> / проц / сис / вм / мин_фрее_кбитес

Погледајмо поново нашу слободну меморију:

Теоретски имамо 1.9 ГБ бесплатно и 515 МБ на располагању.  Хајде да користимо програм за тестирање стреса под називом стрес-нг како бисмо искористили мало меморије и видели где не успевамо.  Користићемо вм тестер и покушаћемо да доделимо 1 ГБ меморије.  Пошто смо резервисали само 1.5 ГБ на 3.Систем од 75 ГБ, претпостављам да би ово требало да успе.

# стресс-нг --вм 1 --вм-битес 1Г - тимеоут 60с
стресс-нг: инфо: [17537] отпремне свиње: 1 вм
стресс-нг: инфо: [17537] кеш доделити: подразумевана величина кеша: 46080К
стресс-нг: инфо: [17537] успешно трчање завршено у 60.09с (1 мин, 0.09 сек)
# стресс-нг --вм 2 --вм-битес 1Г --тимеоут 60с
# стресс-нг --вм 3 --вм-битес 1Г - тимеоут 60с

Покушајмо поново са више радника, можемо пробати 1, 2, 3, 4 радника и у неком тренутку то не би успело.  У мом тесту је прошло са 1 и 2 радника, али није успело са 3 радника.

Ресетујмо вм.мин_фрее_кбитес на мали број и погледајте да ли нам то помаже да покренемо 3 меморијска стресора са по 1 ГБ на 3.Систем од 75 ГБ.

# ецхо 67584> / проц / сис / вм / мин_фрее_кбитес
# стресс-нг --вм 3 --вм-битес 1Г - тимеоут 60с

Овај пут је трчао успешно без грешке, два пута сам пробао без проблема.  Тако да могу закључити да постоји разлика у понашању ако имамо више меморије на располагању за маллоц, када вм.Вредност мин_фрее_кбитес је постављена на нижу вредност.

Подразумевана поставка за вм.мин_фрее_кбитес

Подразумевана вредност за подешавање на мом систему је 67584 што је око 1.8% РАМ-а на систему или 64 МБ. Из безбедносних разлога на јако разбијеном систему, тежио бих да га мало повећам на 128 МБ да бих омогућио резервисану слободну меморију, али за просечну употребу подразумевана вредност делује довољно разумно.  Званична документација упозорава на то да вредност буде превисока.  Постављање на 5 или 10% системске РАМ меморије вероватно није предвиђена употреба поставке и превисоко је.

Подешавање вм.мин_фрее_кбитес за преживљавање поновног покретања

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

Закључак

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

Топ 5 ергономских производа за рачунарски миш за Линук
Да ли дуготрајна употреба рачунара изазива бол у зглобу или прстима? Патите ли од укочених зглобова и стално морате да се рукујете? Да ли осећате гору...
Како променити поставке миша и додирне табле помоћу Ксинпут-а у Линук-у
Већина Линук дистрибуција подразумевано испоручује библиотеку „либинпут“ за обраду улазних догађаја на систему. Може да обрађује улазне догађаје и на ...
Замените тастере миша другачије за различити софтвер помоћу Кс-Моусе Буттон Цонтрол
Можда вам је потребан алат који би могао да промени контролу миша са сваком апликацијом коју користите. Ако је то случај, можете испробати апликацију ...