Huge page — operatsion tizimning odatiy sahifasidan ancha katta xotira sahifasidir. Masalan, 4 KiB bazaviy page bilan birga 2 MiB yoki 1 GiB sahifalar qo‘llanishi mumkin. U katta working set uchun page table entry va TLB misslar sonini kamaytirib, database, virtual mashina va hisoblash yukida unumdorlikni yaxshilashi mumkin.
Tarjima xarajati
Bir TLB entry 4 KiB o‘rniga 2 MiB oralig‘ni qoplasa, bir xil TLB sig‘imi ko‘proq xotirani qamraydi. Page walk ham kamroq entry talab qilishi mumkin. Random accessli katta in-memory database TLB pressure’dan foyda ko‘radi. Ketma-ket kichik working setda esa farq sezilmasligi mumkin.
Huge page CPU cache’ni kattalashtirmaydi va disk I/Oni avtomatik tezlashtirmaydi. Asosiy foyda manzil tarjimasi va page table xotirasidan keladi. Benchmark CPU counter, TLB miss va real query latency bilan tasdiqlanadi.
Transparent va explicit
Transparent Huge Pages operatsion tizimga oddiy sahifalarni avtomatik katta sahifaga birlashtirish imkonini beradi. Ilova o‘zgarmaydi, ammo compaction va promotion kutilmagan kechikish keltirishi mumkin. Database’lar ba’zan tail latency sabab THPni o‘chirib, oldindan rezervlangan hugetlb sahifalardan foydalanadi.
Explicit huge page boot yoki runtime’da son bilan rezerv qilinadi va maxsus filesystem yoki mapping flag orqali olinadi. Rezerv qilingan xotira odatiy allocation uchun mavjud bo‘lmasligi mumkin. Noto‘g‘ri hisoblash tizimni xotirasiz qoldiradi yoki katta poolni bekor band qiladi.
Fragmentation va NUMA
2 MiB uchun fizik jihatdan uzluksiz frame kerak. Uzoq ishlagan tizimda fragmentation sabab allocation muvaffaqiyatsiz bo‘lishi yoki compaction talab qilishi mumkin. Boot paytida rezerv qilish ishonchliroq. 1 GiB sahifa talabi yanada qat’iy.
NUMA tizimida huge page qaysi tugunda ajratilgani muhim. Ilova oqimi boshqa socketda ishlasa TLB foydasi bilan birga remote memory kechikishi paydo bo‘ladi. CPU pinning, memory policy va huge page pool har tugun bo‘yicha moslanadi.
Cheklovlar
Kichik obyekt uchun katta page ichki fragmentation yaratadi. Copy-on-write yoki memory pressure paytida katta sahifani bo‘lish xarajati bor. Huge page granular permission va reclaimni yiriklashtiradi. Security policy, container limit va cgroup hisoboti ham bazaviy sahifadan farq qilishi mumkin.
Monitoring actual huge mapping, fallback, split, collapse va allocation failure ko‘rsatkichlarini tekshiradi. Konfiguratsiyada “huge page yoqilgan” bo‘lishi ilova haqiqatan undan foydalanyapti degani emas. Deployment restartidan keyin pool va mount saqlanishi, failover tugunida ham yetarli sahifa mavjudligi sinovdan o‘tkaziladi.
Virtualizatsiya va database
Virtual mashinada guest huge page hostda ham katta sahifaga to‘g‘ri kelmasa nested translationning barcha foydasi olinmaydi. Host pool VMlar orasida qat’iy bo‘linganda failover uchun zaxira qolishi kerak. Database shared bufferini huge pagega joylash startupda talab qilingan barcha sahifa mavjud bo‘lmasa muvaffaqiyatsiz bo‘lishi yoki oddiy sahifaga fallback qilishi mumkin. Fallback operatorga aniq ko‘rsatiladi. Memory overcommit va ballooning huge page bilan cheklanganroq ishlaydi; capacity rejasida live migration va NUMA topology hisobga olinadi. Xavfsizlik sabab xotirani nolga tozalash katta sahifada ko‘proq vaqt olishi mumkin, ammo boshqa tenant ma’lumoti chiqmasligi shart.
Katta sahifalar har doim ham foydali emas: ular xotirani mayda obyektlar orasida samarali taqsimlashni qiyinlashtirishi mumkin. Amaliy baholashda TLB kamayishi bilan ichki parchalanish va ajratish kechikishi birgalikda o‘lchanadi.
Bog‘liq tushunchalar
TLB, Page table, THP, NUMA, Memory fragmentation, Hugetlb