Създаване Swappiness и кеш в Linux

Ubuntu поведение промяна по отношение на използването на RAM и пейджинг (размяна раздел). Налице е параметър vm.swappiness. което по подразбиране е 60, и следи процентът на свободна памет, в която активните страници ще нулират на дял от диска. С други думи, най-100-60 = 40% от паметта, Ubuntu вече ще започне да използва точка за размяна. При голямо количество RAM в компютъра, е по-добре да се промени параметър vm.swappiness 10 и по този начин не се използва за замяна Ubuntu RAM зает, докато достигне 100-10 = 90%. Задайте стойността 10 вместо 60. В конзолата, въведете следната команда:

За да запаметите настройките, след рестартиране направи /etc/sysctl.conf файла следния ред:

Това веднага ще приложите настройката:

В допълнение, може да се каже за някои други параметри.
Псевдо vfs_cache_pressure съхранена стойност - на нивото на заделената памет за кеша. Стойността по подразбиране е 100. Повишаване на тази настройка, че ядрото активно да се разтоварят неизползвана памет страница от кеша, т.е. размер на заделената памет за кеш паметта ще расте по-бавно, което от своя страна ще намали вероятността, че ще участват на дял от диска. С намаляване на този параметър на ядрото, а напротив, ще продължи по-дълго в кеш паметта на страницата, включително в swap'e. Той има смисъл за малко количество RAM, например, ако имаме 512 MB памет, vfs_cache_pressure на параметъра може да се настрои до 50. Това ще намали броя на дисковите операции на дял от диска, така че премахването на неизползвани страници ще се появят по-рядко. Допълнително намаляване на този параметър може да доведе до недостиг на памет.
Ако искате да се ускори системата и имате достатъчно RAM (2 GB или повече), а след това се промени стойността на системата, така че: Swappiness = 10 vfs_cache_pressure = 1000 (по подразбиране е 100). попълване на файла /etc/sysctl.conf следния ред:

Кеширане за Linux

Когато данните се записват на диск (всяка програма), за Linux кешира тази информация в паметта, се нарича Page Cache (кеш страница). За информация за зоната на паметта може да се разглежда като се използва безплатен команда, vmstat или отгоре. За пълна информация относно тази област на паметта може да се намери в файл / ргос / meminfo. По-долу е пример за файла на сървъра, с 4 GB RAM:

MemTotal: 3950112 кБ
MemFree: 622 560 КБ
Буфери: 78048 КБ
Кеширана: 2901484 кБ
SwapCached: 0 КБ
Активни: 3108012 кБ
Неактивните: 55296 КБ
HighTotal: 0 КБ
HighFree: 0 КБ
LowTotal: 3950112 кБ
LowFree: 622 560 КБ
SwapTotal: 4198272 кБ
SwapFree: 4198244 кБ
Мръсни: 416 кБ
Writeback: 0 КБ
Картографирани: 999 852 кБ
Плоча: 57104 КБ
Committed_AS: 3340368 КБ
PageTables: 6672 КБ
VmallocTotal: 536870911 кБ
VmallocUsed: 35300 КБ
VmallocChunk: 536835611 кБ
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 кБ

размер Page кеша е показано на параметъра "Кеширана", в този пример е 2,9 GB. Когато пишете на страници в паметта "мръсни" размер параметър се увеличава. Когато започнете запис на диска ще се увеличи параметъра "Writeback" толкова дълго, колкото като записът приключи. Това е доста трудно да се види на опцията "Writeback" висока, тъй като стойността му се увеличава само по време на времето за реакция, когато операциите по входно / изходни (I / O), се нареждат на опашка, но все още не записва на диск.
Linux обикновено пише данните от кеша на диска с помощта pdflush процес. Във всеки един момент в системата работи от 2 до 8 pdflush потоци. Файлът / Proc / Сис / VM / nr_pdflush_threads можете да видите колко е в момента активните теми. Всеки път, когато всички съществуващи потоци pdflush зает в продължение на поне 1 секунда. Нова нишка се опитва да запише данните в свободните опашката за устройствата, така че за всяко активно устройство 1 е отпадане поточни данни от кеша. Всеки път, след като изминат секунди без никаква активност от прибрано pdflush 1 поток. В Linux, можете да регулирате Минималният и максималният брой pdflush потоци.

Създаване pdflush
Всеки pdflush поток се контролира от няколко параметри в / ргос / сис / VM:

  • / Proc / сис / VM / dirty_writeback_centisecs (по подразбиране 500) в стотни от секундата. Този параметър показва колко често pdflush възстановена работата за запис на данни върху диска. По подразбиране, потокът продължава 2 на всеки 5 секунди.
    Може би без документи поведение, което пречи на опитите да се намали dirty_writeback_centisecs за по-агресивен метод за кеширане pdflush. Така например, в по-ранните версии на ядрото на Линукс в кода на 2.6 mm / страница writeback.c файл включва логика, която описва "при запис на диск отнема повече от dirty_writeback_centisecs опция, тогава ще трябва да се сложи интервал от 1 секунда." Тази логика е описана само в кода на ядрото, и неговата работа зависи от версията на ядрото на Линукс. Тъй като това не е много добър, така че ще бъдат защитени от намаляването на този параметър.
  • код> / ргос / сис / VM / dirty_expire_centiseconds (по подразбиране 3000): в стотни от секундата. Този параметър определя колко дълго данни могат да се съхраняват в кеш паметта, а след това да се записват на диск. Стойността по подразбиране за много дълго 30 секунди. Това означава, че при нормална работа, докато кеша не е достатъчно данни е писано да се обади на друг метод pdflush, Linux няма да запише данните на диска, съхранявани в кеша най-малко 30 секунди.
  • / Proc / сис / VM / dirty_background_ratio (по подразбиране 10): Максималният процент на RAM, която може да бъде запълнена кеш страница, за да записва данни на диск. Някои версии на ядрото на Линукс могат да инсталират тази опция в 5%.
    В повечето документи, този параметър е описан като процент от общата памет, но според изходните кодове на Linux ядрото не е така. Разглеждайки meminfo, dirty_background_ratio стойности на параметрите изчислени от MemFree + Кеширана - Картографирани. Ето защо, за нашата демонстрация на системата е с 10% по-малко, отколкото 250MB, 400MB, но.

Когато започнете да записвате pdflush?
В стандартната конфигурация, данните, записани на диска се съхраняват в паметта, докато:

  1. те са повече от 30 секунди в памет;
  2. кешираните страници заемат повече от 10% от работната памет.

Ако дейностите по сървъра запис се срещат често, а след това се достига една опция dirty_background_ratio. и можете да видите, че всички писане на диска е само с този вариант, без да се чака dirty_expire_centiseconds на параметрите на изтичане.

Процесът на писане на страници
Параметър / ргос / сис / VM / dirty_ratio (по подразбиране 40) - максималния процент от общата памет, която може да бъде предоставена по кеша на страница преди pdflush ще запише данните на диска.

Забележка: Докато записвате на диска, всички процеси са блокирани в албума, а не само този, който изпълни буфера да пиша. Това може да доведе до заключване процеси всички I / O операции в системата.

Препоръки за оптимизиране на Linux за приложения, изискващи чести влизания
Обикновено, когато се опитате да се увеличи производителността на диск подсистема изправени пред проблема, че Linux буфери прекалено много информация наведнъж. Това е особено вярно за приложения, изискващи синхронизация на файловата система, използвайки fsync разговори. Ако по време на този разговор в много кешираните данни, системата може да "блокирали" до края на настоящата покана.
Друг често срещан проблем възниква, защото прекалено много искате да запишете, преди началото на записването на физическия диск I / O операции възникват по-често, отколкото при нормална работа.

  • dirty_background_ratio. Основният инструмент за конфигуриране. Обикновено се намали този параметър. Ако целта ви е да се намали количеството на данните, съхранявани в кеша, така че данните ще бъдат записани на диск постепенно, а не всички наведнъж, намаляването на този параметър е най-ефективния начин. Стойността по подразбиране е приемлив за повечето системи с много RAM и бавно дискове.
  • dirty_ratio. Вторият най-важен елемент, за да се регулира. Докато значително намаляване на параметрите на приложения, които трябва да пишат на диск, ще бъдат блокирани всички заедно.
  • dirty_expire_centisecs. Опитайте се да намалите този параметър, но не много. Тя ви позволява да се намали времето за намиране на страници в кеша да пишат на диска, но, от друга страна, това значително ще намали средната скорост за запис на диска, който е особено изявен в системата за бавно шофиране.

В резултат на това, ние получаваме
В /etc/sysctl.conf файла, чрез:

След синхронизиране кешираните данни и диск, изчистване на кеш паметта и да запишете настройките:

За да се намали броят на финализиране на записа на диска трябва да се коригира:

подразбиране 500.

Вижте също: