ご注意 perev。 :この興味深い記事は、Linuxでのスワップの目的を詳しく説明し、この点に関する一般的な誤解に対応するもので、特にFacebookのSRE Chris Downによって書かれました。 そして、彼は簡潔なTLで物語を始めます; DR ...
TL; DR
- スワップは、適切に機能するシステムの重要な部分です。 これがないと、慎重なメモリ管理を実現するのが難しくなります。
- スワップは、緊急のメモリ検索ではなく、スムーズで効率的なメモリ解放に必要です。 これを「緊急メモリ」として使用すると、一般的に非常に有害です。
- スワップを無効にしても、メモリを奪い合うときのディスクI / Oの問題からあなたを救うことはできません-ディスクI / Oは単に匿名ページからファイルページに移動します。 リリースに利用できるページのプールが小さいため、これは効果が低いだけでなく、それ自体がこの高い競争に貢献する可能性があります。
まえがき
cgroup v2, , , « » .
swap. swap , Linux . — , , , . , , : , , , , swap — - , , .
swap': « » , .
: «Linux », «swap » .. , «» swap , , — .
, Linux- , / swap
vm.swappiness
, 0.
, swap' — , Linux, , .
Linux , . — , swap .
,
(«» , 4k), , . , , , .
[page cache],
[file] .
, , , ,
malloc
MAP_ANONYMOUS
mmap
. «» — , «», —
[anon] .
: , slab-, , , — , , , , .
. «»
[reclaim] , , , .
. ,
[clean], .. , , , - .
, . ,
[dirty], .. , , .
[reclamation], , .
. , , (.. ).
swap'
, swap Linux, RAM . , , , Google «what is swap»:
« swap — ; , - , RAM. «» , , swap, , . [..] RAM , swap-».
, — « », Linux , , swap'. , swap', .
, «», , , — , . … , ?
swap. Swap — , «»
[unreclaimable], , . , , ( ), .
Swap — , « ». swap — - .
, « » ? :
- . /, «» ( ) . , .
- , . - , .
swap
swap. « »
cgroup v2.
- swap: swap , . .
- swap: swap , . , , - , .
- swap: . — , ( [thrashing]).
- swap: , .. . , . . , , / , : disk I/O - swapping' , .
- swap: , OOM killer . , .
- swap: OOM killer , . , OOMing' . — . , OOMing'. , — OOM killer . , , (.. — . .) .
, swap, ?
, cgroup v2?
, , . , ,
vm.swappiness
. :
vm.swappiness
, , , .
mlock
,
LD_PRELOAD
, . , , - ,
mlockall
, , .
cgroup v2 cgroup
memory.low
, . , swapping , . swap' , swap . swap' , , swapper'. , , «».
OOM killer. OOM killer ,
, , . , OOM killer'.
, Linux. , - , : , .. — , . Facebook,
Johannes' , , — . cgroup v2,
.
swap' ?
swap-, , , , . — , , , .
(4.0+) , swap' , . kswapd — , swap', — swap, , swap' . swapping' swap- . , 4.0+, swap swapping'. , swap , .
, , , . swap', ( ) . 2-3 swap' , ( ). , , swap' . , , swap . atop
SWAPSZ
, swap. — , ( ). , swap, .
swap'. swap , , . SSD , / , . , , , , . , swapping' , , , , .
/, swap
[hibernate], , swap- .
swappiness?
-, ,
vm.swappiness
. (sysctl), . :
file_prio
( )
anon_prio
( ).
vm.swappiness
,
anon_prio
200
file_prio
,
vm.swappiness = 50
anon_prio
50
file_prio
150 ( — ).
,
vm.swappiness
— , , . , , swap . , , swapping' . - , swap , , «» , swappiness swapping' , . SSD- ,
vm.swappiness = 100
(.. ) . swapping , .. , .
, , , , , — , . , .
vm.swappiness
,
, Satoru Moriya vmscan 2012 :
vm.swappiness = 0
.
,
vm.swappiness = 0
( ) , . , , , .
vm.swappiness = 1
— , , , .
—
vm.swappiness = 60
. , , . , « swap' ?»,
vm.swappiness
( ). ,
refault (. «refault distance-based file cache sizing» — . .), , «page refaulting» cgroup v2.
- Swap — , , . swap , , , , - .
- swap / — I/O . , , , .
- Swap OOM kill , , , . OOM killer , . :
- , (cgroup) . , Unix . refault detection.
- (, , swapping) (per-cgroup)
memory.low
, swap.