Interrupt — protsessorning joriy bajarilishini vaqtincha to‘xtatib, muhim hodisani qayta ishlash uchun maxsus handlerga o‘tish mexanizmi.
Interrupt hardware qurilma, timer, boshqa CPU core yoki dasturiy holat tomonidan yuzaga kelishi mumkin.
U qurilmani doimiy polling qilish o‘rniga, hodisa sodir bo‘lganda CPUga xabar berish imkonini beradi.
Hardware interrupt
Hardware qurilma interrupt controller orqali signal yuboradi.
Misollar:
- network packet keldi;
- disk operatsiyasi tugadi;
- klaviatura tugmasi bosildi;
- timer muddati tugadi;
- USB hodisasi;
- hardware xato.
CPU tegishli interrupt handlerni bajaradi.
Software interrupt va exception
Dasturiy instruction yoki CPU aniqlagan holat ham control flow’ni maxsus handlerga o‘tkazadi.
Misollar:
- division by zero;
- page fault;
- invalid opcode;
- breakpoint;
- syscall instruction.
Arxitekturaga qarab “interrupt”, “exception” va “trap” atamalari aniq farqlanadi.
Interrupt vector
Har interrupt yoki exception identifikatorga ega.
Interrupt vector table yoki descriptor table handler manzilini saqlaydi.
CPU vector raqami bo‘yicha kerakli handlerga o‘tadi.
Interrupt handler
Handler qisqa va tez ishlashi kerak.
U:
- hodisa sababini aniqlaydi;
- qurilma registerini o‘qiydi;
- interruptni tasdiqlaydi;
- minimal data saqlaydi;
- qolgan ishni keyingi bosqichga beradi.
Handler ichida uzoq kutish boshqa interrupt va processlarga zarar qiladi.
Top half va bottom half
Linux kabi tizimlarda interrupt ishlovi ikki qismga bo‘linadi.
Top half
Bevosita interrupt kontekstida ishlaydi. Tez bajariladi.
Bottom half
Og‘irroq ishni keyin bajaradi.
Mexanizmlar:
- softirq;
- tasklet tarixan;
- workqueue;
- threaded interrupt.
Bu interrupt latency’ni kamaytiradi.
Interrupt controller
Interrupt controller ko‘p qurilma signalini CPU corelarga yetkazadi.
Funksiyalar:
Zamonaviy x86 tizimlarda APIC oilasi ishlatiladi.
Maskable interrupt
Maskable interrupt CPU yoki controller tomonidan vaqtincha bloklanishi mumkin.
Critical sectionda juda qisqa muddat interrupt o‘chirilishi mumkin.
Uzoq o‘chirish timer va device response’ni kechiktiradi.
Non-maskable interrupt
NMI oddiy mask bilan to‘xtatilmaydi.
U:
- jiddiy hardware xato;
- watchdog;
- debug;
- performance monitoring
uchun ishlatilishi mumkin.
NMI handler yanada qat’iy cheklovga ega.
Interrupt priority
Yuqori priority hodisa past priority handlerni to‘xtatishi mumkin.
Nested interrupt arxitektura va OS siyosatiga bog‘liq.
Priority noto‘g‘ri bo‘lsa, muhim real-time hodisa kechikadi.
Timer interrupt
Scheduler CPU vaqtini boshqarish va timerlarni yangilash uchun timer interruptdan foydalanadi.
Periodic tick yoki tickless model mavjud.
Tickless tizim idle paytda keraksiz timer interruptlarni kamaytirib, quvvatni tejaydi.
Network interrupt
NIC packet kelganda interrupt yuboradi.
Yuqori trafikda har packet uchun interrupt CPUni band qiladi.
Optimizatsiyalar:
Interrupt storm
Qurilma juda ko‘p interrupt yuborsa CPU foydali processlarni bajara olmaydi.
Sabablar:
Kernel rate limit yoki interruptni o‘chirishi mumkin.
Shared interrupt
Eski yoki ayrim platformalarda bir nechta qurilma bitta interrupt line’ni bo‘lishadi.
Handler qaysi qurilma signal berganini registerlardan aniqlaydi.
MSI va MSI-X qurilmaning interruptni maxsus memory write sifatida yuborishiga imkon beradi.
MSI-X
MSI-X bir qurilmaga ko‘p interrupt vector beradi.
Network card har queue uchun alohida vector ishlatishi mumkin.
Vectorlar turli CPU corelarga taqsimlanib, parallel packet processingni yaxshilaydi.
Interrupt affinity
Interrupt qaysi CPU coreda qayta ishlanishi belgilanadi.
Network queue va application threadni bir NUMA node’da saqlash performance’ni oshirishi mumkin.
Noto‘g‘ri affinity bitta core’ni ortiqcha yuklaydi.
Interrupt latency
Hodisa yuz berganidan handler boshlanguncha o‘tgan vaqt.
Ta’sir omillari:
- interrupt mask;
- yuqori priority handler;
- kernel critical section;
- CPU power state;
- virtualization;
- hardware.
Real-time tizimlarda maksimal latency muhim.
Polling bilan farqi
Pollingda CPU qurilma holatini qayta-qayta tekshiradi.
Interruptda qurilma hodisa bo‘lganda xabar beradi.
Past hodisa tezligida interrupt samarali. Juda yuqori tezlikda batching yoki polling foydaliroq bo‘lishi mumkin.
Virtualizatsiya
Virtual qurilma interrupti hypervisor orqali guestga yetkaziladi.
Interrupt virtualization va paravirtual driver transition xarajatini kamaytiradi.
Passthrough qurilmada IOMMU va interrupt remapping xavfsizlik uchun kerak.
Diagnostika
Interrupt muammosida:
- interrupt counter;
- qaysi device;
- qaysi CPU;
- storm;
- affinity;
- driver;
- MSI-X;
- latency;
- dropped packet;
- hardware log
tekshiriladi.
Bitta CPUda interrupt foizi juda yuqori bo‘lsa, queue va affinity taqsimoti ko‘riladi.
Interrupt coalescing
Network adapter bir nechta packet uchun bitta interrupt yuborishi mumkin. Bu CPU yukini kamaytiradi, ammo packetni kutish sabab latency ozgina oshadi.
Coalescing parametrlari:
Low-latency va high-throughput workloadlar uchun turli sozlama kerak.
Watchdog
Watchdog timer ma’lum vaqt ichida yangilanmasa interrupt yoki system reset chiqaradi. Kernel yoki real-time controller qotib qolganini aniqlash uchun ishlatiladi.
Watchdogning timeouti normal eng yomon bajarilish vaqtidan katta bo‘lishi kerak.
Interrupt statistikasi
Operatsion tizim har vector va CPU bo‘yicha interrupt sonini ko‘rsatishi mumkin. Counterlarning keskin o‘sishi qaysi qurilma yuqori yuk berayotganini aniqlashga yordam beradi.
Bog‘liq tushunchalar
CPU, Interrupt handler, Exception, Timer, APIC, MSI-X, NAPI, Interrupt affinity, Driver, Polling