Debate

Linux Virtual Memory Tuning

Iniciado por Konstantin · 04 dic 2025 16:10 · 43 Visitas · 0 Respuestas
Autor del tema #0
---

# Linux Sanal Bellek Ayarlaması

Linux sistemlerinin istikrarlı ve yüksek performanslı çalışması için sanal bellek yönetimi kritik bir role sahiptir. Sanal bellek, fiziksel belleğin (RAM) yetersiz kaldığı veya sistemin daha fazla kaynak ihtiyacı duyduğu durumlarda devreye girer. İşletim sistemi, her sürece kendi özel sanal adres alanını sunarak bellek yönetimini kolaylaştırır ve programların birbirini etkilemesini engeller. Bu mekanizma, uygulamaların fiziksel bellekten bağımsız olarak çalışmasına olanak tanır ve sistemin daha fazla uygulama çalıştırmasına yardımcı olur. Sanal bellek ayarlaması, sistem performansını doğrudan etkileyen önemli bir optimizasyon sürecidir. Doğru yapılandırmalar sayesinde, sistemler daha hızlı yanıt verir ve kaynakları daha verimli kullanır.

## Sanal Bellek Nedir ve Neden Önemlidir?

Sanal bellek, işletim sisteminin fiziksel belleği soyutlayarak programlara daha büyük ve düzenli bir bellek alanı sunmasını sağlayan bir kavramdır. Her program, sanki tüm belleğe tek başına sahipmiş gibi bir sanal adres alanı görür. İşletim sistemi bu sanal adresleri fiziksel bellekteki (RAM) veya disk üzerindeki takas (swap) alanındaki gerçek adreslere dönüştürür. Bu sayede, aynı anda birden fazla uygulama çalışabilir ve her biri diğerinin belleğine müdahale etmez. Sanal bellek ayrıca bellek aşırı tahsisine (memory overcommit) olanak tanır; yani fiziksel bellekten daha fazlasını isteyebilecek süreçleri barındırabilir. Dolayısıyla, sistem kararlılığı, güvenlik ve çoklu görev yeteneği açısından sanal bellek hayati bir öneme sahiptir.

## Takas Alanının Rolü ve Yönetimi

Takas alanı (swap space), Linux'un sanal belleği yönetirken kullandığı bir disktir. Fiziksel bellek dolduğunda, az kullanılan veya önceliksiz bellek sayfaları bu takas alanına yazılır. Bu durum, RAM'de yer açarak daha kritik uygulamaların çalışmaya devam etmesini sağlar. Takas alanı, genellikle disk tabanlı olduğu için RAM'den çok daha yavaştır. Bu nedenle, sistemin sık sık takas alanını kullanması genel performansı olumsuz etkileyebilir. Takas alanı boyutu, genellikle fiziksel belleğin bir buçuk ila iki katı olarak önerilse de, modern sistemlerde ve belirli iş yüklerinde bu oran değişebilir. `swapon -s` ve `free -h` gibi komutlar ile takas alanı kullanımı izlenebilir.

## vm.swappiness Parametresi ve Ayarlaması

`vm.swappiness`, Linux çekirdeğinin takas alanını kullanma eğilimini belirleyen bir parametredir. Değeri 0 ile 100 arasında değişir. Daha yüksek bir değer, çekirdeğin takas alanını daha sık kullanacağı anlamına gelirken, daha düşük bir değer fiziksel belleği daha uzun süre dolu tutmaya çalışacağını gösterir. Örneğin, `vm.swappiness=0` değeri, çekirdeğin sadece kesinlikle gerekli olduğunda takas yapmasını isterken, `vm.swappiness=100` ise takası agresif bir şekilde kullanmaya yönlendirir. Genellikle sunucular için 10-30 arası, masaüstü sistemler için ise 60 civarı bir değer tavsiye edilir. Bu değeri `sudo sysctl vm.swappiness=10` komutuyla anlık olarak değiştirmek mümkündür; kalıcı değişiklikler için `/etc/sysctl.conf` dosyası düzenlenmelidir.

## Sayfa Önbelleği (Page Cache) ve Performans Etkisi

Sayfa önbelleği, Linux çekirdeğinin dosya verilerini ve diskteki diğer bilgileri RAM'de tuttuğu bir alandır. Bu önbellek, sık erişilen verilere diskten tekrar tekrar okuma ihtiyacını ortadan kaldırarak I/O performansını önemli ölçüde artırır. Bir dosya okunduğunda veya yazıldığında, veriler öncelikle sayfa önbelleğine alınır. Böylece aynı verilere bir sonraki erişim çok daha hızlı gerçekleşir. `vm.swappiness` değeri, sayfa önbelleği ile uygulama verileri arasındaki dengeyi de etkiler. Eğer `vm.swappiness` yüksekse, çekirdek uygulama verilerini takas alanına göndererek sayfa önbelleğine daha fazla yer açabilir. Sonuç olarak, bu durum uygulama yanıt sürelerini olumsuz etkileyebilir.

## vm.dirty_ratio ve vm.dirty_background_ratio İnce Ayarları

Bu iki parametre, Linux çekirdeğinin disk yazma işlemlerini nasıl yönettiğini kontrol eder. `vm.dirty_ratio`, kirli (disk'e yazılmamış, RAM'deki değiştirilmiş) verilerin toplam sistem belleğinin yüzde kaçına ulaşabileceğini belirler. Bu sınıra ulaşıldığında, tüm süreçler yazma işlemlerini durdurur ve verilerin diske yazılması beklenir. `vm.dirty_background_ratio` ise, çekirdeğin arka planda disk'e yazma işlemlerini başlatacağı kirli veri yüzdesini tanımlar. Bu değer, sistemin genel yanıt verebilirliğini korurken verilerin diske aşamalı olarak yazılmasını sağlar. Özellikle yüksek I/O yüküne sahip sistemlerde, bu oranların doğru ayarlanması sistemin donmasını veya yanıt vermez hale gelmesini önleyebilir.

## OOM Killer ve Bellek Yönetimi Stratejileri

OOM (Out-Of-Memory) Killer, sistemin fiziksel belleği tükendiğinde devreye giren bir Linux çekirdeği özelliğidir. Amacı, bellek kullanımını azaltmak için süreçleri sonlandırmak ve sistemin tamamen çökmesini engellemektir. OOM Killer hangi süreci sonlandıracağını, her sürecin `oom_score` değerine bakarak karar verir. Bu skor, sürecin ne kadar bellek kullandığına ve ne kadar süredir çalıştığına göre belirlenir. Yöneticiler, `oom_score_adj` parametresini kullanarak belirli süreçlerin `oom_score` değerini etkileyebilir ve böylece OOM Killer'ın tercihlerini yönlendirebilir. Örneğin, kritik bir veri tabanı sürecinin `oom_score_adj` değeri düşürülerek, OOM Killer'ın onu sonlandırma olasılığı azaltılabilir.

## Sanal Bellek Optimizasyonunda En İyi Uygulamalar

Sanal bellek optimizasyonu, tek bir doğru formülü olmayan, sisteme özgü bir süreçtir. İlk olarak, sistemin bellek kullanımını düzenli olarak izlemek gerekir; `free`, `vmstat`, `sar` gibi araçlar bu konuda değerli bilgiler sunar. İkinci olarak, `vm.swappiness` ve diğer `vm.dirty` parametrelerini değiştirmeden önce, mevcut değerleri ve sistemin davranışını anlamak önemlidir. Yapılan her değişikliğin etkilerini dikkatlice gözlemlemek için performans testleri yapmak şarttır. Ayrıca, tüm sistemler için aynı ayarlar uygun olmayabilir. Örneğin, bir veritabanı sunucusu ile bir masaüstü bilgisayarın bellek ihtiyaçları ve kullanım alışkanlıkları farklıdır. Son olarak, yapılan tüm değişiklikleri dokümante etmek ve yedeklemek, olası sorunlarda geri dönüşü kolaylaştırır.

Debes haber iniciado sesión para responder.

0 citas seleccionadas