Database Autonomy Service (DAS), Redis örnekleri için denetim ve puanlama özelliğinde bellek parçalanma oranını bir faktör olarak değerlendirir. Bu konu; bellek parçalanmasının ne olduğunu, nedenlerini, nasıl ölçüldüğünü ve ne zaman müdahale edilmesi gerektiğini açıklar.
Bellek parçalanması nasıl oluşur
Bellek parçalanması, boş bellek alanı mevcut olsa da bu alanın küçük ve bitişik olmayan segmentlere bölünmesi durumunda ortaya çıkar. Toplam boş bellek miktarı N bayttan fazla olsa bile işletim sistemi, bitişik bir N baytlık blok isteğini karşılayamaz. Dağınık haldeki bu segmentler bellek parçası olarak adlandırılır.
Tair (Redis OSS-Compatible) ürününde bellek parçaları, örneğiniz için ayrılan kullanılabilir belleği azaltmaz ve ek ücret yansıtılmaz.
Örneğin, 1 GB kapasiteli bir Tair (Redis OSS-Compatible) örneğinde 700 MB kullanılıyorsa bellek parçalanma oranı 2'ye ulaşsa bile kalan 300 MB (1 GB − 700 MB) kullanılabilir durumda kalır. Bu durumda veriler fiziksel olarak sistem belleğinde 2 GB yer kaplar.
Bellek parçalanmasının nedenleri
Bellek parçalanmasının iki temel nedeni vardır.
Bellek ayırıcı davranışı (dahili)
Redis; libc, jemalloc ve tcmalloc dahil olmak üzere birden çok bellek ayırıcıyı destekler. Varsayılan ayırıcı jemalloc'tur. Jemalloc, uygulamanın istediği bellek miktarını tam olarak ayırmak yerine en yakın ikilik sınırına yuvarlar (8 bayt, 16 bayt, 32 bayt, 2 KB, 4 KB vb.). İstenen miktar ile ayrılan miktar arasındaki fark parçalanmaya neden olur.
Anahtar-değer çifti değişimi (harici)
Anahtar-değer çiftleri değiştirildiğinde veya silindiğinde kapladıkları bellek serbest bırakılır ya da yeniden boyutlandırılır. Ayrılan bloklar nadiren yeni veri boyutuyla tam olarak eşleştiğinden zamanla boşluklar birikir.
Bellek parçalanma oranını kontrol etme
Bellek kullanım ayrıntılarını görüntülemek için DAS'ta aşağıdaki komutu çalıştırın:
INFO memory
Çıktı şunları içerir:
# Memory
used_memory:350458970752
used_memory_human:326.39G
used_memory_rss:349066919936
used_memory_rss_human:325.09G
…
mem_fragmentation_ratio:1.00
| Alan | Açıklama |
|---|---|
used_memory |
Redis'in verileri depolamak için istediği bellek |
used_memory_rss |
İşletim sisteminin Redis'e ayırdığı, parça yükünü de içeren fiziksel bellek |
mem_fragmentation_ratio |
Geçerli bellek parçalanma oranı |
Oran şu şekilde hesaplanır:
mem_fragmentation_ratio = used_memory_rss / used_memory
Oranı yorumlama
| Oran | Durum | Önerilen eylem |
|---|---|---|
| 1,0–1,5 | Normal | Eylem gerekmez |
| > 1,5 | Yüksek | Parçalanmış bellek, kullanılan belleğin yarısını aşıyor. Durumu inceleyin ve düzeltici önlem alın. |