Продуктова категория
Свържете се с нас
Добави: 5F, сграда 3A, No.8 Xiyuanyi Road, West Lake Science Park, Хангжу, Китай
Тел: + 86-571-87858811
Моб: +8613616520351
Електронна поща: trade@qiyangtech.com
Новини
Начало > Новини > Съдържание
Как да освободите Linux памет ръчно? Вземете I.mx6 като пример
Jul 27, 2018

Първо, обичайната ситуация

Първа команда "безплатна" за говорене:

Цитати:

[root @ server ~] # безплатни -m общо използвани безплатни споделени буфери, кеширани Mem: 249 163 86 0 10 94 - / + буфери / кеш: 58 191 Разменени: 511 0 511

между тях:

Цитати:

обща сума на паметта, брой на вече използваната памет, свободен брой свободни памети, общо количество памет за споделени множество процеси, размер на диска от буфери Буферна кеш и кеширана страница Кеш-буфери / кеш памет: Броят памет на използваните - буфери - кеширани + буфери / кеш безплатно + буфери + кеширана налична памет = свободна памет + буфери + кеширана.

С тази основа можете да знаете, че сега използвах 163MB, безплатно за 86MB, буфер и кеширани са 10MB, 94MB.

Тогава нека видим дали има някаква промяна в паметта, ако изпълня файла за копиране.

Цитати:

[root @ server ~] # cp-r / etc ~ / test / [root @ server ~] # free -m общо използвани безплатни споделени буфери кеширани Mem: 249 244 4 0 8 174 - / buffers / cache: : 511 0 511

След като заповядах изпълнението на края, използван за 244 МБ, свободен за 4 МБ, буфери за 8 МБ, кеширани за 174 МБ. Бог, всички са били хранени с кеширани. Не се притеснявайте, това е да подобрите ефективността на практиката за четене на файлове.

За да се подобри ефективността на дисковия достъп, Linux направи някои сложен дизайн, в допълнение към dentry cache (за VFS, ускори преобразуването на името на файловия път към inode), също така взе две основни Cache начина: Buffer

Кеш и кеш на страницата. Първият е за диска блок четат и пишат, последната е за файла inode четат и пишат. Тези кеш са ефективно съкратени

Времето за I / O повиквания (като четене, писане, получаване).

След това някой каза, че след известно време linux автоматично ще освободи използваната памет. Изчакайте известно време, използваме безплатно, за да опитаме отново да видим дали има освобождаване?

кавички

[root @ сървърен тест] # free -m общо използвани безплатни споделени буфери в кеша Mem: 249 244 5 0 8 174 - / + буфери / кеш: 61 188 Разменени: 511 0 511

Изглежда няма промяна. (при действителната ситуация управлението на паметта е подходящо и за Swap)

Така че мога ли да освободя ръчно паметта? Отговорът е "да"!

На второ място, ръчно да освободите кеша

/ proc е виртуална файлова система, която можем да четем и пиша чрез нея като средство за комуникация с ядрото. С други думи, можете да промените файла / proc, за да направите настройки на текущото поведение на ядрото. След това можем да коригираме / proc / sys / vm / drop_caches, за да освободим паметта. Операцията е, както следва:

Референция [root @ server test] # cat / proc / sys / vm / drop_caches 0 Първо, стойността на / proc / sys / vm / drop_caches е по подразбиране 0. Цитат

Ръчно изпълнете командата за синхронизиране (Описание: команда за синхронизиране, за да стартирате подпрограмата за синхронизиране.) Ако трябва да спрете системата, изпълнете командата за синхронизиране, за да гарантирате цялостността на файловата система .sync

Команда за записване на всички неписани системни буфери на диска, включително модифицирани i-възли, закъснели блокови I / O и файлове за картографиране с четене и запис)

Цитат [root @ сървър тест] # echo 3> / proc / sys / vm / drop_caches [корен сървърен тест] # котка / proc / sys / vm / drop_caches 3 набор / proc / sys / vm / drop_caches до 3 цитат @server test] # безплатни -m общо използвани безплатни споделени буфери, кеширани Mem: 249 66 182 0 0 11 - / + буфери / кеш: 55 194 Разменени: 511 0 511

След това изпълнете свободната команда, ще намерите текущата, използвана за 66MB, безплатно за буферите от 182MB за 0MB, кеширани до 11MB. Така че е ефективното освобождаване на буфера и кеша.

Използването на / proc / sys / vm / drop_caches е описано по-долу

Цитат / proc / sys / vm / drop_caches (от Линукс 2.6.16) Писането в този файл кара ядрото да изпусне чисти кешира, dentries и inodes от паметта, причинявайки тази памет да се освободи. За да освободите pagecache, използвайте ехо 1> / proc / sys / vm / drop_caches; за да освободите зъбите и инодите, използвайте ехо 2> / proc / sys / vm / drop_caches; за да освободите pagecache, dentries и inodes, използвайте echo 3> / proc / sys / vm / drop_caches. Тъй като това е безразрушителна операция и мръсни обекти не могат да бъдат освободени, потребителят първо трябва да стартира синхронизирането.

Трето, моето мнение

Горната статия е дала по-интуитивен отговор на много потребители от много години за управлението на паметта на Linux, чувствам се малко като компромиса на основния екип за разработка.

Имам резерви относно това дали трябва да използвам тази стойност или да спомена стойността на потребителя:

кавички

1, може да се види от човека, тази стойност се предоставя след 2.6.16 ядро версия, така че е, старата версия на операционната система, като червен флаг DC 5.0, verison преди RHEL 4.x не са имали това ;

2, ако паметта на системата е достатъчна за наблюдението, все още възнамерявам да видя използването на суапа и размера на двете стойности si / so;

Общият въпрос на потребителя е, защо е толкова малък, дали паметта не е освободена след приключване на приложението?

Но всъщност всички знаем, че това е така, защото Linux е различен от Windows за управление на паметта, безплатната малка не е, че паметта не е достатъчна, трябва да видите последната стойност на втория ред безплатни:

кавички

- / + буфери / кеш: 58 191

Това е размерът на наличната памет на системата.

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

Напротив, в този момент, ако кажем на потребителя да променя системата, стойността "може" да освободи паметта, безплатната ще бъде по-голяма. Какво би помислил потребителят? Не мислят ли, че операционната система има "проблем"?

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

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

Когато няма достатъчно памет, приложението не може да получи налична памет, OOM грешка и други проблеми, може би трябва да анализираме причините за приложението, като например количеството на потребителите е твърде голямо, което води до недостиг на памет, прилагането на преливане на паметта, в противен случай изчистете буфера, за да накарате да освободите размера на свободното, следователно може просто да постави проблема в временния щит.

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


QY-IMX6-V.jpg

  • Newsletter
  • Продуктова категория
  • Свържете се с нас
    Добави: 5F, сграда 3A, No.8 Xiyuanyi Road, West Lake Science Park, Хангжу, Китай
    Тел: + 86-571-87858811
    Моб: +8613616520351
    Електронна поща: trade@qiyangtech.com
  • QR Code
  • Copyright © Zhejiang Qiyang Интелигентни технологии Ко ООД Всички права запазени.