Bosh sahifa Wiki Swap

Swap

Swap — operativ xotira yetishmaganda yoki kam ishlatilayotgan sahifalarni RAMdan diskka ko‘chirish uchun operatsion tizim foydalanadigan saqlash maydoni.

Swap alohida partition yoki fayl ko‘rinishida bo‘lishi mumkin.

Disk RAMdan ancha sekin. Swap xotirani kengaytirishga yordam beradi, lekin faol workload swapga ko‘p murojaat qilsa performance keskin pasayadi.

Virtual memory

Process virtual address space’dan foydalanadi.

Kernel virtual sahifalarni:

bilan bog‘laydi.

Process sahifa qayerda saqlanayotganini bevosita bilmaydi.

Swap partition

Diskda alohida partition swap turi bilan formatlanadi.

Afzalliklari:

  • oddiy;
  • filesystemga bog‘liq emas;
  • oldindan ajratilgan;
  • hibernation uchun qulay bo‘lishi mumkin.

Hajmni o‘zgartirish partition layoutni o‘zgartirishni talab qilishi mumkin.

Swap file

Filesystem ichidagi oddiy ko‘rinadigan maxsus fayl.

Afzalliklari:

  • yaratish oson;
  • hajmni o‘zgartirish qulay;
  • alohida partition talab qilmaydi.

Filesystem va kernel swap file extentsini to‘g‘ri qo‘llashi kerak.

Page out

Kernel kam ishlatilgan anonymous memory sahifalarini swapga yozadi.

Misollar:

File-backed clean page swapga yozilmasligi mumkin, chunki uni original fayldan qayta o‘qish mumkin.

Page in

Process swapdagi sahifaga murojaat qilsa page fault yuz beradi.

Kernel diskdan sahifani RAMga o‘qiydi.

Bu major page fault bo‘lib, katta latencyga ega.

Swapping va paging

Tarixiy “swapping” butun processni diskka ko‘chirishni anglatgan.

Zamonaviy tizimlar ko‘pincha alohida sahifalarni page out qiladi.

Amaliy suhbatda ikkisi ko‘pincha bir xil atama bilan aytiladi.

Swappiness

Linux swappiness parametri kernelning anonymous memoryni swap qilish va file cache’ni qisqartirish orasidagi moyilligiga ta’sir qiladi.

Yuqori qiymat swapni erta ishlatishi mumkin.

Past qiymat swapni faqat keskin memory bosimida ishlatishga intiladi.

Bu “swap foizi” emas.

File cache

RAM faqat process xotirasi uchun emas, disk fayllarini cache qilish uchun ham ishlatiladi.

Kernel kam ishlatilgan anonymous sahifani swapga chiqarib, ko‘p kerak bo‘ladigan file cache uchun RAM qoldirishi mumkin.

Swap ishlatilishi har doim muammo degani emas.

Thrashing

Tizim ko‘p sahifani swapga chiqarib, darhol qayta o‘qisa thrashing yuz beradi.

Belgilar:

  • disk doim band;
  • CPU utilization past;
  • application juda sekin;
  • page-in/page-out yuqori;
  • latency keskin.

Sabab — active working set RAMga sig‘maydi.

OOM killer

Swap va RAM tugasa kernel yangi memory ajrata olmaydi.

Linux OOM killer bir yoki bir nechta processni tanlab tugatishi mumkin.

Tanlov:

  • memory sarfi;
  • oom_score;
  • privilege;
  • adjustment;
  • cgroup

ga bog‘liq.

Swap OOMni kechiktiradi, lekin cheksiz xotira bermaydi.

Hibernation

Hibernationda RAM holati diskka yoziladi va tizim quvvatdan uziladi.

Resume paytida image qayta RAMga yuklanadi.

Swap maydoni RAM image’ni sig‘dirishi va bootloader/kernel resume locationni bilishi kerak.

Compression sabab aniq hajm talabi platformaga bog‘liq.

Encryption

Swapda process xotirasidagi maxfiy ma’lumot qolishi mumkin.

Himoya:

  • full-disk encryption;
  • encrypted swap;
  • har boot random key;
  • hibernation talabiga mos persistent key.

Random keyli swapdan hibernation resume qilib bo‘lmaydi.

SSD

SSD swap HDDdan tezroq, lekin RAMdan baribir ancha sekin.

Ko‘p swap write SSD wear’ga ta’sir qiladi, ammo zamonaviy SSD endurance va controller wear levelingga ega.

Thrashingni SSD bilan yashirish o‘rniga RAM va workload tuzatiladi.

zswap

zswap swapga yozilishidan oldin sahifani RAMdagi compressed cache’da saqlaydi.

Afzalligi:

  • disk I/O kamayadi;
  • compressible sahifa tez qaytadi.

Compressed cache ham RAM ishlatadi.

zram

zram RAM ichida compressed block device yaratadi.

U swap sifatida ishlatilishi mumkin.

Disk I/O yo‘q, ammo CPU compression va RAM sarfi mavjud.

Kam RAMli qurilma va desktoplarda foydali bo‘lishi mumkin.

Swap priority

Bir nechta swap device priorityga ega.

Kernel yuqori priority’ni oldin ishlatadi yoki bir xil prioritydagi qurilmalarga taqsimlashi mumkin.

Tez NVMe va sekin disk uchun priority farqlanadi.

Container va cgroup

Container host swapidan foydalanishi mumkin, ammo cgroup memory va swap limitlari alohida sozlanadi.

Container ichidagi free host yoki namespace ma’lumotini ko‘rsatishi mumkin.

Memory limitdan oshsa container OOM bo‘lishi mumkin, hostda bo‘sh RAM bo‘lsa ham.

Monitoring

Muhim metrikalar:

  • swap total va used;
  • swap in;
  • swap out;
  • major page fault;
  • memory pressure;
  • disk latency;
  • OOM;
  • per-process swap.

Faqat used swap soniga qarab xulosa qilinmaydi. Aktiv page I/O muhim.

Diagnostika

Tizim sekinlashganda:

  • available memory;
  • working set;
  • swap-in/out tezligi;
  • disk utilization;
  • major fault;
  • cgroup limit;
  • OOM log;
  • memory leak;
  • swappiness

tekshiriladi.

Swapni o‘chirib qo‘yish muammoni hal qilmasdan OOMni tezlashtirishi mumkin.

Swapni yoqish va o‘chirish

Swap maydoni formatlanib, swapon orqali faollashtiriladi. Doimiy konfiguratsiya boot jadvaliga qo‘shiladi.

swapoff barcha ishlatilayotgan sahifalarni RAMga qaytarishga urinadi. Yetarli RAM bo‘lmasa amal xato qiladi yoki tizim kuchli memory bosimiga tushadi.

Katta swapni production vaqtida birdan o‘chirishdan oldin faol usage va available memory tekshiriladi.

Per-process swap

Umumiy swap ishlatilishi qaysi process sabab bo‘lganini to‘liq ko‘rsatmaydi. Process memory mappinglari yoki monitoring vositasi har processning swapdagi sahifalarini hisoblaydi.

Uzoq vaqt uxlayotgan process swapda bo‘lishi normal. Doimiy faol service sahifalari swap-in qilinsa latency oshadi.

Database

Database ko‘pincha o‘z cache va memory boshqaruviga ega. Kuchli swap query latency’sini beqaror qiladi.

Memory limit, shared buffer va OS page cache birgalikda rejalashtiriladi. Swapni butunlay o‘chirishdan oldin OOM xavfi baholanadi.

Bog‘liq tushunchalar

Virtual memory, Paging, Page fault, RAM, Swap file, Swap partition, Thrashing, OOM killer, zswap, zram