Kernel Performance Tuning

Linux kernel parametreleri, sistem performansını doğrudan etkiler. Bu rehberde kritik sysctl ayarlarını ve kernel optimizasyonlarını inceleyeceğiz.

Sysctl Nedir?

sysctl, çalışan kernel parametrelerini dinamik olarak değiştirmeye yarayan bir araçtır. /proc/sys altındaki değerleri okur ve yazar.

Memory (Bellek) Optimizasyonu

# /etc/sysctl.d/99-memory.conf

Swap kullanımını minimize et (0-100 arası, düşük = az swap)

vm.swappiness = 10

Dirty page oranları - disk yazma optimizasyonu

vm.dirty_ratio = 40 vm.dirty_background_ratio = 10 vm.dirty_expire_centisecs = 3000 vm.dirty_writeback_centisecs = 500

Memory overcommit ayarı

vm.overcommit_memory = 0 vm.overcommit_ratio = 50

Huge Pages (veritabanı sunucuları için)

vm.nr_hugepages = 1024

Network Stack Optimizasyonu

# /etc/sysctl.d/99-network.conf

TCP bağlantı kuyruğu

net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65535 net.ipv4.tcp_max_syn_backlog = 65535

TCP buffer boyutları (yüksek bant genişliği için)

net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216

TIME_WAIT socket yönetimi

net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 15

Keepalive ayarları

net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 15

SYN flood koruması

net.ipv4.tcp_syncookies = 1

File System Limitleri

# /etc/sysctl.d/99-fs.conf

Maksimum açık dosya sayısı

fs.file-max = 2097152 fs.nr_open = 2097152

Inotify limitleri (izleme için)

fs.inotify.max_user_watches = 524288 fs.inotify.max_user_instances = 512

Ulimit Ayarları

# /etc/security/limits.conf

  • soft nofile 65535
  • hard nofile 65535
  • soft nproc 65535
  • hard nproc 65535

Systemd servisleri için

/etc/systemd/system.conf

DefaultLimitNOFILE=65535

I/O Scheduler Seçimi

# Mevcut scheduler
cat /sys/block/sda/queue/scheduler

SSD için (none veya mq-deadline)

echo "none" | sudo tee /sys/block/sda/queue/scheduler

HDD için

echo "mq-deadline" | sudo tee /sys/block/sda/queue/scheduler

Değişiklikleri Uygulama

# Tüm sysctl ayarlarını uygula
sudo sysctl --system

Belirli bir dosyayı uygula

sudo sysctl -p /etc/sysctl.d/99-network.conf

Sonuç

Bu kernel parametreleri ile %20-30 performans artışı sağlanabilir. Değişikliklerden önce mutlaka test ortamında doğrulama yapın.