Hardware counter — protsessor va boshqa apparat bloklarida sodir bo‘lgan mikroarxitektura hodisalarini sanaydigan maxsus registr yoki o‘lchov mexanizmidir. Performance monitoring unit ko‘rsatmalar, CPU sikllari, cache miss, branch misprediction va boshqa hodisalarni hisoblaydi. Profiler bu qiymatlardan dastur nega sekin ishlayotganini faqat devor vaqtidan chuqurroq tahlil qilish uchun foydalanadi.
Hodisa turlari
Instructions retired mantiqan yakunlangan ko‘rsatmalarni, CPU cycles esa sarflangan taktlarni taxmin qiladi. Ularning nisbati IPC sifatida ishlatiladi. Past IPC xotira kutishi, branch xatosi, dependency yoki frontend yetishmovchiligidan kelishi mumkin; bitta ko‘rsatkich sababni isbotlamaydi.
Cache reference va miss darajalari xotira iyerarxiyasi samaradorligini ko‘rsatadi. L1, last-level cache va TLB uchun alohida counterlar bo‘lishi mumkin. Branch counter shartli o‘tishlar va noto‘g‘ri bashoratlarni sanaydi. Context switch, page fault yoki disk hodisasi ko‘pincha OS software counteri bo‘lib, hardware PMU bilan bir profiling sessiyasida ko‘rsatiladi.
Sanash va sampling
Counting mode butun interval uchun jami qiymat beradi. Sampling mode counter ma’lum chegaraga yetganda interrupt chiqarib, instruction pointer va stackni yozadi. Shu orqali cache misslar qaysi kod joyida to‘plangani aniqlanadi. Precise event-based sampling ayrim protsessorlarda hodisani sabab ko‘rsatmaga yaqinroq bog‘laydi; oddiy interrupt skid tufayli keyingi ko‘rsatmada ko‘rinishi mumkin.
Fizik counter registrlari cheklangan. Bir vaqtda ko‘p event so‘ralsa, kernel ularni vaqt bo‘yicha multiplex qiladi va natijani scale qiladi. Juda qisqa o‘lchovda bu taxmin noaniq bo‘lishi mumkin. Eventlar bir guruhda bir vaqtda sanalishi talab qilinsa, barcha counterga joy yetishi kerak.
Talqin va portativlik
Event nomi va semantikasi CPU modeli bo‘yicha farq qiladi. Bir ishlab chiqaruvchining cache-misses umumiy eventi aniq cache darajasi yoki speculationni boshqasidan farqli hisoblash ehtimol. Raw event kodi model hujjatiga mos tanlanadi. Virtual mashinada hypervisor counterlarni to‘liq bermasligi yoki boshqa tenant shovqini natijaga ta’sir qilishi mumkin.
Counterlar speculative bajarilgan va retired hodisalarni farqli sanashi mumkin. Frequency scaling sabab cycles va real vaqt munosabati o‘zgaradi. SMT’da bir yadro resursini ikki thread ulashadi. NUMA joylashuvi, workload warm-up va pinning qayd etilmasa, tajribani takrorlash qiyin.
Amaliy tahlil
Avval biznesga yaqin benchmark va latency regressiyasi tasdiqlanadi, so‘ng counter gipotezani tekshiradi. Yuqori LLC miss ma’lumot strukturasining lokalitetini, yuqori branch miss noaniq control flowni ko‘rsatishi mumkin. O‘zgarishdan keyin counter bilan birga umumiy throughput va energiya ham o‘lchanadi; mikroarxitektura ko‘rsatkichi yaxshilansa-da foydalanuvchi natijasi yomonlashishi mumkin.
Counterga kirish kernel policy bilan cheklanadi, chunki ayrim mikroarxitektura kuzatuvlari yon kanalga yordam berishi mumkin. Production profiling qisqa, sampling va minimal overhead bilan bajariladi. Yig‘ilgan stack hamda symbol ichki kod ma’lumotidir va access control bilan saqlanadi.
+## Container va cgroup konteksti
Host-wide counter bir vaqtning o‘zida ko‘plab container ishini aralashtiradi. Per-process yoki cgroup profiling kerakli workloadni ajratadi, lekin kernel va interrupt xarajatining qaysi hisobga yozilishi vositaga bog‘liq. Container ichida PMU access odatda cheklangan; privileged berish o‘rniga node agent nazoratli profiling qiladi. CPU quota throttling sikl sarfini va wall time’ni boshqacha o‘zgartiradi, shuning uchun throttled time alohida ko‘riladi. Pod boshqa yadroga ko‘chsa, turli core counterlari yig‘iladi. CPU pinning tajribani barqarorlashtiradi, ammo production schedulingdan farqli natija berishi mumkin. Counter hisobotida cgroup limitlari va node yuklanishi qayd etiladi.
Bog‘liq tushunchalar
PMU, CPU cycles, IPC, Cache miss, Branch prediction, Sampling profiler, Microarchitecture