Количество памет
Както вече беше обсъдено в първа част, цялата памет се нарича виртуална памет и се състои както от физическа памет, така и от пространство за суап. Наличието на физическата памет зависи от хардуера, който е вграден в машината, както и от това колко памет всъщност може да адресира процесорът. Като пример, 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):
Следващият път, когато стартирате вашата 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, както и настройка на дисково пространство или избор на различна рамка.
Връзки и справки
- [1] dietlibc, https: // www.fefe.de / dietlibc /
- [2] uClibc, https: // uclibc.организация /
- [3] musl lib C, http: // www.musl-libc.организация /
- [4] сравнение на C библиотеки, http: // www.еталабс.net / compare_libcs.html
Серия за управление на паметта на Linux
- Част 1: Управление на паметта на ядрото на Linux: Размяна на пространство
- Част 2: Команди за управление на Linux памет
- Част 3: Оптимизиране на използването на паметта на Linux
Благодарности
Авторът би искал да благодари на Axel Beckert и Gerold Rupprecht за тяхната подкрепа при подготовката на тази статия.