.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 1994, 1995, Daniel Quinlan <quinlan@yggdrasil.com>
.\" Copyright (C) 2002-2008, 2017, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Copyright (C) , Andries Brouwer <aeb@cwi.nl>
.\" Copyright (C) 2023, Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH proc_sys_vm 5 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
/proc/sys/vm/ \- podsystem pamięci wirtualnej
.SH OPIS
.TP 
\fI/proc/sys/vm/\fP
Ten katalog zawiera pliki sterujące zarządzaniem pamięcią, buforami i
zarządzaniem cachem.
.TP 
\fI/proc/sys/vm/admin_reserve_kbytes\fP (od Linuksa 3.10)
.\" commit 4eeab4f5580d11bffedc697684b91b0bca0d5009
Plik definiuje wielkość wolnej pamięci (w KiB) w systemie, jaka ma być
zarezerwowana dla użytkowników z przywilejem \fBCAP_SYS_ADMIN\fP.
.IP
Wartość domyślna w tym pliku jest mniejszą z [3% wolnych stron, 8MiB],
wyrażoną w KiB. Wartość ta ma być wystarczająca do zalogowania się
superużytkownika i zabicia procesu, jeśli to konieczne, przy użyciu
domyślnego trybu 'guess' overcommit (tj. 0 w
\fI/proc/sys/vm/overcommit_memory\fP).
.IP
Systemy działające w trybie \[Bq]overcommit never\[rq] (tj. 2 w
\fI/proc/sys/vm/overcommit_memory\fP) powinny zwiększyć wartość w tym pliku,
biorąc pod uwagę pełny rozmiar pamięci wirtualnej, jaką użyją programy
służące do odzyskania kontroli (np. \fBlogin\fP(1), \fBssh\fP(1) i \fBtop\fP(1)). W
innym przypadku, superużytkownik może nie być w stanie zalogować się, w celu
odzyskania systemu. Przykładowo, na architekturze x86\-64 odpowiednią
wartością jest 131072 (zarezerwowane 128MiB).
.IP
Zmiana wartości w tym pliku zaczyna być stosowana, gdy tylko aplikacja
zażąda pamięci.
.TP 
\fI/proc/sys/vm/compact_memory\fP (od Linuksa 2.6.35)
Po zapisie 1 do tego pliku wszystkie strefy są przemieszczane w ten sposób,
że \(em jeśli to możliwe \(em pamięć jest dostępna w ciągłych blokach. Efekt
tej akcji można sprawdzić za pomocą \fI/proc/buddyinfo\fP.
.IP
Obecne tylko, jeśli jądro zostało skonfigurowane z \fBCONFIG_COMPACTION\fP.
.TP 
\fI/proc/sys/vm/drop_caches\fP (od Linuksa 2.6.16)
Zapis do tego pliku powoduje zwolnienie przez jądro czystych buforów,
dentries i i\-węzłów z pamięci, powodując zwolnienie pamięci. Może być to
przydatne to testowania zarządzania pamięcią i wykonywania powtarzalnych
testów systemu plików. Zapis do tego pliku powoduje utratę zalet
buforowania, przez co może spowodować pogorszenie ogólnej wydajności
systemu.
.IP
Aby zwolnić bufor strony, proszę użyć:
.IP
.in +4n
.EX
echo 1 > /proc/sys/vm/drop_caches
.EE
.in
.IP
Aby zwolnić dentries i i\-węzły, proszę użyć:
.IP
.in +4n
.EX
echo 2 > /proc/sys/vm/drop_caches
.EE
.in
.IP
Aby zwolnić bufor strony, dentries i i\-węzły, proszę użyć:
.IP
.in +4n
.EX
echo 3 > /proc/sys/vm/drop_caches
.EE
.in
.IP
Ponieważ zapis do tego pliku nie jest destrukcyjny i brudne obiekty nie są
zwalniane, użytkownik powinien wcześniej uruchomić \fBsync\fP(1).
.TP 
\fI/proc/sys/vm/sysctl_hugetlb_shm_group\fP (od Linuksa 2.6.7)
Ten zapisywalny plik zawiera identyfikator grupy, która może alokować
pamięć, za pomocą dużych (huge) stron. Jeśli proces ma identyfikator grupy
systemu plików lub jakiś z uzupełniających identyfikatorów grup który jest
zgodny z tym ID grupy, to może alokować duże strony bez posiadania
przywileju \fBCAP_IPC_LOCK\fP; zob. \fBmemfd_create\fP(2), \fBmmap\fP(2) i
\fBshmget\fP(2).
.TP 
\fI/proc/sys/vm/legacy_va_layout\fP (od Linuksa 2.6.9)
.\" The following is from Documentation/filesystems/proc.txt
Wartość niezerowa oznacza wyłączenie nowego, 32\-bitowego rozmieszczenia
mapowania pamięci; jądro będzie używać starego (2.4) rozmieszczenia dla
wszystkich procesów.
.TP 
\fI/proc/sys/vm/memory_failure_early_kill\fP (od Linuksa 2.6.32)
.\" The following is based on the text in Documentation/sysctl/vm.txt
Kontroluje jak zabijać procesy z nienaprawialnym błędem pamięci (z reguły
2\-bitowy błąd w module pamięci), które nie mogą być obsłużone przez jądro,
wykryte w tle przez sprzęt. W niektórych przypadkach (np. jeśli strona ma
wciąż poprawną kopię na dysku), jądro obsłuży taki błąd w sposób
przezroczysty, bez wpływu na pracę aplikacji. Jednak jeśli nie istnieje
inna, zaktualizowana kopia danych, jądro zabija procesy, aby zapobiec
uszkodzeniu danych wynikłego z propagacji błędu.
.IP
Plik posiada jedną z następujących wartości:
.RS
.TP 
\fB1\fP
Wszystkie procesy, które posiadają zmapowaną uszkodzoną i nieprzeładowaną
stronę, są zabijane zaraz po wykryciu uszkodzenia. Proszę zauważyć, że nie
jest to obsługiwane dla nielicznych typów stron, takich jak wewnętrzne
przypisanie danych przez jądro lub pamięć podręczna na dysku (swap), ale
działa w przypadku większości stron użytkownika.
.TP 
\fB0\fP
Usuwana (unmap) jest uszkodzona strona i zabijane procesy tylko, gdy chcą
uzyskać dostęp do strony.
.RE
.IP
Zabicie jest wykonywane za pomocą sygnału \fBSIGBUS\fP z \fIsi_code\fP ustawionym
na \fBBUS_MCEERR_AO\fP. Procesy mogą obsłużyć tę sytuację, jeśli chcą; proszę
zapoznać się z \fBsigaction\fP(2), aby dowiedzieć się więcej.
.IP
Funkcja jest aktywna wyłącznie na architekturach/platformach z zaawansowaną,
maszynową obsługą sprawdzania i zależy od możliwości sprzętowych.
.IP
Aplikacje mogą indywidualnie przesłonić ustawienie
\fImemory_failure_early_kill\fP za pomocą operacji \fBPR_MCE_KILL\fP \fBprctl\fP(2).
.IP
Obecne tylko, jeśli jądro zostało skonfigurowane z \fBCONFIG_MEMORY_FAILURE\fP.
.TP 
\fI/proc/sys/vm/memory_failure_recovery\fP (od Linuksa 2.6.32)
.\" The following is based on the text in Documentation/sysctl/vm.txt
Włącza odzyskiwanie po błędzie pamięci (jeśli jest obsługiwane przez daną
platformę).
.RS
.TP 
\fB1\fP
Próbuje odzyskiwać.
.TP 
\fB0\fP
Zawsze panikuje przy błędzie pamięci.
.RE
.IP
Obecne tylko, jeśli jądro zostało skonfigurowane z \fBCONFIG_MEMORY_FAILURE\fP.
.TP 
\fI/proc/sys/vm/oom_dump_tasks\fP (od Linuksa 2.6.25)
.\" The following is from Documentation/sysctl/vm.txt
Włącza tworzenie ogólnosystemowego zrzutu zadania (bez wątków jądra), gdy
jądro wykonuje OOM\-killing. Zrzut zawiera następujące informacje o każdym
zadaniu (wątku, procesie): identyfikator wątku, realny identyfikator
użytkownika, identyfikator grupy wątku (identyfikator procesu), rozmiar
pamięci wirtualnej, rozmiar zestawu rezydentnego, procesor któremu
przydzielono zadanie, wynik oom_adj (patrz opis \fI/proc/\fPpid\fI/oom_adj\fP) i
nazwę polecenia. Jest to przydatne do określenia dlaczego OOM\-killer został
przywołany i zidentyfikowania zadania, które to spowodowało.
.IP
Jeśli zawiera wartość zero, ta informacja nie jest zrzucana. Zrobienie
zrzutu stanu pamięci każdego zadania może nie być wykonalne w bardzo dużych
systemach, z tysiącami zadań. Takie systemy nie powinny być zmuszane do
narażania się na dodatkowy spadek wydajności w sytuacjach braku pamięci, gdy
taka informacja nie może być przydatna.
.IP
Jeśli wartość jest niezerowa, ta informacja jest pokazywana kiedy tylko
OOM\-killer rzeczywiście zabija zadanie zajmujące dużo pamięci.
.IP
Domyślną wartością jest 0.
.TP 
\fI/proc/sys/vm/oom_kill_allocating_task\fP (od Linuksa 2.6.24)
.\" The following is from Documentation/sysctl/vm.txt
Włącza lub wyłącza zabijanie zadania kolejkującego OOM w sytuacjach braku
pamięci (Out\-Of\-Memory).
.IP
Jeśli jest ustawione na zero OOM\-killer przeskanuje całą listę zadań i do
zabicia wybierze zadania na podstawie heurystyki. Z reguły wybierane są
zadania zajmujące wiele pamięci, które zwalniają dużą ilość pamięci po
zabiciu.
.IP
Jeśli jest ustawione na wartość niezerową, OOM\-killer po prostu zabija
zadanie, które wyzwoliło stan braku pamięci. W ten sposób unika się
potencjalnie kosztownego skanowania listy zadań.
.IP
Jeśli \fI/proc/sys/vm/panic_on_oom\fP jest niezerowe, to ma ono pierwszeństwo,
niezależnie od wartości użytej w \fI/proc/sys/vm/oom_kill_allocating_task\fP.
.IP
Domyślną wartością jest 0.
.TP 
\fI/proc/sys/vm/overcommit_kbytes\fP (od Linuksa 3.14)
.\" commit 49f0ce5f92321cdcf741e35f385669a421013cb7
Ten zapisywalny plik zapewnia alternatywę do
\fI/proc/sys/vm/overcommit_ratio\fP do kontrolowania \fICommitLimit\fP gdy
\fI/proc/sys/vm/overcommit_memory\fP ma wartość 2. Pozwala na wykonanie
overcommittu ilości pamięci w jednostkach absolutnych (w kB), zamiast w
wartościach procentowych, jak to ma miejsce przy \fIovercommit_ratio\fP. W ten
sposób można osiągnąć lepszą kontrolę \fICommitLimit\fP na systemach z
ekstremalnie dużą ilością pamięci.
.IP
Tylko jeden z \fIovercommit_kbytes\fP lub \fIovercommit_ratio\fP może działać:
jeśli \fIovercommit_kbytes\fP ma wartość niezerową, to jest używane do
obliczenia \fICommitLimit\fP, w przeciwnym razie używane jest
\fIovercommit_ratio\fP. Zapisanie wartości do któregokolwiek z plików powoduje,
że wartość w drugim jest ustawiana na zero.
.TP 
\fI/proc/sys/vm/overcommit_memory\fP
Plik zawiera tryb rozliczeń pamięci wirtualnej jądra. Dopuszczalne wartości:
.RS
.IP
0: heurystyczny overcommit (domyślnie)
.br
1: zawsze robi overcommit, nigdy nie sprawdza
.br
2: zawsze sprawdza, nigdy nie robi overcommitu
.RE
.IP
W trybie 0 nie są sprawdzane wywołania \fBmmap\fP(2) z \fBMAP_NORESERVE\fP, a
domyślne sprawdzenia są bardzo słabe, prowadząc do ryzyka zabicia procesu
przez \[Bq]OOM\-killera\[rq].
.IP
W trybie 1 jądro udaje, że jest zawsze wystarczająca ilość pamięci, dopóki
pamięć faktycznie się nie wyczerpie. Jednym z zastosowań tego trybu są
naukowe aplikacje obliczeniowe, które korzystają z dużych, rozsianych
macierzy. Przed Linuksem 2.6.0, każda niezerowa wartość implikowała 1.
.IP
W trybie 2 (dostępnym od Linuksa 2.6), całkowity adres przestrzeni
wirtualnej w systemie, którą można przypisać (\fICommitLimit\fP w
\fI/proc/meminfo\fP) jest obliczany jako
.IP
.in +4n
.EX
CommitLimit = (total_RAM \- total_huge_TLB) *
	      overcommit_ratio / 100 + total_swap
.EE
.in
.IP
gdzie:
.RS
.IP \[bu] 3
\fItotal_RAM\fP jest sumą pamięci RAM w systemie;
.IP \[bu]
\fItotal_huge_TLB\fP jest sumą pamięci przeznaczoną dla dużych stron;
.IP \[bu]
\fIovercommit_ratio\fP jest wartością w \fI/proc/sys/vm/overcommit_ratio\fP i
.IP \[bu]
\fItotal_swap\fP jest wielkością przestrzeni wymiany.
.RE
.IP
Na przykład w systemie z 16 GB fizycznej pamięci RAM i 16 GB pamięci
wymiany, brakiem przestrzeni przeznaczonej na duże strony i z
\fIovercommit_ratio\fP równym 50, ta formuła daje \fICommitLimit\fP na poziomie 24
GB.
.IP
Od Linuksa 3.14, gdy wartość w \fI/proc/sys/vm/overcommit_kbytes\fP jest
niezerowa, to \fICommitLimit\fP jest obliczana w następujący sposób:
.IP
.in +4n
.EX
CommitLimit = overcommit_kbytes + total_swap
.EE
.in
.IP
Zobacz opis \fI/proc/sys/vm/admin_reserve_kbytes\fP i
\fI/proc/sys/vm/user_reserve_kbytes\fP.
.TP 
\fI/proc/sys/vm/overcommit_ratio\fP (od Linuksa 2.6.0)
Plik zapisywalny definiujący wartość procentową pamięci, na której można
wykonać overcommit. Domyślną wartością jest 50. Zob. opis
\fI/proc/sys/vm/overcommit_memory\fP.
.TP 
\fI/proc/sys/vm/panic_on_oom\fP (od Linuksa 2.6.18)
.\" The following is adapted from Documentation/sysctl/vm.txt
Włącza lub wyłącza panikę jądra w sytuacjach braku pamięci.
.IP
Jeśli plik ma ustawioną wartość 0, OOM\-killer jądra zabija któryś z
nieposłusznych procesów. Z reguły OOM\-killer jest w stanie to wykonać i
system może pracować dalej.
.IP
Jeśli plik ma ustawioną wartość 1, to jądro zwykle panikuje przy sytuacji
braku pamięci. Jednak jeśli proces limituje przydzielanie do konkretnych
węzłów używając zasad pamięci (\fBmbind\fP(2)  \fBMPOL_BIND\fP) lub cpuset
(\fBcpuset\fP(7)) i te węzły dotknie problem braku pamięci, to taki proces może
być zabity przez OOM\-killer. Nie występuje wówczas panika, ponieważ pamięć
innych węzłów może być wolna, co oznacza że system jako całość mógł nie
osiągnąć jeszcze sytuacji braku pamięci.
.IP
Jeśli ustawiono wartość 2, to jądro zawsze panikuje w sytuacji braku
pamięci.
.IP
Domyślną wartość jest 0. 1 i 2 są przeznaczone do poprawnej pracy klastrów
mimo wystąpienia problemów. Proszę wybrać właściwą z nich, zgodnie z
używanymi zasadami w takich sytuacjach.
.TP 
\fI/proc/sys/vm/swappiness\fP
.\" The following is from Documentation/sysctl/vm.txt
Wartość w tym pliku kontroluje jak agresywnie jądro przenosi strony pamięci
do pamięci wymiany (swapu). Wyższe wartości zwiększają agresywność, mniejsze
zmniejszają ją. Domyślną wartością jest 60.
.TP 
\fI/proc/sys/vm/user_reserve_kbytes\fP (od Linuksa 3.10)
.\" commit c9b1d0981fcce3d9976d7b7a56e4e0503bc610dd
Określa pamięć (w KiB) jaka ma być zarezerowana dla procesów użytkownika. Ma
to pomóc zapobiegać sytuacji, gdy użytkownik uruchomi pojedynczy zaborczy
proces zajmujący pamięć i nie będzie w stanie wyjść z tej sytuacji (zabić
zaborcy). Wartość w tym pliku działa tylko wówczas, gdy
\fI/proc/sys/vm/overcommit_memory\fP ustawiono na 2 (nigdy nie robi
overcommitu). W takim przypadku, system rezerwuje wielkość pamięci, która
jest mniejszą wartością z [3% rozmiaru bieżącego procesu,
\fIuser_reserve_kbytes\fP].
.IP
Domyślną wartością w tym pliku jest mniejsza wartość z [3% wolnych stron,
128MiB], wyrażoną w KiB.
.IP
Jeśli wartość w tym pliku wynosi zero, to użytkownik będzie mógł zaalokować
całą wolną pamięć za pomocą pojedynczego procesu (minus rozmiar
zarezerwowany przez \fI/proc/sys/vm/admin_reserve_kbytes\fP). Każda kolejna
próba wykonania polecenia spowoduje błąd \[Bq]fork: Cannot allocate
memory\[rq] (nie można zaalokować pamięci).
.IP
Zmiana wartości w tym pliku zaczyna być stosowana, gdy tylko aplikacja
zażąda pamięci.
.TP 
\fI/proc/sys/vm/unprivileged_userfaultfd\fP (od Linuksa 5.2)
.\" cefdca0a86be517bc390fc4541e3674b8e7803b0
Ten (zapisywalny) plik ujawnia znacznik kontrolujący, czy procesy
nieuprzywilejowane mogą korzystać z \fBuserfaultfd\fP(2). Jeśli plik ma wartość
1, to procesy nieuprzywilejowane mogą używać \fBuserfaultfd\fP(2). Jeśli plik
ma wartość 0, to tylko procesy z przywilejem \fBCAP_SYS_PTRACE\fP mogą używać
\fBuserfaultfd\fP(2). Wartością domyślną w tym pliku jest 1.
.SH "ZOBACZ TAKŻE"
\fBproc\fP(5), \fBproc_sys\fP(5)
.PP
.SH TŁUMACZENIE
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>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
