Bosh sahifa Wiki Interrupt affinity

Interrupt affinity

Interrupt affinity — muayyan apparat uzilishi qaysi protsessor yadrosi yoki yadrolar to‘plamida qayta ishlanishini belgilovchi siyosatdir. Ko‘p yadroli tizimda tarmoq kartasi, disk kontrollyori va boshqa qurilmalarning interruptlarini oqilona taqsimlash throughput, kesh lokaliligi va kechikishga ta’sir qiladi.

Yo‘naltirish mexanizmi

Interrupt controller har bir IRQni ruxsat etilgan CPU maskasiga yo‘naltiradi. Operatsion tizim yoki maxsus daemon yukga qarab maskalarni avtomatik sozlashi mumkin. MSI va MSI-X qurilmaga bir nechta interrupt vector ajratish imkonini beradi; ko‘p navbatli tarmoq kartasida har receive/transmit navbati alohida yadroga bog‘lanishi mumkin.

Affinity “faqat shu yadroda ishlaydi” degan qat’iy ma’noga har doim ega emas. CPU offline bo‘lsa, power management yoki platforma cheklovi mavjud bo‘lsa, yadro IRQni boshqa joyga ko‘chirishi mumkin. Ayrim boshqariladigan interruptlarda administrator maskasi maslahat sifatida talqin qilinadi.

Lokalilik

Tarmoq paketini qabul qilgan yadro keyingi protokol va ilova ishini ham bajarsa, ma’lumot keshda qolishi mumkin. Receive-side scaling oqimlarni navbatlarga xeshlab, interrupt va paket ishlovini yadrolarga tarqatadi. Ilova oqimi boshqa NUMA tugunida bo‘lsa, paket buferi masofaviy xotiradan o‘qiladi va lokalilik foydasi yo‘qoladi.

Shu sababli IRQ affinity, NIC navbati, worker oqimi va NUMA xotira joylashuvi birgalikda sozlanadi. Faqat interrupt sonini teng taqsimlash har doim eng yaxshi natija bermaydi: ayrim trafik oqimi boshqasidan ancha og‘ir bo‘lishi mumkin.

Izolyatsiya va real vaqt

Past kechikishli vazifalarda bir nechta yadro ilova uchun ajratilib, qurilma interruptlari housekeeping yadrolariga yo‘naltiriladi. Bu hisoblash oqimining kutilmagan uzilishini kamaytiradi. Biroq ilova foydalanadigan qurilma bilan ishlov juda uzoqda bajarilsa, yadroalararo uyg‘otish va NUMA xarajati ortishi mumkin.

Bir yadroga juda ko‘p IRQ biriktirish bottleneck hosil qiladi. Interrupt coalescing uzilishlar sonini kamaytiradi, lekin paketning kutish vaqtini oshirishi mumkin. Throughput va tail latency o‘rtasidagi muvozanat ish yukiga qarab sinovdan o‘tkaziladi.

Kuzatish va sozlash

Tizim hisoblagichlari IRQ sonini har bir CPU bo‘yicha ko‘rsatadi. Softirq va ilova CPU vaqti ham tekshiriladi, chunki apparat interrupt tez tugab, asosiy yuk keyingi yumshoq ishlovga o‘tishi mumkin. Paket yo‘qotish, navbat to‘lishi, p99 kechikish va CPU bandligi birga o‘lchanadi.

Sozlashdan oldin bazaviy natija olinadi va o‘zgarish bosqichma-bosqich qilinadi. irqbalance avtomatik siyosati qo‘lda berilgan maskaga zid kelmasligi tekshiriladi. Virtual mashinada virtual IRQ, vCPU pinning va mezbonning fizik IRQ joylashuvi o‘zaro ta’sir qiladi; faqat mehmon ichidagi o‘zgarish yetarli bo‘lmasligi mumkin.

Amaliy sinov

Affinity o‘zgarishi ishlab chiqarish yukiga o‘xshash trafikda tekshiriladi. O‘rtacha throughput yaxshi bo‘lib, bitta yadro to‘lib qolsa p99 kechikish yomonlashishi mumkin. Har NIC queue uchun drop, backlog, softnet statistika va paketning ilova oqimigacha qaysi CPUlarda yurgani ko‘riladi. Hyper-threadingdagi ikki mantiqiy CPU bir fizik yadro resursini bo‘lishadi; ularni mustaqil to‘liq yadro deb hisoblash noto‘g‘ri natija beradi. CPU hotplug va restartdan keyin maskalar saqlanishi konfiguratsiya boshqaruvi bilan ta’minlanadi. Aks holda bir martalik qo‘lda tuning keyingi yuklanishda yo‘qoladi.

Yadro versiyasi yoki NIC driver yangilanganda queue nomlari va default siyosat o‘zgarishi mumkin. Avtomatik test konfiguratsiya hali mo‘ljallangan CPU maskasini berayotganini tekshiradi. Affinity qiymati hardware inventory bilan generatsiya qilinsa, turli server modellarida noto‘g‘ri mavjud bo‘lmagan yadro tanlanmaydi.

Bog‘liq tushunchalar

IRQ, MSI-X, NUMA, Receive-side scaling, CPU affinity, Interrupt coalescing