Facebook, Linux'ta Slab bellek denetleyicisini geliştiren yamalar yayınladı

Roman Gushchin (bir Facebook yazılım mühendisi) kayıt Linux çekirdek geliştirme listesinde, döşeme denetleyicisi bellek eşleme uygulamasına bir dizi yama (bir bellek denetleyicisi).

Yeni kontrolör dikkat çekici döşeme hesaplamasını bellek sayfası düzeyinden çekirdek nesne düzeyine taşıyarak, her grup için ayrı döşeme önbellekleri tahsis etmek yerine döşeme sayfalarını farklı gruplar c arasında paylaşmayı mümkün kılar c.

Roman, mevcut slab bellek denetleyicisinde "çok ciddi bir kusur" olarak adlandırdığı şeyi buldu ve bu günlerde cgroup'larda düşük kullanıma yol açtı.

“Mevcut düzenin düşük döşeme kullanımına yol açmasının gerçek nedeni basittir: döşeme sayfaları yalnızca bir bellek havuzu tarafından kullanılır.

Bir cgroup tarafından yapılan belirli bir boyutta yalnızca birkaç tahsis varsa veya cgroup kaldırıldıktan sonra kalan bazı aktif nesneler varsa veya cgroup, herhangi bir çekirdek nesnesini ancak her seferinde ayıran tek bir iş parçacığı uygulaması içeriyorsa yeni bir CPU'da: tüm bu durumlarda, ortaya çıkan slab kullanımı çok düşüktür.

Kmem hesabı devre dışı bırakılırsa, çekirdek diğer tahsisler için döşeme sayfalarında boş alan kullanabilir. «

Önerilen Slab bellek denetleyicisi Romano Gushchin tarafından geçen yıl oldukça ümit vericiydi. verimliliği artırır levhanın kullanımının, kullanılan hafıza boyutunu küçültmek levha için% 30-45 oranında ve toplam çekirdek bellek tüketimini önemli ölçüde azaltır.

Dışında, uygulanan yamalar gösterdi Facebook bu kodu üretimde zaten sunucularında kullanıyor ve ön uç web sunucuları için ~ 650-700MB + tasarruf, diğer ödüllerin yanı sıra veritabanı önbelleğe alma ve DNS sunucuları.

Mobil olmayan döşeme sayısının azaltılmasıyla, bellek parçalanmasının azaltılması alanında da olumlu bir etki gözlemlenmektedir. Yeni bellek denetleyicisi, muhasebe levhası için kodu önemli ölçüde basitleştirir ve her grup için döşeme önbelleklerinin dinamik olarak oluşturulması ve silinmesi için karmaşık algoritmalar gerektirmez c.

Yeni uygulamadaki tüm bellek önbellek grupları ortak bir döşeme önbellekleri seti kullanır ve döşeme önbelleklerinin ömrü artık cgroup aracılığıyla ayarlanan bellek kısıtlamalarının ömrüne bağlı değildir.

Yeni slab kontrolöründe uygulanan daha kesin kaynak muhasebesi, teorik olarak CPU'yu daha fazla yüklemelidir, ancak pratikte farklar ihmal edilebilir.

Özellikle yeni slab sürücüsü Facebook sunucularında birkaç aydır kullanılıyor farklı yük türlerini işleyen operasyonda ve şu ana kadar önemli bir gerileme tespit edilmedi.

Yama, kullanımlarını slabın bellek denetleyicisinin dışında da bulabilen birkaç yarı bağımsız parça içerir:

  • Percpu ayırmaları gibi bir sayfa boyutu olmayan diğer nesneleri saymak için gelecekte kullanılabilecek Alt Sayfa Yükleme API'si
  • İşaretçilerin bir memcg'ye sayılan mem_cgroup_ptr API'si, örneğin pagecache gibi diğer nesnelerin verimli bir şekilde yeniden ilişkilendirilmesi için yeniden kullanılabilir.

Aynı zamanda, hafıza tüketiminde önemli bir azalma var- Bazı ana bilgisayarlarda 1 GB'a kadar bellek tasarrufu yapmak mümkündü, ancak bu gösterge büyük ölçüde yükün yapısına bağlıdır, toplam RAM boyutu, CPU miktarı ve bellekle çalışmanın özellikleri.

Her bellek cgroup için ayrı bir kmem_caches seti oluşturmak yerine, iki global küme kullanılır: hesaplanmayanlar için kök küme ve kök grup cgroup atamaları ve diğer tüm atamalar için ikinci küme. Bu, bireysel kmem_cache'lerin ömür boyu yönetimini basitleştirmeye izin verir.

Son olarak, 19 yamalık yeni seti öğrenmekle ilgileniyorsanız, listede bulunabilir. çekirdek postası.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.