Ostatnio byłem ciekawy różnych systemów plików opartych na pamięci jądra Linux.
Note:
Jeśli o mnie chodzi, poniższe pytania należy uznać za mniej lub bardziej opcjonalne w porównaniu z lepszym zrozumieniem tego zawartego w tytule. Pytam ich poniżej, ponieważ uważam, że udzielenie odpowiedzi może lepiej pomóc mi zrozumieć różnice, ale ponieważ moje rozumienie jest wprawdzie ograniczone, wynika z tego, że inni mogą wiedzieć lepiej. Jestem gotowy przyjąć każdą odpowiedź, która wzbogaci moje rozumienie różnic między trzema systemami plików wymienionymi w tytule.
Ostatecznie myślę, że chciałbym zamontować użyteczny system plików z hugepages,
pewnymi lekkimi badaniami (i jeszcze mniejszym majsterkowaniem) przekonało mnie, że rewritable hugepage mount
opcja a nie jest możliwa. Czy się mylę? Jaka jest tutaj mechanika?
Również w odniesieniu do hugepages:
uname -a
3.13.3-1-MANJARO \
#1 SMP PREEMPT \
x86_64 GNU/Linux
tail -n8 /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8223772 kB
DirectMap2M: 16924672 kB
DirectMap1G: 2097152 kB
(Oto pełne wersje tekstowe / proc / meminfo i / proc / cpuinfo )
Co się dzieje powyżej? Czy już przydzielam hugepages?
Czy istnieje różnica między DirectMap
stronami pamięci ahugepages?
Aktualizacja Po kawałku sugerować od @Gilles dodałem jeszcze 4 linie wyżej i wydaje się, musi istnieć różnica, chociaż nigdy nie słyszał DirectMap
przed wyciągnięciem że tail
dzisiaj ... może DMI
czy coś?
Jeszcze tylko trochę ...
Jeśli próba się nie powiedzie hugepages
, i przy założeniu, że kopie zapasowe plików obrazów zostaną zapisane na dysku twardym, jakie ryzyko wiąże się z montażem pętli tmpfs?
Czy mój system plików jest swapped
najgorszym scenariuszem? Rozumiem, że tmpfs
jest zamontowana pamięć podręczna systemu plików - czy mój zamontowany plik pętli może zostać odcięty od pamięci? Czy mogę podjąć działania łagodzące, aby tego uniknąć?
Wreszcie - co właściwie jest shm,
? Czym różni się od lub zawierać albo hugepages
albotmpfs?
źródło
/proc/meminfo
które zawierająHugePage
(lub czy Twoja wersja jądra ich nie ma)? Na jakiej architekturze to jest (x86_64, jak sądzę)?Odpowiedzi:
Nie ma różnicy między tmpfs i shm. tmpfs to nowa nazwa shm. shm oznacza SHaredMemory.
Zobacz: Linux tmpfs .
Głównym powodem, dla którego tmpfs jest dziś używany, jest ten komentarz w moim / etc / fstab na moim pudełku gentoo. BTW Chromium nie buduje się z brakującą linią:
który wyszedł z dokumentacji jądra Linuksa
Cytowanie:
Z przezroczystego dokumentu jądra Hugepage:
Nowy komentarz po wykonaniu obliczeń:
HugePage Rozmiar: 2 MB
HugePages Używany: Brak / Wył., O czym świadczą wszystkie 0, ale włączony jak powyżej 2 Mb.
DirectMap4k: 8,03 Gb
DirectMap2M: 16,5
Gb DirectMap1G: 2 Gb
Korzystając z powyższego akapitu dotyczącego optymalizacji w THS, wygląda na to, że aplikacje korzystające z malloców 4k, 16,5 Gb zostały wykorzystane przez aplikacje korzystające z malloców 2M. Aplikacje korzystające z malloców 2M naśladują obsługę HugePage, odciążając sekcje 2M do jądra. Jest to preferowana metoda, ponieważ po zwolnieniu malloc przez jądro pamięć jest zwalniana do systemu, podczas gdy montowanie tmpfs przy użyciu hugepage nie spowoduje pełnego czyszczenia, dopóki system nie zostanie ponownie uruchomiony. Wreszcie, ten łatwy, miałeś 2 uruchomione / uruchomione programy, które zażądały malloc 1 Gb
Dla tych z was, którzy nie znają malloc, jest to standardowa struktura w C, która oznacza przydział pamięci. Obliczenia te służą jako dowód na to, że korelacja OP między DirectMapping a THS może być poprawna. Należy również pamiętać, że zamontowanie TYLKO fs OGROMNEJ STRONY spowodowałoby jedynie przyrost o 2 MB, podczas gdy pozwolenie systemowi na zarządzanie pamięcią za pomocą THS występuje głównie w blokach 4k, co oznacza, że pod względem zarządzania pamięcią każde wywołanie malloc ratuje system 2044k (2048 - 4 ) do użycia w innym procesie.
źródło
Aby rozwiązać problem „DirectMap”: jądro ma liniowe („bezpośrednie”) mapowanie pamięci fizycznej , niezależne od wirtualnych mapowań przydzielonych każdemu procesowi użytkownika.
Jądro używa do mapowania jak największej liczby stron, aby zmniejszyć presję TLB.
DirectMap1G jest widoczny, jeśli Twój procesor obsługuje strony 1 Gb (Barcelona wzwyż; niektóre środowiska wirtualne wyłączają je), a jeśli jest włączony w jądrze - domyślnie jest włączony dla wersji 2.6.29+.
źródło
Nie ma różnicy między
shm
itmpfs
(tak naprawdętmpfs
to tylko nowa nazwa byłegoshmfs
).hugetlbfs
totmpfs
oparty na systemie plików system, który przydziela swoją przestrzeń z ogromnych stron jądra i wymaga dodatkowego nakładu na konfigurację (sposób korzystania z tego wyjaśniono w Documentation / vm / hugetlbpage.txt ).źródło
DirectMap
naprocfs man
stronie. Dlaczego?