Page Cache — operatsion tizimning fayl kontentini physical memory sahifalarida saqlab, takroriy I/Oni tezlashtiradigan cache. Ko‘p Unix tizimida buffered file I/O va memory mapping ayni page cache’dan foydalanadi.
Read yo‘li
Read cache hitda storagega bormaydi; missda page yuklanadi. Readahead ketma-ket accessni taxmin qilib oldingi so‘rovdan katta range olib keladi. Random workload’da ortiqcha readahead zararli bo‘lishi mumkin.
Writeback
Write odatda page’ni dirty qilib tez qaytadi; writeback keyin diskka uzatadi. fsync durability chegarasini beradi. Dirty limit memory pressure va writer throttlingga ta’sir qiladi.
Memory pressure
Page cache anonymous memory bilan RAM uchun raqobat qiladi. Reclaim clean page’ni tashlaydi, dirty page oldin writeback talab qiladi. Working set va eviction algoritmi thrashingni belgilaydi.
Direct I/O
Direct I/O page cache’ni chetlashi mumkin, ammo alignment va coherency shartlari bor. Aynan faylga cached hamda direct access aralashtirilsa platforma qoidalari tekshiriladi.
Ilova cache’i
Database own buffer pool ishlatganda double caching yuz berishi mumkin. Boshqa workload esa OS cache’dan samarali foydalanadi. Tanlov access pattern va durability modeliga bog‘liq.
O‘lchash
Test cold/warm read, memory pressure, dirty writeback, readahead va truncate coherencyni qamraydi. Cache hit bilan device throughput alohida o‘lchanadi.
Amaliy nazorat
Page Cache bilan ishlaydigan tizim cached page, dirty state va reclaimni aniq lifecycle va version bilan yuritadi. Pointer, mapping, navbat yoki exception holati boshqa qatlamga uzatilganda ownership hamda permission shartlari yo‘qolmaydi. Debug rejimda manzil, obyekt identifikatori va state transition qayd etiladi; production log ASLR, maxfiy ma’lumot va raw pointerlarni ochib yubormaydigan shaklga keltiriladi. Eskirgan handle yoki metadata reuse qilinmasligi uchun generation, build-id yoxud reference hisobidan foydalaniladi.
Muhim xavf — writeback stall yoki direct-I/O coherency. Bunday vaziyatda tizim taxmin bilan davom etmaydi: access fault, aniq error, konservativ fallback yoki nazoratli cleanup qo‘llanadi. Signal/fault kelgan nuqta har doim asl buzilish joyi emas; allocation, mapping va oxirgi ownership amallari trace’i tashxisga yordam beradi. Parallel accessda lock, atomic ordering va lifetime birgalikda tekshiriladi. Timeout yoki null check memory safetyning o‘rnini bosa olmaydi.
Sifat nazorati cold/warm, pressure va fsync testi orqali bajariladi. Sinovlar normal holat bilan birga nol uzunlik, page boundary, alignment, juda katta offset, concurrent close/free, permission o‘zgarishi va platforma farqlarini qamraydi. Correctness avval etalon hamda invariant bilan tekshiriladi, keyin page fault, cache miss, contention, latency yoki xotira sarfi o‘lchanadi. Sanitizer, fault injection va malformed-input fuzzing topgan minimal holat doimiy regressiya testiga aylantiriladi.
Page cache hit ilova uchun disk I/O bo‘lmaganini anglatishi mumkin, ammo nusxalash va page-table ishlari baribir xarajat qiladi. Cold-cache va warm-cache benchmarklarini aralashtirish natijani noto‘g‘ri talqin qiladi. Cache’ni majburan tozalash production xulqini har doim aks ettirmaydi; ko‘pincha resident sahifalar, major va minor faultlar, readahead hamda storage queue metrikalarini birga kuzatish yaxshiroq. Dirty limitga yetilganda yozuvchi thread throttlingga uchrashi mumkin, natijada write chaqirig‘i tez qaytadigan odatiy holatdan keskin farq qiladi. Durability esa page cachega yozish bilan emas, kerakli sync chegarasi bilan belgilanadi.
Bog‘liq tushunchalar
filesystem cache, buffered I/O, readahead, writeback, dirty page, direct I/O