Bosh sahifa Wiki Interrupt

Interrupt

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:

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 moderation;
  • packet batching;
  • NAPI;
  • Receive Side Scaling;
  • pollingga vaqtincha o‘tish.

Interrupt storm

Qurilma juda ko‘p interrupt yuborsa CPU foydali processlarni bajara olmaydi.

Sabablar:

  • buzilgan hardware;
  • noto‘g‘ri driver;
  • yuqori packet rate;
  • signal chizig‘i;
  • tasdiqlanmagan interrupt.

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:

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:

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:

  • packet soni;
  • vaqt;
  • adaptive mode;
  • queue bo‘yicha qiymat.

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