FreeBSD Isletim Sistemi'ni
	       	 	Yuksek Hizlar Icin Optimize Etmek

			         Murat Balaban
		  	http://www.enderunix.org/murat/



		

	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:a4: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...



	Murat Balaban

	AR-GE Yoneticisi, endersys ltd.  http://www.endersys.com.tr
	EnderUNIX uyesi http://www.enderunix.org/murat/

	3 Aralik 2007
	Libadiye, Istanbul

	

	14. REFERANSLAR

	1. Jeffrey S. Chase et al., End-System Optimizations for High-Speed TCP, Duke University
	2. Tuning kernel limits:
           http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-kernel-limits.html
	3. Zero-copy sockets:
	   http://kerneltrap.org/node/294
	4. FreeBSD Netperf:
	   http://www.watson.org/~robert/freebsd/netperf/00README
 	5. Auto-size of tcp send buffers:
	   http://www.freebsd.org/news/status/report-jan-2004-feb-2004.html#Automatic-sizing-of-TCP-send-buffers
	6. Marko Zec, Miljenko Mikuc, Mario Zagar, Estimating the Impact of Interrupt Coalescing Delays 
	   on Steady State TCP Throughput. University of Zagreb.