Mavzu: Uzulishning tarqalishi haqidagi masala



Download 54 Kb.
Sana07.03.2022
Hajmi54 Kb.
#485525
Bog'liq
Uzulishning tarqalishi haqidagi masala


Mavzu: Uzulishning tarqalishi haqidagi masala
Ushbu maqolada men x86 tizimidagi tashqi qurilmalardan uzilishlarni etkazib berish mexanizmlarini ko'rib chiqmoqchiman va savollarga javob berishga harakat qilaman:

PIC nima va u nima uchun?


APIC nima va u nima uchun? LAPIC va I/O APIC nima uchun?
APIC, xAPIC va x2APIC o'rtasidagi farq nima?
MSI nima? MSI va MSI-X o'rtasidagi farq nima?
$PIR, MPtable, ACPI jadvallari bunga qanday bog'liq?

Agar siz ushbu savollarning birortasiga javob olmoqchi bo'lsangiz yoki shunchaki x86 tizimidagi uzilish kontrollerlarining evolyutsiyasi bilan tanishmoqchi bo'lsangiz, mushuk ostida xush kelibsiz.


Kirish

Biz hammamiz uzilish nima ekanligini bilamiz. Bilmaydiganlar uchun Vikipediyadan iqtibos:

Interrupt (inglizcha interrupt) - protsessorga zudlik bilan e'tibor berishni talab qiladigan voqea sodir bo'lganligi haqida xabar beruvchi dasturiy ta'minot yoki apparatdan signal. Uzilish protsessorga protsessor tomonidan bajarilayotgan joriy kodni uzishni talab qiluvchi yuqori ustuvor hodisa yuz berganligi haqida xabar beradi. Protsessor o'zining joriy faoliyatini to'xtatib turish, holatini saqlash va hodisaga javob beradigan va unga xizmat ko'rsatadigan uzilish ishlovchisi (yoki uzilishni qayta ishlovchi) deb nomlangan funktsiyani bajarish orqali javob beradi, so'ngra boshqaruvni uzilgan kodga qaytaradi.


Uzilish signalining manbasiga qarab, ular quyidagilarga bo'linadi:


asinxron yoki tashqi (apparat) - tashqi apparat qurilmalaridan (masalan, periferik qurilmalar) kelib chiqadigan va har qanday ixtiyoriy vaqtda sodir bo'lishi mumkin bo'lgan hodisalar: taymerdan, tarmoq kartasidan yoki diskdan signal, klaviatura tugmachalarini bosish, sichqonchaning harakati. Tizimda bunday uzilishning sodir bo'lishi uzilish so'rovi (IRQ) sifatida qaraladi - qurilmalar OTdan e'tibor talab qilishlari haqida xabar beradi;


sinxron yoki ichki - mashina kodini bajarish jarayonida ba'zi shartlarning buzilishi natijasida protsessorning o'zida sodir bo'ladigan hodisalar: nolga bo'linish yoki stekning to'lib ketishi, noto'g'ri xotira manzillariga kirish yoki yaroqsiz operatsiya kodiga kirish;
Ushbu maqolada men tashqi IRQlarni muhokama qilmoqchiman.

Ular nima uchun kerak? Aytaylik, tarmoq kartasi kelganda kirish paketi ustida qandaydir amallarni bajarmoqchimiz. Tarmoq kartasidan doimiy ravishda "yangi paketingiz bormi?" Deb so'ramaslik uchun. va buning uchun protsessor resurslarini isrof qilmasdan, siz IRQ uzilishidan foydalanishingiz mumkin. Qurilmaning uzilish chizig'i protsessorning INTR liniyasiga ulanadi va paket qabul qilinganda tarmoq kartasi bu chiziqni "tortadi". Protsessor buning uchun ma'lumot borligini tushunadi va paketni o'qiydi.


Ammo ko'plab qurilmalar bo'lsa-chi? Siz protsessor oyoqlarining barcha tashqi qurilmalariga zaxiralay olmaysiz.


Linuxda yuqori trafik oqimlari va uzilishlar boshqaruvi nashri ortidan yozilgan

Shahar tarmog'imizda 30 mingdan ortiq abonent bor. Tashqi kanallarning umumiy hajmi 3 gigabitdan ortiq. Va eslatib o'tilgan maqolada berilgan maslahat, biz bir necha yil oldin o'tdik. Shunday qilib, men mavzuni kengaytirmoqchiman va ko'tarilgan masala doirasida o'zimning eng yaxshi tajribalarimni o'quvchilar bilan baham ko'rmoqchiman.


Eslatma Linux ostida router va NAT serverni sozlash/sozlashning nuanslarini, shuningdek uzilishlarni taqsimlash bo'yicha ba'zi tushuntirishlarni tavsiflaydi.


Xalaqit beradi


Tarmoq kartasi uzilishlarini turli yadrolar bo'ylab tarqatish - bu Linux routeriga yuk ortganda tizim ma'muri duch keladigan birinchi narsa. Yuqoridagi maqolada mavzu etarlicha batafsil yoritilgan - shuning uchun biz bu masalaga uzoq vaqt to'xtalmaymiz.

Men shunchaki ta'kidlamoqchiman:


agar siz uzilishlarni qo'lda tashlasangiz, irqbalance xizmatini to'xtatishingiz kerak. Ushbu xizmat faqat protsessor yadrolari orasidagi uzilishlarni avtomatik tartibga solish uchun mo'ljallangan. Agar siz ushbu ishni qo'lda qilsangiz, xizmatni to'xtatish yaxshiroqdir;


"avtomatik yuklash" (masalan, /etc/rc.local) ga tegishli o'zgartirishlarni kiritishni unutmang - chunki serverni qayta ishga tushirgandan so'ng, barcha uzilishlar yana bitta yadroda to'plamga taqsimlanadi;
serverni qayta ishga tushirgandan so'ng, tarmoq kartalari yangi uzilish raqamlarini olishlari mumkin (va, ehtimol, shunday bo'ladi). Shuning uchun /etc/rc.local-da ma'lum bir uzilish raqamlarini qo'lda kiritmaslik yaxshiroqdir - yordamchi skript yordamida qaysi tarmoq uzilishini aniqlashni avtomatlashtirish.
router
Asl maqolada "agar server faqat marshrutizator sifatida ishlayotgan bo'lsa, TCP stekini sozlash juda muhim emas" degan ibora mavjud. Bu bayonot tubdan noto'g'ri. Albatta, sozlash kichik oqimlarda katta rol o'ynamaydi. Biroq, agar sizda katta tarmoq va mos keladigan yuk bo'lsa, unda siz tarmoq stekini sozlash bilan shug'ullanishingiz kerak bo'ladi.

Avvalo, agar gigabitlar tarmog'ingizda "yurishayotgan" bo'lsa, u holda serverlaringiz va kalitlaringizdagi MTUga e'tibor berish mantiqan. Xulosa qilib aytganda, MTU - bu tarmoq bo'ylab parchalanishga murojaat qilmasdan uzatilishi mumkin bo'lgan paketlar miqdori. Bular. sizning bitta routeringiz boshqasiga bo'linmasdan qancha ma'lumot o'tkazishi mumkin. Tarmoq orqali uzatiladigan ma'lumotlar hajmining sezilarli o'sishi bilan kichik ma'lumotlar paketlarini tez-tez va tez-tez yuborishdan ko'ra, kattaroq paketlarni kamroq yuborish ancha samaraliroq bo'ladi.


Linuxda MTU ni oshirish


/sbin/ifconfig eth0 mtu 9000

Kalitlarda MTUni oshirish


Kommutatsiya uskunasida bu odatda jumbo-ramka deb ataladi. Xususan, Cisco Catalyst 3750 uchun

3750(config)# tizimi mtu jumbo 9000


3750(config)# chiqish
3750# qayta yuklash

E'tibor bering, keyin kalitni qayta ishga tushirish kerak. Aytgancha, mtu jumbo faqat gigabitli havolalar uchun amal qiladi - bunday buyruq 100-Mbps ga ta'sir qilmaydi.


Linuxda uzatish navbatini oshirish


/sbin/ifconfig eth0 txqueuelen 10000

Standart qiymat 1000. Gigabitli havolalar uchun 10000 ni belgilash tavsiya etiladi. Xulosa qilib aytganda, bu uzatish buferining o'lchamidir. Bufer ushbu chegaragacha to'ldirilsa, ma'lumotlar tarmoqqa uzatiladi.


Shuni yodda tutingki, agar siz ba'zi bir uskunaning interfeysida MTU o'lchamini o'zgartirsangiz, uning "qo'shnisi" interfeysida ham xuddi shunday qilishingiz kerak. Ya'ni, agar siz Linux routerining interfeysida MTU ni 9000 ga oshirgan bo'lsangiz, u holda ushbu router ulangan kalit portida jumbo-ramkani yoqishingiz kerak. Aks holda, tarmoq ishlaydi, lekin juda yomon: paketlar tarmoq orqali "bitta orqali" o'tadi.


Natijalar


Ushbu o'zgarishlarning barchasi natijasida tarmoqdagi "pinglar" ortadi - lekin umumiy o'tkazuvchanlik sezilarli darajada oshadi va faol uskunalarga yuk kamayadi.

NAT serveri


NAT (Network Address Translation) operatsiyasi eng qimmat (ma'noda resurs talab qiladigan) operatsiyalardan biridir. Shuning uchun, agar sizda katta tarmoq mavjud bo'lsa, NAT serverini sozlamasdan qilolmaysiz.

Kuzatiladigan ulanishlar sonini oshiring


O'z vazifasini bajarish uchun NAT serveri u orqali o'tadigan barcha ulanishlarni "eslab qolishi" kerak. Bu "ping" yoki kimningdir "ICQ" bo'ladimi - bu barcha seanslarni NAT serveri "eslab qoladi" va maxsus jadvalda o'z xotirasida kuzatib boradi. Seans yopilganda, u haqidagi ma'lumotlar jadvaldan o'chiriladi. Ushbu jadvalning o'lchami belgilangan. Shuning uchun agar server orqali trafik juda ko'p bo'lsa va jadval hajmi etarli bo'lmasa, NAT serveri paketlarni "tashlab qo'yishni", seanslarni buzishni boshlaydi, Internet dahshatli uzilishlar bilan ishlay boshlaydi va ba'zan hatto shunday bo'ladi. SSH orqali NAT serveriga kirish imkonsiz.

Bunday dahshatlarning oldini olish uchun stol o'lchamini NAT orqali o'tadigan trafikga mos ravishda etarli darajada oshirish kerak:


/sbin/sysctl -w net.netfilter.nf_conntrack_max=524288


Agar sizda NAT serverida 1 gigabaytdan kam operativ xotira bo'lsa, bunday katta qiymatni o'rnatish tavsiya etilmaydi.


Joriy qiymatni quyidagicha ko'rishingiz mumkin:


/sbin/sysctl net.netfilter.nf_conntrack_max


Qarang, qanchalik to'laulanishni kuzatish stolida emas, buni shunday qilishingiz mumkin:


/sbin/sysctl net.netfilter.nf_conntrack_count


Xesh jadvalining hajmini oshirish


Conntrack yozuvlari ro'yxatini saqlaydigan xesh jadvali ham mutanosib ravishda oshirilishi kerak.

echo 65536 > /sys/module/nf_conntrack/parameters/hashsize


Qoida oddiy: hashsize = nf_conntrack_max / 8


Vaqt o'tishi qiymatlarini kamaytirish


Esingizda bo'lsa, NAT server faqat u orqali o'tadigan "jonli" seanslarni kuzatib boradi. Seans yopilganda, jadval to'lib ketmasligi uchun u haqidagi ma'lumotlar o'chiriladi. Seanslar haqidagi ma'lumotlar ham vaqt tugashi bilan o'chiriladi. Ya'ni, agar uzoq vaqt davomida almashinuv aloqasi ichida trafik bo'lmasa, u yopiladi va u haqidagi ma'lumotlar ham NAT xotirasidan o'chiriladi.

Biroq, standart vaqt tugashi qiymatlari juda katta. Shuning uchun, katta trafik oqimlari bilan, hatto nf_conntrack_max chegarasiga qadar cho'zilgan bo'lsangiz ham, siz baribir jadvalning to'lib ketishi va ulanishning uzilishi xavfini tug'dirasiz.


Buning oldini olish uchun NAT serverida ulanishni kuzatish vaqtini to'g'ri o'rnatishingiz kerak.


Joriy qiymatlarni ko'rish mumkin, masalan:



sysctl -a | grep conntrack | grep timeout

В результате вы увидите что-то подобное:

net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30

Download 54 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish