proc_pid_smaps(5) File Formats Manual proc_pid_smaps(5)

/proc/pid/smaps - nikt nie wie, skąd w „smaps” wzięło się „s”

/proc/pid/smaps (od Linuksa 2.6.14)
Plik ten pokazuje zużycie pamięci dla każdego mapowania procesu (polecenie pmap(1) wyświetla podobne informacje, w postaci która może być łatwiejsza do przetwarzania). Dla każdego takiego mapowania pokazana jest lista następujących linii:

00400000-0048a000 r-xp 00000000 fd:03 960637       /bin/bash
Size:                552 kB
Rss:                 460 kB
Pss:                 100 kB
Shared_Clean:        452 kB
Shared_Dirty:          0 kB
Private_Clean:         8 kB
Private_Dirty:         0 kB
Referenced:          460 kB
Anonymous:             0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB
ProtectionKey:         0
VmFlags: rd ex mr mw me dw

Pierwsza z tych linii pokazuje te same informacje o mapowaniach, co w /proc/pid/maps. Kolejne linie zawierają rozmiar mapowania, ilość mapowań obecnych w RAM („Rss”), proporcjonalny udział procesu w tym mapowaniu („Pss”), liczbę czystych i brudnych stron współdzielonych w mapowaniu oraz liczbę czystych i brudnych prywatnych stron w mapowaniu. „Referenced” oznacza pamięć która jest oznaczona jako pamięć do której ktoś odnosi się lub uzyskuje dostęp. „Anonymous” pokazuje pamięć nienależącą do żadnego pliku. „Swap” pokazuje jak dużo pamięci która byłaby anonimowa jest również używana, lecz w pamięci wymiany.
Wiersz „KernelPageSize” (dostępny od Linuksa 2.6.29) jest rozmiarem strony używanym przez jądro do wirtualnej przestrzeni pamięci. Jest on w większości przypadków takim sam, jak rozmiar używany przez MMU. Wyjątek występuje na jądrach PPC64, gdy jądro korzystając z podstawowego rozmiaru strony w wielkości 64 kB może wciąż używać 4 kB stron dla MMU na starszych procesorach. Aby rozróżnić oba atrybuty, wiersz „MMUPageSize” (również dostępny od Linuksa 2.6.29) raportuje rozmiar strony używany przez MMU.
„Locked” wskazuje, czy mapowanie jest zablokowane w pamięci czy nie.
Wiersz „ProtectionKey” (dostępny od Linuksa 4.9, tylko na architekturze x86) zawiera klucz ochrony pamięci (zob. pkeys(7)) związany z obszarem pamięci wirtualnej. Wpis ten jest obecny tylko, gdy jądro zbudowano z opcją konfiguracyjną CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS (od Linuksa 4.6).
Wiersz „VmFlags” (dostępny od Linuksa 3.8) reprezentuje flagi jądra związane z danych obszarem pamięci wirtualnej (VMA) zakodowanym za pomocą poniższych dwuliterowych kodów:
rd - do odczytu (readable)
wr - do zapisu (writable)
ex - wykonywalny (executable)
sh - dzielony (shared)
mr - mogący odczytywać (may read)
mw - mogący zapisywać (may write)
me - mogący wykonywać (may execute)
ms - mogący dzielić (may share)
gd - segment stosu rośnie w dół (grows down)
pf - surowy zakres PFN
dw - wyłączony zapis do zmapowanego pliku (disabled write)
lo - strony są zablokowane w pamięci (locked)
io - obszar wejścia/wyjścia zmapowany do pamięci (I/O)
sr - dostarczono wskazówkę odczytu sekwencyjnego (sequential read)
rr - dostarczono wskazówkę odczytu losowego (random read)
dc - bez kopiowania obszaru przy rozgałęzieniu — forkowaniu (don't copy)
de - bez rozszerzania obszaru przy ponownym mapowaniu (don't expand)
ac - obszar jest księgowalny (area accountable)
nr - przestrzeń wymiany nie jest zarezerowana dla tego obszaru (not reserved)
ht - obszaru używa dużych stron tlb (huge tlb)
sf - wykonuje synchroniczne chybienia stron (synchronous faults; od Linuksa 4,15)
nl - mapowanie nieliniowe (non-linear; usunięte w Linuksie 4.0)
ar - znacznik zależny od architektury
wf - wyczyść przy rozgałęzieniu (wipe on fork; od Linuksa 4.14)
dd - nie włączaj obszaru do zrzutu pamięci (don't dump)
sd - znacznik soft-dirty (od Linuksa 3.13)
mm - obszar mapowania mieszanego (mixed map)
hg - znacznik wskazówki dużej strony (huge)
nh - znacznik wskazówki braku dużej strony (no-huge)
mg - znacznik wskazówki łączenia (mergeable)
um - śledzenie brakujących stron userfaultfd (od Linuksa 4.3)
uw - śledzenie stron wprotect userfaultfd (od Linuksa 4.3)
Plik /proc/pid/smaps istnieje tylko jeśli podczas kompilacji jądra włączono opcję CONFIG_PROC_PAGE_MONITOR.

proc(5)

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

2 maja 2024 r. Linux man-pages 6.9.1