Памет

Оптимизиране на използването на паметта на Linux

Оптимизиране на използването на паметта на Linux
В част първа от тази серия разгледахме по-отблизо пространството за размяна, а втора част се занимавахме с инструменти и команди за управление на паметта. Сега ще обсъдим различни параметри и стратегии за оптимизиране на паметта и нейното използване като цяло. Това обхваща количеството памет, ускорението на достъпа и вътрешната стратегия за използване.

Количество памет

Както вече беше обсъдено в първа част, цялата памет се нарича виртуална памет и се състои както от физическа памет, така и от пространство за суап. Наличието на физическата памет зависи от хардуера, който е вграден в машината, както и от това колко памет всъщност може да адресира процесорът. Като пример, 32-битовите операционни системи имат ограничение от 4G памет, само (2 ^ 32 бита), докато операционните системи, базирани на 64 бита, теоретично позволяват до 16 EB (2 ^ 64 бита).

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

Достъп до памет

След това се има предвид подобрение на скоростта на достъп до паметта. Отначало физическата граница се дава от самия модул памет. Не можете да стигнете под физическите граници на хардуера. На второ място, RAM диск, а на трето използването на zRAM може да ускори достъпа до паметта. Ще обсъдим тези две технологии по-подробно.

Създаване на рамдиск

Рамдискът е блок памет, който операционната система обработва като физическо устройство за съхранение на данни - твърд диск, който се съхранява изцяло в паметта. Това временно устройство съществува веднага щом системата се стартира и активира RAM диска, а системата или деактивира RamDisk, или се изключва. Имайте предвид, че данните, които съхранявате на такъв диск, се губят след изключването на машината.

Можете да създадете динамичен ramdisk чрез файловата система tmpfs и чрез файловата система ramfs. И двете технологии се различават значително една от друга. Първо, динамично означава, че паметта за дисковия диск се разпределя въз основа на неговото използване (вярно и за двата метода). Докато не съхранявате данни върху него, размерът на диска е 0.

Създаването на динамичен RAM диск чрез tmpfs е както следва:

# mkdir / media / ramdisk
# mount -t tmpfs none / media / ramdisk

Създаването на динамичен ramdisk чрез ramfs е както следва:

# mkdir / media / ramdisk
# mount -t ramfs ramfs / media / ramdisk

Второ, използването на tmpfs и освен ако не е изрично посочено, размерът на диска е ограничен до 50% от физическата памет. За разлика от това, дискът, базиран на ramfs, няма такова ограничение.

Създаването на динамичен RAM диск чрез tmpfs с относителен размер от 20% от физическата памет е както следва:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 20% none / media / ramdisk

Създаването на динамичен RAM диск чрез tmpfs с фиксиран размер от 200M физическа памет е както следва:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 200M none / media / ramdisk

Трето, и двата метода се справят с размяната по различен начин. В случай, че системата достигне лимита на паметта на RAM диск, базиран на tmpfs, данните от RAM диска се разменят. Това осуетява идеята за бърз достъп. От друга страна, операционната система дава приоритет както на съдържанието, така и на поисканите страници с памет на рамдиск, базирани на ramfs, поддържа това в паметта и замества останалите страници с памет на диск.

В горните примери, които използвахме / media / ramdisk като точка на монтиране. Що се отнася до редовните данни, единствената част от файловата система на Linux, която се препоръчва да се използва на рамдиск, е / tmp. Тази директория съхранява само временни данни, които не продължават. Създаването на постоянен диск с памет, който съхранява файловата система / tmp, изисква допълнителен запис във файла / и т.н. / fstab както следва (въз основа на ramfs):

ramfs / tmp ramfs по подразбиране 0 0

Следващият път, когато стартирате вашата Linux система, ramdisk ще бъде активиран автоматично.

Използване на zRAM

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

Понастоящем няма наличен пакет за Debian GNU / Linux, но Ubuntu. Нарича се zram-config. Инсталирайте пакета и настройте zRAM устройство, като просто стартирате съответната услуга systemd, както следва:

# systemctrl стартира zram-config

Както се дава от изхода на swapon -s, устройството е активно като допълнителен Swap дял. Автоматично за zRAM се разпределя размер от 50% от паметта (вижте фигура 1). Понастоящем няма начин да се определи различна стойност за zRAM, която да бъде разпределена.

За да видите повече подробности за компресирания суап дял, използвайте командата zramctl. Фигура 2 показва името на устройството, алгоритъма за компресиране (LZO), размера на суап дяла, размера на данните на диска и неговия компресиран размер, както и броя на потоците за компресия (стойност по подразбиране: 1).

Стратегия за използване

След това се фокусираме върху стратегията за използване на паметта. Има няколко параметъра, които влияят върху поведението на използването и разпространението на паметта. Това включва размера на страниците с памет - на 64-битови системи е 4M. На следващо място, параметърът swappiness играе роля. Както вече беше обяснено в част първа, този параметър контролира относителното тегло, придадено на размяната на паметта по време на изпълнение, за разлика от изпускането на страници с памет от кеша на системните страници. Също така не трябва да забравяме както кеширането, така и подравняването на страницата с памет.

Използвайте програми, които изискват по-малко памет

Не на последно място използването на паметта зависи от самите програми. Повечето от тях са свързани със стандартната библиотека C (стандартна LibC). Като разработчик, за да сведете до минимум вашия двоичен код, помислете за използването на алтернатива и много по-малка C библиотека вместо това. Например съществуват dietlibc [1], uClibc [2] и musl lib C [3]. Уебсайтът на разработчика на musl lib C съдържа обширно сравнение [4] по отношение на тези библиотеки по отношение на възможно най-малката статична програма C, сравнение на функции, както и съответните среди за изграждане и поддържани хардуерни архитектури.

Като потребител може да не се наложи да компилирате вашите програми. Помислете за търсене на по-малки програми и различни рамки, които изискват по-малко ресурси. Като пример можете да използвате работната среда XFCE вместо KDE или GNOME.

Заключение

Съществуват доста опции за промяна на използването на паметта към по-добро. Това варира от суап до компресия, базирана на zRAM, както и настройка на дисково пространство или избор на различна рамка.

Връзки и справки

Серия за управление на паметта на Linux

Благодарности

Авторът би искал да благодари на Axel Beckert и Gerold Rupprecht за тяхната подкрепа при подготовката на тази статия.

Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...
Инсталирайте най-новия Dolphin Emulator за Gamecube & Wii на Linux
Dolphin Emulator ви позволява да играете избраните от вас игри Gamecube & Wii на Linux Personal Computers (PC). Като безплатно достъпен и емулатор на...
Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...