Samba Optimizasyonu

Ekim 2003
İlker FIÇICILAR

  Samba'yı ilk kurduğunuzda makinanızın donanımına ve ağ ortamınıza en uygun şekilde kurulmaz. Her makinada kararlı bir biçimde çalışması için performanstan fedakarlık edilmiştir. Sisteminize uygun birkaç ufak ayar ile hem dosya aktarım hızını hem de aynı anda hizmet verilen bağlantılara yanıt verme hızını arttırabiliriz.

  Samba'da performans optimizasyonu ayarlarını samba'nın standart ayar dosyası olan smb.conf dosyasına bir yazı editörüyle (joe, pico, vi, xedit, kedit, ... gibi) ilgili alanlara komutları elle ekleyerek yapıyoruz. Samba'yı kurarken başka bir yer belirtmemişseniz bu smb.conf dosyası /etc/samba klasöründe bulunur.

  Önce samba genelinde etkin olacak ayarlara bakalım. Bunun için smb.conf dosyasında [global] adlı kısmın altına geliyoruz.

 Burada dört ayar satırı kullanıyoruz, bunlar:

 oplocks
 socket options
 share modes
 read prediction


oplocks

 Bir istemci bir dosya üzerinde her tür dosya işlemi için sunucudan yetki istediğinde oplocks kullanılır. O dosya üzerinde tek işlem yapan istemci ya da işlem kendisi ise o dosya üzerinde daha etkin önbellekleme yapabilir. Yeni samba sürümlerinde öntanımlı olarak aktiftir, ama emin olmakta yarar var:

oplocks = yes


socket options

 Burada ağınızın en büyük veri parçası boyutuna göre (MSS - Maximum Segment Size) veri gönderme tamponunun boyutunu ayarlamak hızlandırmaya önemli katkı sağlıyor. Burada önerilen büyüklük 8Kbyte civarı. Bunu ayarlamak için mss'nin tam katları olacak şekilde yazıyoruz. Yani mss'niz 1460 byte ise (standart ethernet) 8192/1460 = 5.61 olduğundan 6*1460 = 8760 kullanırız. Eğer mss'niz 536 ise benzer şekilde hesap ile gönderme tamponu boyutunu 8576 olarak hesaplayabiliriz. Socket options ayarındaki önemli diğer bir parametre de TCP_NODELAY. Bu ise ACK yanıtlarının gecikmesi durumunda samba'nın tıkanıklığın geçmesini beklediği 1 saniyelik süreyi iptal ediyor. Bu durum genellikle windows işletim sistemi kullanan makinaların TCP/IP katmanı ACK ile ilgilenirken bir yandan veri çekmeye devam edemediği için oluyor. Gelen pakedi alan olmadığı için ethernet kartı sürücüsü o pakedi bırakıyor ve bu paket kayıpları da samba'yı yanıltarak hattın yoğun olduğu izlenimini bırakıyor. Sonuçta bu tür windowslarla iletişim 20'de 1 oranına düşebiliyor. Veri alma tamponunu da ayarladığımız çözüm ise şu:

socket options = TCP_NODELAY SO_SNDBUF=8760 SO_RCVBUF=8760


share modes

 DOS'un kullandığı 'share modes' desteğini kapatarak dosyaları okumaya açma işlemini hızlandırabiliriz. Yalnız hala bazı eski windows programları bu ayarın 'on' olmasını gerektirebilir. Bir sıkıntı yaşanmadığı sürece dosya açma kapama verimini, performansını arttırmak için aşağıdaki satırı kullanmak gerek:

share modes = no


read prediction

 Sadece okuma amaçlı açılmış dosyalarda etkili olsa da bu özellik önemli verim kazancı sağlayabiliyor. Bu okuma tahmini özelliği samba'nın sıradaki SMB komutunu beklemeden, önceki komutlardan tahminle ek veri okumasını sağlıyor. Etkinleştirmek için şunu da smb.conf'ta [global] kısmının altına ekliyoruz:

read prediction = yes


log level

 Samba sunucusu her işlemden sonra kayıtları diske yazdığından, tuttuğu kayıt sayısını düşürerek ek verim elde edebiliriz. Özellikle kayıt düzeyi 2'den fazla ise önemli performans kayıpları oluşabilir. Önerilen:

log level = 1


 Bunlardan başka, her paylaşım için ayrı ayrı tanımlamamız gereken ayarlar var. Bunları sadece okuma izni olan yazma izni olmayan paylaşımlarda kullanmalıyız:

 level2 oplocks
 fake oplocks


level2 oplocks

 Sıklıkla ve aynı anda okunan dosyalara erişimin önbellekten karşılanmasını sağlayan bu özelliği, etkin olmasını istediğimiz paylaşımın altına ekliyoruz:

level2 oplocks = true


fake oplocks

 Bunu etkinleştirerek her oplocks isteğinin karşılanmasını sağlamak mümkün. Bu, 'sadece-okunabilir' paylaşımlarda etkinleştirilmelidir. İstemcinin dosyayı özgürce önbelleklemesini sağlar:

fake oplocks = yes


 Bu son ikisine şöyle bir paylaşım örnek verilebilir:

[ftp]
comment = ftp files
path = /var/ftp/pub
read only = yes
guest ok = yes
level2 oplocks = true
fake oplocks = yes


 Bunlar dışında ağınızda QOS ayarları yapabilir, istemci windows makinaların TCP/IP 'recieve window' boyutunu arttırabilir, samba'nın bulunduğu dosya sistemini uygulamalarınıza daha uygun biriyle değiştirebilirsiniz.


Ek bilgi için:

Google'da "samba performance" optimization arama sonuçları.

Google'da "samba optimization" arama sonuçları.

Gelecek A.Ş.'deki Türkçe Samba e-kitabı

Samba Belgeleri

Bonnie++ dosya sistemi hız sınama yazılımı

Explanation of Opportunistic Locking on Windows NT

Samba Performance Tuning [PDF]

Samba Performance Tuning [HTML]



Ekim 2003
İlker Fıçıcılar