2013-03-18 13 views
31

Jakie czynniki decydują o wyborze przydziału pamięci w Kernelu Linux?Co wybrać między Slab a Slub Allocator w jądrze Linux?

W obecnym jądrze Linux mamy opcję wyboru SLAB, SLUB lub SLOB. Czytałem, że SLOB jest używany dla Kernela o mniejszych śladach. Chciałbym jednak poznać czynniki, które pomagają w wyborze między Slab Allocator a Slub Allocator.

+3

http://lwn.net/Articles/229984/ w przypadku, gdy nie widziałem tego –

+0

Dzięki :) Ale przeczytałem ten artykuł.Dało to wgląd w Slub, ale na moje pytanie nie udzielono w pełni odpowiedzi. Mam na to odpowiedź na Quora. Opublikowałem link w dół. – Siddharth

Odpowiedz

46

W poszukiwaniu odpowiedzi, napisałem to samo pytanie na Quora i Robert Miłość odpowiedział go:

Jestem zakładając prosicie to z punktu-of-widzenia użytkownika się system, a może ktoś budujący jądro dla konkretnego produktu . Jako programista jądra, nie obchodzi cię, jaki jest używany "podzielnik" ; API jest takie samo.

Po pierwsze, "płyta" stała się ogólną nazwą odnoszącą się do strategii alokacji pamięci wykorzystującej pamięć podręczną obiektów, umożliwiającą wydajną alokację i dezalokację obiektów jądra. Został on po raz pierwszy udokumentowany przez inżyniera Sun Jeffa Bonwicka 1 i zaimplementowany w jądrze Solaris 2.4 .

Linux oferuje obecnie trzy możliwości dla jego „płyty” podzielnika:

Płyta jest oryginalna, oparta na przełomowej pracy Bonwicka i dostępnego od wersji jądra Linux 2.2. Jest to wierna implementacja propozycji Bonwick, wzbogaconej o wieloprocesorowe zmiany opisane w dokumencie następczym Bonwicka [2].

Slub to nowa alokacja pamięci zastępczej następnej generacji, która ma domyślne jądro Linuksa od wersji 2.6.23. Kontynuuje on do zastosowania podstawowego modelu "slab", ale usuwa kilka niedociągnięć w konstrukcji Slab, szczególnie w systemach o dużej liczbie procesorów . Slub jest prostszy niż Slab.

SLOB (Prosta lista bloków) to alokator pamięci zoptymalizowany dla systemów wbudowanych o bardzo małej ilości pamięci - rzędu megabajtów. To stosuje bardzo prosty algorytm pierwszego dopasowania na liście bloków, a nie w starym przydziale sterty K & w stylu R. Eliminując prawie wszystkie z nadmiaru z alokatora pamięci, SLOB jest dobrym rozwiązaniem dla systemów w skrajnych ograniczeniach pamięci, ale nie oferuje żadnej z korzyści opisanych w 1 i może cierpieć z powodu patologicznej fragmentacji.

Jakich użyć? Slub, chyba że budujesz jądro dla wbudowanego urządzenia z ograniczoną pamięcią. W takim przypadku wykonałbym test porównawczy Slub versus SLOB i zobaczę, co najlepiej sprawdza się w twoim obciążeniu. Nie ma powodu, aby używać Płyty; prawdopodobnie zostanie usunięty z przyszłych wydań jądra Linuksa w wersji .

Proszę odnieść się do tej link, aby uzyskać oryginalną odpowiedź.

+1

Należy zauważyć, że Debian i inne dystrybucje wróciły do ​​SLAB, ponieważ jest szybszy w systemach wieloprocesorowych. Zobacz: https://lists.debian.org/debian-kernel/2012/03/msg00944.html – Ariel

+1

@Ariel to jest interesujące, czy istnieje jakiś benchmark lub coś, co opisuje powód tego? – dashesy

Powiązane problemy