IRC ve mIRC Kullanıcılarının Buluşma Noktası
  Mobil Sohbet, Sohbet ve Sohbet Odaları




2Beğeni(ler)
  • 2 Post By Chelt

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 14 Aralık 2011, 17:50   #1
Çevrimdışı
FreeBSD Isletim Sistemi'ni Yuksek Hizlar Icin Optimize Etmek


-- Sponsor Baglantı --


Gunumuzde aglarin hizi ve tasidigi bant genisligi gun be gun daha fazlaca
artmaktadir. Daha uc bes yil oncesine kadar ulkemizde 2 Mbit/sn baglantiya
Internet Servis Saglayici'lar ancak sahip olabiliyorken, simdi ADSL hizmeti
sayesinde ayni baglanti hizini evimizde de kullanabiliyoruz. Kullanicilarin
bant genisliginin bu denli katlanarak arttigini goz onunde alirsak,
aglar arasi trafigi yoneten ve yonlendiren cihazlarin 1 saniye mertebesinde
Gigabit'ler seviyesinde trafik tasimakla yukumlu oldugunu herkes tahmin
edebilir. Artan bant genisligi ve hizin yaninda ve buna paralel olarak,
her paketi islemek icin gereken islemci zamani da artmaktadir. Dolayisila
isletim sistemlerinde paket protokollerini yonetmekle yukumlu "stack" kod-
larinin daha efektif ve optimize calismasi, ag isleme yukunun mumkun
olabildigince aza indirilmesi ve asil isi yapan userspace sureclere daha
fazla CPU zamani ayrilmasi gerekmektedir.

Bu makalede, FreeBSD isletim sisteminin yuksek hiz ve bant genisliklerindeki
aglarin yukunu tasiyabilmesi icin, cekirdek tarafinda 5-CURRENT serisi'nden
beri yapilan onemli iyilestirmeler ve bu iyilestirmelerin sistem yoneticileri
tarafindan nasil kullanilabilecegi ile ilgili bilgi ve ipuclari listelenecektir.
FreeBSD isletim sistemi, "Power to Serve" slogani ile ozellikle kararli ve
performansli bir "ag servisleri" platformu olma konusunda iddialidir. Dolayisi
ile projede ag performansi oncelikli bir basari kriteri olarak daima kontrol
altinda tutulmaktadir.


Yapilan arastirmalar, yuksek hizlardaki aglarda "TCP veri iletim" performans'
inin aradaki ag donanimlarindan ziyade, paketi yollayan ve alan uc birimler
tarafindan sinirlandirildigini gosteriyor. Uc birimler, TCP katmaninin altinda
ve ustunde yapacaklari iyilestirmelerle, veri iletim hizlarini ciddi oranlarda
artirabilirler.

Bu makalede, ust paragrafta isaret edilen TCP alti ve ustu iyilestirmelerden
hangilerinin ozellikle onemli oldugunu anlatilmaya calisilacaktir.


1. Hangi kablo?

OSI katmanlarina gore 1. katmandan baslayalim. Eger 100 Mbit/s bir agda
calisiyorsaniz en azindan CAT-5 bir kablo, 1 Gbit/s hizlarinda bir aga
bagli iseniz CAT-6 kablo bulup makinaniza takmakla ise baslayiniz.

2. Hangi ethernet karti?

Ethernet karti secimi cok onemlidir. Eger cok yuksek hizlarda veri transferi
yapmiyorsaniz (yuksek hizlardan kastim, ag karti maksimum hizinin yuzde 40-50'
sinden fazlasini kullanmiyorsaniz: 100 Mbit/s kartiniz var ve 50 Mbit/s bant
genisliginden fazlasini kullaniyorsaniz demektir) FreeBSD tarafindan taninan
herhangi bir ag kartini kullanabilirsiniz.

NOT 1: Burada marka ismi vermek yerine, o marka ethernet kartinin FreeBSD
aygit ismine referans verilecektir. Eger o aygit ismi ile taninan kartlarin
marka ve modelini ogrenmek istereniz, man 4 aygit_ismi komunutu vererek
ilgili manual sayfasindan bu bilgiyi edinebilirsiniz. Mesela rl aygit ismi
ile taninan kartlari ogrenmek icin:

man 4 rl

yazmaniz yeterlidir. Size asagidakina benzer bir sayfa acilacak, orada
hangi marka/model'in bu surucu tarafindan tanindigi bilgisi sunulacaktir:

RL(4) FreeBSD Kernel Interfaces Manual RL(4)

NAME
rl -- RealTek 8129/8139 Fast Ethernet device driver


rl, re, vr, fxp, bge aygit suruculeri tarafindan taninan kartlar isinizi
cok buyuk olasilikla gorecektir.

Eger yuksek hizlarda veri transferi yapacaksaniz (1 Gbps hattiniz sature
oluyorsa mesela) ag kartinizin biraz kaliteli, ve ilgili aygit surucusunun
FreeBSD tarafindan cok iyi destekleniyor olmasi gerekmektedir.
Bu noktada size tavsiye edebilecegim, em aygit surucusu tarafindan yonetilen
ethernet kartlaridir. Bu kartlar yazar tarafindan uzun zamandir kullanilmakta
ve stabilite ve performans acisindan diger kartlara gore cok daha kararli
durumda gorunmektedirler. Kartin fabrika ureticisi firma da, FreeBSD surucusu
konusunda ilk elden destek vermekte ve FreeBSD gelistiricileri ile cok siki
bir iliski icerisindedir. Bu siki bilgi alisverisi ve her daim destek, ethernet
kartinin butun ozelliklerinin FreeBSD tarafindan tamamiyle kullanilabilmesini
netice vermektedir. Ornek vermek gerekirse, Interrupt coalescing, polling gibi
FreeBSD iyilestirmeleri direkt olarak em kartlarinin suruculerinde gelistirilmis
ve sonradan diger aygitlara aktarilmisti.

Ag karti secerken dikkat edilecek diger bir husus ta, kartin uzerinde calisacagi
BUS'in hizi ve bant genisligidir. Eger 66-Mhz hizinda, 32-bit bir PCI BUS'iniz
var sa, sizin bu BUS'tan elde edebileceginiz maksimum hiz:

66 Mhz x 32 = 2.112 Mbit/s (yaklasik 2 Gbit/s) veri transfer genisligidir. Siz
bu PCI bus'a 10 Gbit/s hizinda bir kart taksaniz dahi, BUS hizi 2 Gbit/s'den
fazlasini kaldirmadigi icin beklediginiz performansi elde edemeyeceksiniz.

Dolayisiyla, en az 133 Mhz hizinda; ve yeni veriyollarini (PCI-X, PCI-E) destek-
leyen bir kart edinmeniz mutlaka gereklidir.


3. MTU (Maximum Transmission Unit)

Iyi bir kablo edindik, iyi bir ethernet kartimiz ve ethernet kartimizi yoneten
iyi yazilmis bir aygit surucumuz var. Simdi devam edebiliriz. Paketlerin
bir noktadan bir noktaya transferinde, islemcinin iki turlu yuku olabilir:

a) Paket basina yuk (per-packet overhead)
b) Byte basina yuk (per-byte overhead)

Gonderilecek veri ne kadar ufak parcalara (frame) ayrilirsa, agda tasinmasi
gereken parca sayisi artar. Bu da, ag karti tarafinda daha fazla interrupt
ve daha dogal olarak, isletim sistemi tarafinda daha fazla context switch
manasina gelmektedir. Gonderilecek verinin ne kadarlik parcalara ayrilacagi
ag kartinin MTU degiskeni ile belirlenir. Ethernet aglarinda bu deger 1500
byte'dir (1514 - 14 byte ethernet basligi) Veri transferi yapan iki bilgisayar
senkron olarak daha buyuk MTU degerlerinde ayarlanirsa, bu paket basina
dusen yuku azaltacaktir. Alteon firmasi, "Jumbo frames" denilen teknigi bu
nedenle gelistirmistir. Ag kartlari, opsiyonel olarak daha yuksek MTU degerleri
icin ayarlanabilmektedir.

Fakat bu ozellik ag karti ve surucusu tarafindan destekleniyor olmalidir.
FreeBSD'de em surucusunun bu destegi vardir. Aktive etmek icin:

# ifconfig em0 mtu 9000

komutunu vermek yeterlidir. Fakat burada dikkat edilmesi gereken nokta, bu
MTU degerinin agdaki diger cihazlarla paylasiliyor ve ayni olmasi gerektigidir.
10/100 Mbit/s ag kartlarinda bu ozellik bulunmamakta, genellikle gigabit
kartlarda gelmektedir.

4. Checksum off-loading

Byte basina dusen yuku en aza indirmek icin gelistirilmis bir yontemdir.
Her IP paketinde isletim sistemi, dolayisiyla CPU tarafindan yapilan
IP/UDP/TCP checksum kontrol islemini, CPU'nun degil, bizzat ag karti
tarafindan yapilmasini onerir. Paketler ag kartina checksum'u hesaplanmadan
gonderilir, ag kartinin chip'i tarafindan checksum'lari hesaplanip ilgili
kisimlara yazildiktan sonra aga basilir. Yine ayni sekilde, gelen paketlerin
checksum kontrolu ag kartinin uzerindeki chip tarafindan yapilir, checksum'i
bozuk paketler direk ag karti tarafindan isletim sistemini mesgul etmeyerek
drop edilir.

Eger kartiniz checksum offloading ozelligini destekliyorsa,

# ifconfig em0 txsum

komutu ile paket gonderimi;

# ifconfig em0 rxsum

komutu ile de paket alimi sirasinda checksum offloading'i etkinlestirebilir-
siniz.

Ayni sekilde, ag kartinizda bu ozellikleri pasiflestirmek icin;

# ifconfig em0 -txsum
# ifconfig em0 -rxsum

komutlarini kullanabilirsiniz.

5. POLLING

Cok fazla paket alisverisi olan sistemlerinizde, CPU'nuz ag kartlarindan gelen
interrupt isteklerini karsilamaya calisirken, diger islemlere vakti kalmaya-
bilir. POLLING ozelligi bu gibi durumlarda makinanin tamamen kullanilmaz
hale gelmesini onlemek icin gelistirilmistir. Eger bir ag arayuzunde POLLING
etkinlestirilirse, o kart icin rx interrupt'lari disable edilir. Fakar her
CPU swclock tick'inde, polling aktive edilmis kartlar "poll" edilir, yani
bu kartlarda gelen herhangi bir veri var mi yok mu kontrol edilir. Eger
veri varsa, normal yoldan veri ust katmanlara ayni sekilde aktarilir. Bu
ozelligi sisteminizde aktif hale getirmek icin cekirden ayar dosyaniza

device POLLING
options HZ=1000

degerlerini girip, cekirdeginizi yeniden derleyip, sistemi yeni cekirdek
ile acmaniz gerekmektedir.

Sistem POLLING destekli olarak acildiktan sonra:

# ifconfig em0 polling

komutunu vermeniz, bu arayuzde kesme isteklerinin kapatilmasini ve arayuzun
polling moduna alinmasini netice verecektir.

# ifconfig em0 -polling

komutu bu islemi tersine cevirecektir.


6. Interrupt Coalescing

POLLING mekanizmasinin dezavantaji, paketlerin alinmasinin bir muddet gecikmesi
seklinde olusmaktadir. BSD gelistiricileri, pure-interrupt-driven bir mode veya
POLLING gibi paket alim latency sikintisi olan mekanizma yerine, bu ikisinin
avantajlarini bulusturan, dezavantajlarini da barindirmayan bir yapi olarak
"Interrupt Coalescing"'i sisteme entegre ettiler.

Bu model'de, asenkron kesme isteklerinin tamamen durdurulmasi yerine, kesme
isteklerinin belirli bir algoritma tabaninda bir muddet geciktirilmesi dusuncesi
yer etmektedir. Bu sekilde, birden fazla paket, ayni ISR (interrupt service
routine) tarafindan karsilanacak, boylece, kesme isteginin sisteme verecegi
yuk de dogrusal orantili olarak azalacaktir. Burada da paketlerin alimi
sirasinda bir sure gecikmeden soz edilebilir, fakat bu gecikme POLLING'e gore
cok daha az ve farkedilmesi zordur.

Bu ozellik, ag karti tarafindan compile time'da aktive edildigi icin, kullanici
tarafindan sistem calisirken degistirilememektedir. Cogu modern ag karti ve
surucusu bu model'den fazlasiyla destek almaktadir.



7. ZERO-COPY sockets

Byte basina dusen yuku (per-byte overhead) azaltmak icin onerilmis bir yontem
olan ZERO-COPY sockets, paketlerin ag kartindan, cekirdek buffer'ina, oradan
da userspace buffer'a kopyalanmasi yerine, ag kartindan direk userspace prog-
ramin bellegine yazilmasi fikrine dayanir. Tek paketin iki defa kopyalanmasi
onlenmis olacagi icin, paketlerin userspace'e aktarildigi durumlarda (zero-copy
soketler, eger makinaniz sadece routing yapiyorsa bir isinize yaramayacaktir)
ciddi performans artirimlari saglayabilecektir. ZC soketler, paket alimi ile
iliskilendirildiginde on istek olarak, soket'e verilen paketin page-aligned
olmasini istemektedirler. Dolayisiyla paket aliminda ZC socket kullanmak
icin en azindan 4K'lik bir MTU buyuklugu gerekmektedir. Bu da, FreeBSD
makinanizda Jumbo Frames ozelligini kullanmanizi zorunlu kilar. Paket gonderimi
noktasinda bir kisitlama yoktur. Butun modern ag kartlari ile kullanilabilir.

Bu ozelligi kullanabilmek icin, cekirdek ayar dosyanizda:

options ZERO_COPY_SOCKETS
options MCLSHIFT=12
options TI_JUMBO_HDRSPLIT

seceneklerini yazip, cekirdeginizi yeniden derlemeniz gerekmektedir.

Makinaniz yeni cekirdekle acildiktan sonra;

1. ag kartinizin MTU degerini 9000 yapin:

# ifconfig em0 mtu 9000

2. Bu ozellikten cok daha fazla verim alabilmek icin, yazari asagidaki
sysctl degisikliklerinin de aktive edilmesinin faydali olacagini
soylemektedir:

TCP maksimum segment buyuklugunun 64K'dan fazla olabilmesi:

# sysctl -w net.inet.tcp.rfc1323=1


socket buffer'larinin artirilmasi:

# sysctl -w kern.ipc.maxsockbuf=2097152
# sysctl -w net.inet.tcp.sendspace=524288
# sysctl -w net.inet.tcp.recvspace=524288
# sysctl -w net.inet.udp.recvspace=65535
# sysctl -w net.inet.udp.maxdgram=57344



8. SMPng (Symmetric Multiprocessing Next Generation)

FreeBSD 4.x serisinin sonuna kadar, FreeBSD isletim sistemi userspace'de multi-
programming'e olanak saglamakla beraber cekirdek seviyesinde birden fazla
islemcinin sagladigi olanaklardan faydalanamamaktaydi. Bunun dogal sonucu olarak
birden fazla islemcisi olan sunucularla, tek islemcisi olan FreeBSD sunucular
ag performansi noktasinda hicbir farki haiz degildi. FreeBSD gelistiricileri
5.x serisi icin SMPng projesini adeta bir kilometre tasi ilan ettiler.
Cekirdek kodunun, ozellikle de ag katmanlarinin GIANT lock tabir edilen tek
bir semafor'dan kurtarilip, "fine-grained locking" altyapisina kavusturulmasi
konusunda cok fazla efor sarfedildi. 5.x serisinin ilk surumleri'leri bu kodun
ilk test sahasi olmasi acisindan sancili gecse de, 6.2-RELEASE surumu itibariyle
bu kodun oldukca stabil oldugunu soylemek mumkundur. Bugun itibariyle hemen
hemen butun ag suruculeri, ve onemli ag protokolleri (IPv4, IPv6, UDP, TCP,
IPSec) SMPng'nin nimetlerinden sonuna kadar faydalanmaktadir.

Makinaniza ps aux komutu ciktisina bakarsaniz asagidaki gibi process'ler
goreceksiniz:

18 ?? WL 0:00.00 [swi6: task queue]
19 ?? WL 0:00.00 [irq9: acpi0]
20 ?? WL 0:00.00 [irq14: ata0]
21 ?? WL 0:00.00 [irq15: ata1]
22 ?? WL 0:05.45 [irq17: bt0]
23 ?? WL 0:09.44 [irq18: lnc0]
24 ?? WL 0:00.01 [irq1: atkbd0]
25 ?? WL 0:00.00 [irq12: psm0]
26 ?? WL 0:00.00 [irq7: ppc0]
27 ?? WL 0:00.00 [swi0: sio]

Bu surecler, userspace surecler degillerdir. Tamamen cekirdek icinde calisan
"kernel thread"lerdir. Tahmin edeceginiz gibi, her bir aygit surucusunun
interrupt'lari farkli bit kernel thread tarafindan okunmakta.

SMP-aware ag alt sistemi, FreeBSD'nin guncel surumlerinde (6.x serisi) ontanimli
olarak gelmektedir. Sizin bu konuda ayrica bir ayar yapmaniza gerek yoktur.



9. TCP automatic sizing of send windows

Paket basina dusen yuku azaltmak icin Andre Oppermann tarafindan onerilen
ve gerceklenen bu yontem, bir tcp baglantisinda tradisyonel olarak statik
olan send buffer'inin, baglantinin kaliteli olmasi durumunda kontrollu
olarak artirilmasi ve baglantinin bandwidth'inin daha etkili kullanilmasi
dusuncesine dayanir. Cekirdekteki ilgili kod, link'in maksimum kullanimi
icin buffer'in en optimum buyuklukte tutulmasini saglar.

Bu ozellik su anda 6.x serisinde ontanimli olarak gelmemekle beraber 7.x
serisinde bulunmaktadir. Ozelligi etkinlestirmek icin asagidaki sysctl
degisteknleri set edilebilir:

tx tarafinda:

# sysctl -w net.inet.tcp.sendbuf_auto=1
# sysctl -w net.inet.tcp.sendbuf_inc=8192
# sysctl -w net.inet.tcp.sendbuf_max=262144

rx tarafinda:

# sysctl -w net.inet.tcp.recvbuf_auto=1
# sysctl -w net.inet.tcp.recvbuf_inc=16384
# sysctl -w net.inet.tcp.recvbuf_max=262144

10. DIGER IYILESTIRMELER

Asagkidaki sysctl degerleri, sisteminizin cekirdek tarafindan belirlenmis
limitlerini yukari cekmenizi saglar. Bu limitleri, CPU saat hiziniz ve
sisteminizdeki RAM'inizi dikkate alarak artirmaniz tavsiye edilir:


blocking write sistem cagrilarinin buffer yetersizligi nedeniyle
block etmemsi icin:

# sysctl -w sysctl net.inet.tcp.sendspace=65536

Daha yuksek TCP maksimum segment size degerlerinin kullanilabilmesi
icin:
# sysctl -w net.inet.tcp.rfc1323=1

Maksimum socket tampon bellek miktari:
# sysctl -w kern.ipc.maxsockbuf=2097152

TCP/UDP send/receive buffer'lari:
# sysctl -w net.inet.tcp.sendspace=524288
# sysctl -w net.inet.tcp.recvspace=524288
# sysctl -w net.inet.udp.recvspace=65535
# sysctl -w net.inet.udp.maxdgram=57344



11. USERSPACE tarafinda yapilacaklar

Buraya kadar yazdiklarimiz Layer IV dahil olmak uzere bu katmana kadar olan
kisimlarda yapilabilecek iyilesitirmelerdi. Bundan sonra butun is, iyi dizayn
edilmis ve guzelce kodlanmis uygulamalar gelistirmeye ve boyle uygulamalari
bulup kullanmaya kaliyor.


12. Sistemin Durumunu Izleme

Sisteminizin durumunu, netstat, vmstat, systat gibi araclarla izleyebiliriniz.

Ag karti baglaminda sistemi izlemek icin:

# systat -ifstat 1


/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average

Interface Traffic Peak Total


lo0 in 0.000 KB/s 0.000 KB/s 3.474 MB
out 0.000 KB/s 0.000 KB/s 3.474 MB

lnc0 in 0.000 KB/s 0.000 KB/s 14.957 MB
out 0.000 KB/s 0.000 KB/s 12.697 MB




IP katmanini izlemek icin:


# systat -ip 1
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average

IP Input IP Output
58494 total packets received 53530 total packets sent
0 - with bad checksums 53530 - generated locally
0 - too short for header 0 - output drops
0 - too short for data 0 output fragments generated
0 - with invalid hlen 0 - fragmentation failed
0 - with invalid length 0 destinations unreachable
0 - with invalid version 67 packets output via raw IP
0 - jumbograms
0 total fragments received UDP Statistics
0 - fragments dropped 1682 total input packets
0 - fragments timed out 0 - too short for header
0 - packets reassembled ok 0 - invalid checksum
0 packets forwarded 0 - no checksum
0 - unreachable dests 0 - invalid length
0 - redirects generated 2 - no socket for dest port
0 option errors 1170 - no socket for broadcast
0 unwanted multicasts 0 - socket buffer full


# systat -tcp 1

TCP katmanini izlemek icin:

TCP Connections TCP Packets
0 connections initiated 1 total packets sent
0 connections accepted 1 - data
0 connections established 0 - data (retransmit)
0 connections dropped 0 - ack-only
0 - in embryonic state 0 - window probes
0 - on retransmit timeout 0 - window updates
0 - by keepalive 0 - urgent data only
0 - from listen queue 0 - control
0 - resends by PMTU discovery
TCP Timers 1 total packets received
0 potential rtt updates 0 - in sequence
1 - successful 0 - completely duplicate
0 delayed acks sent 0 - with some duplicate data
0 retransmit timeouts 0 - out-of-order
0 persist timeouts 0 - duplicate acks
0 keepalive probes 1 - acks
0 - timeouts 0 - window probes
0 - window updates
0 - bad checksum

Sistemin load durumunu, CPU durumunu gormek icin:

# vmstat 1
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr da0 pa0 in sy cs us sy id
1 8 0 615388 45760 11 0 0 0 10 1 0 0 185 107 442 0 1 99
0 8 0 615388 45760 2 0 0 0 0 0 0 0 183 162 438 0 1 99
^C

Sistemin interrupt durumunu gormek icin:

# netsat -i
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lnc0 1500 00:0c:29:18
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
50 172723 2 50232 0 0
lnc0 1500 10/24 freefall6.endersy 55428 - 50522 - -
plip0 1500 0 0 0 0 0
lo0 16384 3163 0 3163 0 0
lo0 16384 fe80:3::1 fe80:3::1 0 - 0 - -
lo0 16384 localhost ::1 35 - 35 - -
lo0 16384 your-net localhost 3128 - 3128 - -
pflog 33208 0 0 0 0 0





13. SON SOZLER

FreeBSD isletim sistemi, IPv4, TCP, IPv6, IPSec gibi, su anda iletisim dunyamizi
derinden etkileyen protokollerin gelistirildigi cok eski ve saglam bir kod
mirasina sahip bir isletim sistemi projesidir. Bu baglamda, ozellikle ag tek-
nolojileri ile bir cok ar-ge calismasi bu projenin bunyesinde veya, bu proje
baz alinmak suretiyle devam ettirilmektedir. Yukarida siralamaya calistigimiz
performans iyilestirmeleri bu minvalde ortaya cikmis, ve halen de cikmaya
devam etmektedir.

Yurt disinda, ozellikle universitelerin Bilgisayar ve Elektronik Muhendisligi
lisans, yuksek-lisans ve doktora ogrencileri tez calismasi olarak bu tip
projeleri almakta, hem dunya IT sektorune cok onemli katkilar saglamakta
hem de kendi bilgi ve gorgulerini inanilmaz artirmaktadirlar.

Ulkemiz kurumlarinin ve insaninin da bu yolu takip etmesi umidiyle...


14. REFERANSLAR

1. Jeffrey S. Chase et al., End-System Optimizations for High-Speed TCP, Duke University
2. Tuning kernel limits:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
3. Zero-copy sockets:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
4. FreeBSD Netperf:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
5. Auto-size of tcp send buffers:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
6. Marko Zec, Miljenko Mikuc, Mario Zagar, Estimating the Impact of Interrupt Coalescing Delays
on Steady State TCP Throughput. University of Zagreb.

Kaynak:

Murat Balaban
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Gunumuzde aglarin hizi ve tasidigi bant genisligi gun be gun daha fazlaca
artmaktadir. Daha uc bes yil oncesine kadar ulkemizde 2 Mbit/sn baglantiya
Internet Servis Saglayici'lar ancak sahip olabiliyorken, simdi ADSL hizmeti
sayesinde ayni baglanti hizini evimizde de kullanabiliyoruz. Kullanicilarin
bant genisliginin bu denli katlanarak arttigini goz onunde alirsak,
aglar arasi trafigi yoneten ve yonlendiren cihazlarin 1 saniye mertebesinde
Gigabit'ler seviyesinde trafik tasimakla yukumlu oldugunu herkes tahmin
edebilir. Artan bant genisligi ve hizin yaninda ve buna paralel olarak,
her paketi islemek icin gereken islemci zamani da artmaktadir. Dolayisila
isletim sistemlerinde paket protokollerini yonetmekle yukumlu "stack" kod-
larinin daha efektif ve optimize calismasi, ag isleme yukunun mumkun
olabildigince aza indirilmesi ve asil isi yapan userspace sureclere daha
fazla CPU zamani ayrilmasi gerekmektedir.

Bu makalede, FreeBSD isletim sisteminin yuksek hiz ve bant genisliklerindeki
aglarin yukunu tasiyabilmesi icin, cekirdek tarafinda 5-CURRENT serisi'nden
beri yapilan onemli iyilestirmeler ve bu iyilestirmelerin sistem yoneticileri
tarafindan nasil kullanilabilecegi ile ilgili bilgi ve ipuclari listelenecektir.
FreeBSD isletim sistemi, "Power to Serve" slogani ile ozellikle kararli ve
performansli bir "ag servisleri" platformu olma konusunda iddialidir. Dolayisi
ile projede ag performansi oncelikli bir basari kriteri olarak daima kontrol
altinda tutulmaktadir.


Yapilan arastirmalar, yuksek hizlardaki aglarda "TCP veri iletim" performans'
inin aradaki ag donanimlarindan ziyade, paketi yollayan ve alan uc birimler
tarafindan sinirlandirildigini gosteriyor. Uc birimler, TCP katmaninin altinda
ve ustunde yapacaklari iyilestirmelerle, veri iletim hizlarini ciddi oranlarda
artirabilirler.

Bu makalede, ust paragrafta isaret edilen TCP alti ve ustu iyilestirmelerden
hangilerinin ozellikle onemli oldugunu anlatilmaya calisilacaktir.


1. Hangi kablo?

OSI katmanlarina gore 1. katmandan baslayalim. Eger 100 Mbit/s bir agda
calisiyorsaniz en azindan CAT-5 bir kablo, 1 Gbit/s hizlarinda bir aga
bagli iseniz CAT-6 kablo bulup makinaniza takmakla ise baslayiniz.

2. Hangi ethernet karti?

Ethernet karti secimi cok onemlidir. Eger cok yuksek hizlarda veri transferi
yapmiyorsaniz (yuksek hizlardan kastim, ag karti maksimum hizinin yuzde 40-50'
sinden fazlasini kullanmiyorsaniz: 100 Mbit/s kartiniz var ve 50 Mbit/s bant
genisliginden fazlasini kullaniyorsaniz demektir) FreeBSD tarafindan taninan
herhangi bir ag kartini kullanabilirsiniz.

NOT 1: Burada marka ismi vermek yerine, o marka ethernet kartinin FreeBSD
aygit ismine referans verilecektir. Eger o aygit ismi ile taninan kartlarin
marka ve modelini ogrenmek istereniz, man 4 aygit_ismi komunutu vererek
ilgili manual sayfasindan bu bilgiyi edinebilirsiniz. Mesela rl aygit ismi
ile taninan kartlari ogrenmek icin:

man 4 rl

yazmaniz yeterlidir. Size asagidakina benzer bir sayfa acilacak, orada
hangi marka/model'in bu surucu tarafindan tanindigi bilgisi sunulacaktir:

RL(4) FreeBSD Kernel Interfaces Manual RL(4)

NAME
rl -- RealTek 8129/8139 Fast Ethernet device driver


rl, re, vr, fxp, bge aygit suruculeri tarafindan taninan kartlar isinizi
cok buyuk olasilikla gorecektir.

Eger yuksek hizlarda veri transferi yapacaksaniz (1 Gbps hattiniz sature
oluyorsa mesela) ag kartinizin biraz kaliteli, ve ilgili aygit surucusunun
FreeBSD tarafindan cok iyi destekleniyor olmasi gerekmektedir.
Bu noktada size tavsiye edebilecegim, em aygit surucusu tarafindan yonetilen
ethernet kartlaridir. Bu kartlar yazar tarafindan uzun zamandir kullanilmakta
ve stabilite ve performans acisindan diger kartlara gore cok daha kararli
durumda gorunmektedirler. Kartin fabrika ureticisi firma da, FreeBSD surucusu
konusunda ilk elden destek vermekte ve FreeBSD gelistiricileri ile cok siki
bir iliski icerisindedir. Bu siki bilgi alisverisi ve her daim destek, ethernet
kartinin butun ozelliklerinin FreeBSD tarafindan tamamiyle kullanilabilmesini
netice vermektedir. Ornek vermek gerekirse, Interrupt coalescing, polling gibi
FreeBSD iyilestirmeleri direkt olarak em kartlarinin suruculerinde gelistirilmis
ve sonradan diger aygitlara aktarilmisti.

Ag karti secerken dikkat edilecek diger bir husus ta, kartin uzerinde calisacagi
BUS'in hizi ve bant genisligidir. Eger 66-Mhz hizinda, 32-bit bir PCI BUS'iniz
var sa, sizin bu BUS'tan elde edebileceginiz maksimum hiz:

66 Mhz x 32 = 2.112 Mbit/s (yaklasik 2 Gbit/s) veri transfer genisligidir. Siz
bu PCI bus'a 10 Gbit/s hizinda bir kart taksaniz dahi, BUS hizi 2 Gbit/s'den
fazlasini kaldirmadigi icin beklediginiz performansi elde edemeyeceksiniz.

Dolayisiyla, en az 133 Mhz hizinda; ve yeni veriyollarini (PCI-X, PCI-E) destek-
leyen bir kart edinmeniz mutlaka gereklidir.


3. MTU (Maximum Transmission Unit)

Iyi bir kablo edindik, iyi bir ethernet kartimiz ve ethernet kartimizi yoneten
iyi yazilmis bir aygit surucumuz var. Simdi devam edebiliriz. Paketlerin
bir noktadan bir noktaya transferinde, islemcinin iki turlu yuku olabilir:

a) Paket basina yuk (per-packet overhead)
b) Byte basina yuk (per-byte overhead)

Gonderilecek veri ne kadar ufak parcalara (frame) ayrilirsa, agda tasinmasi
gereken parca sayisi artar. Bu da, ag karti tarafinda daha fazla interrupt
ve daha dogal olarak, isletim sistemi tarafinda daha fazla context switch
manasina gelmektedir. Gonderilecek verinin ne kadarlik parcalara ayrilacagi
ag kartinin MTU degiskeni ile belirlenir. Ethernet aglarinda bu deger 1500
byte'dir (1514 - 14 byte ethernet basligi) Veri transferi yapan iki bilgisayar
senkron olarak daha buyuk MTU degerlerinde ayarlanirsa, bu paket basina
dusen yuku azaltacaktir. Alteon firmasi, "Jumbo frames" denilen teknigi bu
nedenle gelistirmistir. Ag kartlari, opsiyonel olarak daha yuksek MTU degerleri
icin ayarlanabilmektedir.

Fakat bu ozellik ag karti ve surucusu tarafindan destekleniyor olmalidir.
FreeBSD'de em surucusunun bu destegi vardir. Aktive etmek icin:

# ifconfig em0 mtu 9000

komutunu vermek yeterlidir. Fakat burada dikkat edilmesi gereken nokta, bu
MTU degerinin agdaki diger cihazlarla paylasiliyor ve ayni olmasi gerektigidir.
10/100 Mbit/s ag kartlarinda bu ozellik bulunmamakta, genellikle gigabit
kartlarda gelmektedir.

4. Checksum off-loading

Byte basina dusen yuku en aza indirmek icin gelistirilmis bir yontemdir.
Her IP paketinde isletim sistemi, dolayisiyla CPU tarafindan yapilan
IP/UDP/TCP checksum kontrol islemini, CPU'nun degil, bizzat ag karti
tarafindan yapilmasini onerir. Paketler ag kartina checksum'u hesaplanmadan
gonderilir, ag kartinin chip'i tarafindan checksum'lari hesaplanip ilgili
kisimlara yazildiktan sonra aga basilir. Yine ayni sekilde, gelen paketlerin
checksum kontrolu ag kartinin uzerindeki chip tarafindan yapilir, checksum'i
bozuk paketler direk ag karti tarafindan isletim sistemini mesgul etmeyerek
drop edilir.

Eger kartiniz checksum offloading ozelligini destekliyorsa,

# ifconfig em0 txsum

komutu ile paket gonderimi;

# ifconfig em0 rxsum

komutu ile de paket alimi sirasinda checksum offloading'i etkinlestirebilir-
siniz.

Ayni sekilde, ag kartinizda bu ozellikleri pasiflestirmek icin;

# ifconfig em0 -txsum
# ifconfig em0 -rxsum

komutlarini kullanabilirsiniz.

5. POLLING

Cok fazla paket alisverisi olan sistemlerinizde, CPU'nuz ag kartlarindan gelen
interrupt isteklerini karsilamaya calisirken, diger islemlere vakti kalmaya-
bilir. POLLING ozelligi bu gibi durumlarda makinanin tamamen kullanilmaz
hale gelmesini onlemek icin gelistirilmistir. Eger bir ag arayuzunde POLLING
etkinlestirilirse, o kart icin rx interrupt'lari disable edilir. Fakar her
CPU swclock tick'inde, polling aktive edilmis kartlar "poll" edilir, yani
bu kartlarda gelen herhangi bir veri var mi yok mu kontrol edilir. Eger
veri varsa, normal yoldan veri ust katmanlara ayni sekilde aktarilir. Bu
ozelligi sisteminizde aktif hale getirmek icin cekirden ayar dosyaniza

device POLLING
options HZ=1000

degerlerini girip, cekirdeginizi yeniden derleyip, sistemi yeni cekirdek
ile acmaniz gerekmektedir.

Sistem POLLING destekli olarak acildiktan sonra:

# ifconfig em0 polling

komutunu vermeniz, bu arayuzde kesme isteklerinin kapatilmasini ve arayuzun
polling moduna alinmasini netice verecektir.

# ifconfig em0 -polling

komutu bu islemi tersine cevirecektir.


6. Interrupt Coalescing

POLLING mekanizmasinin dezavantaji, paketlerin alinmasinin bir muddet gecikmesi
seklinde olusmaktadir. BSD gelistiricileri, pure-interrupt-driven bir mode veya
POLLING gibi paket alim latency sikintisi olan mekanizma yerine, bu ikisinin
avantajlarini bulusturan, dezavantajlarini da barindirmayan bir yapi olarak
"Interrupt Coalescing"'i sisteme entegre ettiler.

Bu model'de, asenkron kesme isteklerinin tamamen durdurulmasi yerine, kesme
isteklerinin belirli bir algoritma tabaninda bir muddet geciktirilmesi dusuncesi
yer etmektedir. Bu sekilde, birden fazla paket, ayni ISR (interrupt service
routine) tarafindan karsilanacak, boylece, kesme isteginin sisteme verecegi
yuk de dogrusal orantili olarak azalacaktir. Burada da paketlerin alimi
sirasinda bir sure gecikmeden soz edilebilir, fakat bu gecikme POLLING'e gore
cok daha az ve farkedilmesi zordur.

Bu ozellik, ag karti tarafindan compile time'da aktive edildigi icin, kullanici
tarafindan sistem calisirken degistirilememektedir. Cogu modern ag karti ve
surucusu bu model'den fazlasiyla destek almaktadir.



7. ZERO-COPY sockets

Byte basina dusen yuku (per-byte overhead) azaltmak icin onerilmis bir yontem
olan ZERO-COPY sockets, paketlerin ag kartindan, cekirdek buffer'ina, oradan
da userspace buffer'a kopyalanmasi yerine, ag kartindan direk userspace prog-
ramin bellegine yazilmasi fikrine dayanir. Tek paketin iki defa kopyalanmasi
onlenmis olacagi icin, paketlerin userspace'e aktarildigi durumlarda (zero-copy
soketler, eger makinaniz sadece routing yapiyorsa bir isinize yaramayacaktir)
ciddi performans artirimlari saglayabilecektir. ZC soketler, paket alimi ile
iliskilendirildiginde on istek olarak, soket'e verilen paketin page-aligned
olmasini istemektedirler. Dolayisiyla paket aliminda ZC socket kullanmak
icin en azindan 4K'lik bir MTU buyuklugu gerekmektedir. Bu da, FreeBSD
makinanizda Jumbo Frames ozelligini kullanmanizi zorunlu kilar. Paket gonderimi
noktasinda bir kisitlama yoktur. Butun modern ag kartlari ile kullanilabilir.

Bu ozelligi kullanabilmek icin, cekirdek ayar dosyanizda:

options ZERO_COPY_SOCKETS
options MCLSHIFT=12
options TI_JUMBO_HDRSPLIT

seceneklerini yazip, cekirdeginizi yeniden derlemeniz gerekmektedir.

Makinaniz yeni cekirdekle acildiktan sonra;

1. ag kartinizin MTU degerini 9000 yapin:

# ifconfig em0 mtu 9000

2. Bu ozellikten cok daha fazla verim alabilmek icin, yazari asagidaki
sysctl degisikliklerinin de aktive edilmesinin faydali olacagini
soylemektedir:

TCP maksimum segment buyuklugunun 64K'dan fazla olabilmesi:

# sysctl -w net.inet.tcp.rfc1323=1


socket buffer'larinin artirilmasi:

# sysctl -w kern.ipc.maxsockbuf=2097152
# sysctl -w net.inet.tcp.sendspace=524288
# sysctl -w net.inet.tcp.recvspace=524288
# sysctl -w net.inet.udp.recvspace=65535
# sysctl -w net.inet.udp.maxdgram=57344



8. SMPng (Symmetric Multiprocessing Next Generation)

FreeBSD 4.x serisinin sonuna kadar, FreeBSD isletim sistemi userspace'de multi-
programming'e olanak saglamakla beraber cekirdek seviyesinde birden fazla
islemcinin sagladigi olanaklardan faydalanamamaktaydi. Bunun dogal sonucu olarak
birden fazla islemcisi olan sunucularla, tek islemcisi olan FreeBSD sunucular
ag performansi noktasinda hicbir farki haiz degildi. FreeBSD gelistiricileri
5.x serisi icin SMPng projesini adeta bir kilometre tasi ilan ettiler.
Cekirdek kodunun, ozellikle de ag katmanlarinin GIANT lock tabir edilen tek
bir semafor'dan kurtarilip, "fine-grained locking" altyapisina kavusturulmasi
konusunda cok fazla efor sarfedildi. 5.x serisinin ilk surumleri'leri bu kodun
ilk test sahasi olmasi acisindan sancili gecse de, 6.2-RELEASE surumu itibariyle
bu kodun oldukca stabil oldugunu soylemek mumkundur. Bugun itibariyle hemen
hemen butun ag suruculeri, ve onemli ag protokolleri (IPv4, IPv6, UDP, TCP,
IPSec) SMPng'nin nimetlerinden sonuna kadar faydalanmaktadir.

Makinaniza ps aux komutu ciktisina bakarsaniz asagidaki gibi process'ler
goreceksiniz:

18 ?? WL 0:00.00 [swi6: task queue]
19 ?? WL 0:00.00 [irq9: acpi0]
20 ?? WL 0:00.00 [irq14: ata0]
21 ?? WL 0:00.00 [irq15: ata1]
22 ?? WL 0:05.45 [irq17: bt0]
23 ?? WL 0:09.44 [irq18: lnc0]
24 ?? WL 0:00.01 [irq1: atkbd0]
25 ?? WL 0:00.00 [irq12: psm0]
26 ?? WL 0:00.00 [irq7: ppc0]
27 ?? WL 0:00.00 [swi0: sio]

Bu surecler, userspace surecler degillerdir. Tamamen cekirdek icinde calisan
"kernel thread"lerdir. Tahmin edeceginiz gibi, her bir aygit surucusunun
interrupt'lari farkli bit kernel thread tarafindan okunmakta.

SMP-aware ag alt sistemi, FreeBSD'nin guncel surumlerinde (6.x serisi) ontanimli
olarak gelmektedir. Sizin bu konuda ayrica bir ayar yapmaniza gerek yoktur.



9. TCP automatic sizing of send windows

Paket basina dusen yuku azaltmak icin Andre Oppermann tarafindan onerilen
ve gerceklenen bu yontem, bir tcp baglantisinda tradisyonel olarak statik
olan send buffer'inin, baglantinin kaliteli olmasi durumunda kontrollu
olarak artirilmasi ve baglantinin bandwidth'inin daha etkili kullanilmasi
dusuncesine dayanir. Cekirdekteki ilgili kod, link'in maksimum kullanimi
icin buffer'in en optimum buyuklukte tutulmasini saglar.

Bu ozellik su anda 6.x serisinde ontanimli olarak gelmemekle beraber 7.x
serisinde bulunmaktadir. Ozelligi etkinlestirmek icin asagidaki sysctl
degisteknleri set edilebilir:

tx tarafinda:

# sysctl -w net.inet.tcp.sendbuf_auto=1
# sysctl -w net.inet.tcp.sendbuf_inc=8192
# sysctl -w net.inet.tcp.sendbuf_max=262144

rx tarafinda:

# sysctl -w net.inet.tcp.recvbuf_auto=1
# sysctl -w net.inet.tcp.recvbuf_inc=16384
# sysctl -w net.inet.tcp.recvbuf_max=262144

10. DIGER IYILESTIRMELER

Asagkidaki sysctl degerleri, sisteminizin cekirdek tarafindan belirlenmis
limitlerini yukari cekmenizi saglar. Bu limitleri, CPU saat hiziniz ve
sisteminizdeki RAM'inizi dikkate alarak artirmaniz tavsiye edilir:


blocking write sistem cagrilarinin buffer yetersizligi nedeniyle
block etmemsi icin:

# sysctl -w sysctl net.inet.tcp.sendspace=65536

Daha yuksek TCP maksimum segment size degerlerinin kullanilabilmesi
icin:
# sysctl -w net.inet.tcp.rfc1323=1

Maksimum socket tampon bellek miktari:
# sysctl -w kern.ipc.maxsockbuf=2097152

TCP/UDP send/receive buffer'lari:
# sysctl -w net.inet.tcp.sendspace=524288
# sysctl -w net.inet.tcp.recvspace=524288
# sysctl -w net.inet.udp.recvspace=65535
# sysctl -w net.inet.udp.maxdgram=57344



11. USERSPACE tarafinda yapilacaklar

Buraya kadar yazdiklarimiz Layer IV dahil olmak uzere bu katmana kadar olan
kisimlarda yapilabilecek iyilesitirmelerdi. Bundan sonra butun is, iyi dizayn
edilmis ve guzelce kodlanmis uygulamalar gelistirmeye ve boyle uygulamalari
bulup kullanmaya kaliyor.


12. Sistemin Durumunu Izleme

Sisteminizin durumunu, netstat, vmstat, systat gibi araclarla izleyebiliriniz.

Ag karti baglaminda sistemi izlemek icin:

# systat -ifstat 1


/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average

Interface Traffic Peak Total


lo0 in 0.000 KB/s 0.000 KB/s 3.474 MB
out 0.000 KB/s 0.000 KB/s 3.474 MB

lnc0 in 0.000 KB/s 0.000 KB/s 14.957 MB
out 0.000 KB/s 0.000 KB/s 12.697 MB




IP katmanini izlemek icin:


# systat -ip 1
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average

IP Input IP Output
58494 total packets received 53530 total packets sent
0 - with bad checksums 53530 - generated locally
0 - too short for header 0 - output drops
0 - too short for data 0 output fragments generated
0 - with invalid hlen 0 - fragmentation failed
0 - with invalid length 0 destinations unreachable
0 - with invalid version 67 packets output via raw IP
0 - jumbograms
0 total fragments received UDP Statistics
0 - fragments dropped 1682 total input packets
0 - fragments timed out 0 - too short for header
0 - packets reassembled ok 0 - invalid checksum
0 packets forwarded 0 - no checksum
0 - unreachable dests 0 - invalid length
0 - redirects generated 2 - no socket for dest port
0 option errors 1170 - no socket for broadcast
0 unwanted multicasts 0 - socket buffer full


# systat -tcp 1

TCP katmanini izlemek icin:

TCP Connections TCP Packets
0 connections initiated 1 total packets sent
0 connections accepted 1 - data
0 connections established 0 - data (retransmit)
0 connections dropped 0 - ack-only
0 - in embryonic state 0 - window probes
0 - on retransmit timeout 0 - window updates
0 - by keepalive 0 - urgent data only
0 - from listen queue 0 - control
0 - resends by PMTU discovery
TCP Timers 1 total packets received
0 potential rtt updates 0 - in sequence
1 - successful 0 - completely duplicate
0 delayed acks sent 0 - with some duplicate data
0 retransmit timeouts 0 - out-of-order
0 persist timeouts 0 - duplicate acks
0 keepalive probes 1 - acks
0 - timeouts 0 - window probes
0 - window updates
0 - bad checksum

Sistemin load durumunu, CPU durumunu gormek icin:

# vmstat 1
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr da0 pa0 in sy cs us sy id
1 8 0 615388 45760 11 0 0 0 10 1 0 0 185 107 442 0 1 99
0 8 0 615388 45760 2 0 0 0 0 0 0 0 183 162 438 0 1 99
^C

Sistemin interrupt durumunu gormek icin:

# netsat -i
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lnc0 1500 00:0c:29:18
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
50 172723 2 50232 0 0
lnc0 1500 10/24 freefall6.endersy 55428 - 50522 - -
plip0 1500 0 0 0 0 0
lo0 16384 3163 0 3163 0 0
lo0 16384 fe80:3::1 fe80:3::1 0 - 0 - -
lo0 16384 localhost ::1 35 - 35 - -
lo0 16384 your-net localhost 3128 - 3128 - -
pflog 33208 0 0 0 0 0





13. SON SOZLER

FreeBSD isletim sistemi, IPv4, TCP, IPv6, IPSec gibi, su anda iletisim dunyamizi
derinden etkileyen protokollerin gelistirildigi cok eski ve saglam bir kod
mirasina sahip bir isletim sistemi projesidir. Bu baglamda, ozellikle ag tek-
nolojileri ile bir cok ar-ge calismasi bu projenin bunyesinde veya, bu proje
baz alinmak suretiyle devam ettirilmektedir. Yukarida siralamaya calistigimiz
performans iyilestirmeleri bu minvalde ortaya cikmis, ve halen de cikmaya
devam etmektedir.

Yurt disinda, ozellikle universitelerin Bilgisayar ve Elektronik Muhendisligi
lisans, yuksek-lisans ve doktora ogrencileri tez calismasi olarak bu tip
projeleri almakta, hem dunya IT sektorune cok onemli katkilar saglamakta
hem de kendi bilgi ve gorgulerini inanilmaz artirmaktadirlar.

Ulkemiz kurumlarinin ve insaninin da bu yolu takip etmesi umidiyle...


14. REFERANSLAR

1. Jeffrey S. Chase et al., End-System Optimizations for High-Speed TCP, Duke University
2. Tuning kernel limits:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
3. Zero-copy sockets:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
4. FreeBSD Netperf:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
5. Auto-size of tcp send buffers:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
6. Marko Zec, Miljenko Mikuc, Mario Zagar, Estimating the Impact of Interrupt Coalescing Delays
on Steady State TCP Throughput. University of Zagreb.

Kaynak:

Murat Balaban
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
  Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
radyo44.com.tr
Cevapla

Etiketler
etmek, freebsd, hizlar, icin, isletim, optimize, sistemini, yuksek

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık