Ringkasan
Sistem · Sistem pengendalian · Perkakasan · Laporan teknikalWindows · Linux · macOS · Android
Ringkasan eksekutif · taklimat satu halaman
Swap ialah keadilan tuntutan semula, bukan memori kecemasan
Lima platform, satu mekanisme. Memori anonim — segala yang diperuntukkan oleh sesuatu proses — ialah satu-satunya kelas halaman yang tidak boleh dituntut semula oleh kernel tanpa tempat untuk meletakkannya. Jadi sistem tanpa swap bukannya menghapuskan tekanan memori; ia mengalihkan kesemuanya ke cache halaman dan kod boleh laku, yang kemudiannya dibaca semula daripada cakera berulang-ulang kali. Setiap platform utama kini menjawabnya dengan cara yang sama: mampatkan dalam RAM dahulu, dan sentuh storan kekal hanya apabila pemampatan sudah habis. Windows menamakannya Memory Compression, macOS pula compressor pager, Linux dan Android menamakannya ZRAM — tetapi bentuknya serupa, dan pertukarannya sentiasa satu yang sama: kapasiti yang dibeli dengan kitaran CPU. Apa yang masih memisahkan kelima-limanya adalah sempit, dan hanya tiga perkara yang penting.
Dalam Angka pemampatan & ketahanan
- ~40%jejak termampat sesebuah halaman (angka era Windows 10)
- 3:1nisbah pemampatan ZRAM Linux yang tipikal
- 2.4 PBtulisan yang diserap oleh SSD pengguna yang paling lama bertahan
- 16.4 yrhayat pemacu 600 TBW yang ditulis 100 GB setiap hari
Hanya Tiga Paksi yang Penting selebihnya hanyalah perincian
| Paksi | Soalan yang diajukannya | Mengapa ia menentukan reka bentuk |
|---|---|---|
| Lapisan kekal | Adakah swap yang disokong storan wujud sama sekali? | Sesetengah pelaksanaan Android hanya mengubah saiz ZRAM — tiada lapisan kedua untuk dilimpahi. |
| Hibernasi | Bolehkah lapisan itu menyimpan imej suspend-to-disk? | Satu-satunya garis pemisah fungsian yang tegas: lapisan termampat dalam RAM dikosongkan ketika but, jadi ia tidak akan mampu. |
| Jangkauan operator | Berapa banyak jentera yang didedahkan? | Windows dan macOS pada dasarnya automatik; Linux mendedahkan tombolnya; Android mendedahkan satu peluncur. |
Apa yang Menyusul Permulaan · Perkembangan · Peralihan · Penyelesaian
| Rentak | Halaman | Apa yang dirangkuminya |
|---|---|---|
| 承 Konteks | 2 | Bentuk dua lapisan yang menjadi titik pertemuan setiap platform, bersebelahan, dan mengapa swap masih layak pada tempatnya. |
| 轉 Pangsi | 3 | Di mana reka bentuk ini bertahan dan di mana ia tegang — termasuk dakwaan vendor yang mana bertahan apabila diukur. |
| 合 Resolusi | 4 | Laluan yang sebenarnya dilalui oleh sesebuah halaman, tombol yang wujud, dan apa yang perlu dilakukan pada setiap platform. |
Kesimpulannya
Melumpuhkan swap tidak mengelakkan I/O cakera di bawah tekanan memori — ia memindahkan thrashing itu daripada halaman anonim kepada cache halaman dan teks program, yang biasanya lebih teruk.
Bingkai semula
Kedalaman swap yang berterusan ialah isyarat saiz, bukan masalah penalaan. Penyelesaiannya ialah lebih banyak RAM, bukan lebih banyak swap.
Konteks · Kandungan 1 / 3
Dua Lapisan, Lima Nama bentuk yang menjadi titik pertemuan semua
Lapisan satu · dalam RAM
Lapisan Termampat
- Windows Memory Compression — Xpress-Huffman, ke dalam stor yang disimpan di dalam proses System.
- macOS compressor pager — WKdm; itulah yang membolehkan Apple menghantar konfigurasi RAM yang lebih rendah.
- Linux ZRAM / zswap — zstd, lzo atau lz4, lazimnya sekitar 3:1.
- Android ZRAM — sentiasa barisan pertahanan pertama, sebelum sebarang storan disentuh.
Lapisan dua · pada storan
Lapisan Kekal
- Windows
pagefile.sys;swapfile.sysyang berasingan memindahkan keseluruhan set kerja aplikasi yang digantung dalam satu I/O. - Partisyen atau fail pada Linux — setara dari segi fungsi; fail menukar satu pemetaan sistem fail dengan kelenturan.
- Fail swap dinamik macOS pada volum APFS VM khusus sejak Big Sur.
- Android — fail swap UFS yang pilihan; inilah sebenarnya “RAM lanjutan” OEM itu.
- Windows
Platform demi Platform mekanisme sama, pendedahan berbeza
| Teknologi | Backend | Hibernasi | Termampat |
|---|---|---|---|
| Pagefile Windows | fail pada NTFS | imej berasingan | ya — Xpress-Huffman |
| Swapfile Windows | fail, aplikasi moden sahaja | tidak | ya — stor setiap aplikasi |
| Partisyen Linux | partisyen mentah | ya | tidak — gandingkan dengan zswap |
| Swapfile Linux | fail pada sistem fail | ya, dengan ofset | tidak — gandingkan dengan zswap |
| Linux ZRAM | peranti blok dalam RAM | tidak sekali-kali | ya — itulah tujuannya |
| Swap dinamik macOS | volum VM APFS | ya | ya — WKdm |
| Android ZRAM | peranti blok dalam RAM | tidak sekali-kali | ya — lz4 / zstd |
| RAM lanjutan Android | swapfile pada UFS | tidak | melalui ZRAM dahulu |
Mengapa Swap Masih Layak pada Tempatnya prosa di kiri · angka di kanan
Halaman yang disokong fail boleh digugurkan dan dibaca semula; halaman anonim tiada tempat untuk pergi. Tanpa swap ia sekadar tidak boleh dituntut semula, jadi kernel terpaksa mengambil setiap bait yang diperlukannya daripada cache halaman dan teks program sebaliknya. Itulah sebabnya hujah terkuat bagi swap bukan kapasiti tetapi simetri: ia menjadikan kedua-dua kelas halaman sama-sama layak dituntut semula, dan membiarkan kernel mengusir mana-mana yang benar-benar lebih sejuk. Sokongan itu bersifat institusi, bukan retorik — halaman manual systemd-oomd sendiri memetik hujah ini dan menyatakan bahawa swap patut dihidupkan agar ia berfungsi dengan baik, kerana sistem tanpa swap mencapai livelock dengan lebih cepat dan melaparkan pembunuh ruang pengguna yang sepatutnya menyelamatkannya.
- 2kelas halaman yang sama-sama boleh dituntut semula
- 4.20+kernel dengan PSI — tekanan kelihatan sebelum pembunuh OOM
Pangsi · Kandungan 2 / 3
Di Mana Ia Bertahan, Di Mana Ia Tegang empat dimensi
| Dimensi | Bertahan | Tegang |
|---|---|---|
| Hibernasi | partisyen atau fail sebenar boleh menyimpan imej itu | lapisan termampat dalam RAM dikosongkan ketika but — ia tidak akan mampu menggantikannya |
| Ketahanan flash | enam SSD pengguna semuanya melebihi taraf masing-masing, satu sehingga 2.4 PB | eMMC gred rendah dan tulisan pelayan yang berterusan masih perlu dijaga |
| Dakwaan vendor | menyiasat sistem fail menyelesaikannya — sesetengahnya memang menambah lapisan sebenar | “8 GB + 8 GB = 16 GB” ialah pemasaran, bukan aritmetik |
| Mencampurkan lapisan | setiap lapisan kukuh apabila digunakan bersendirian | ZRAM di sebelah swap cakera mengundang penyongsangan LRU |
Apa yang Sebenarnya Dilakukan oleh Peluncur Android diselesaikan dengan penyiasatan, bukan dengan prosa
| Kelakuan | Apa yang berubah apabila anda menggerakkan peluncur | Kos |
|---|---|---|
| Sasaran ZRAM sahaja | Tiada partisyen dan tiada kawasan swap yang berubah — hanya berapa banyak RAM yang diberikan kepada lapisan termampat. | CPU |
| Swap storan sebenar | Ruang bebas pada partisyen data berkurang tepat sebanyak jumlah yang diminta, sementara kolam ZRAM kekal tidak berubah. | tulisan UFS |
| Dua nama, satu perkara | Penjenamaan penjadual dan pengoptimuman memori bukan swap; hanya peluncur GB itu sahaja. | kekeliruan |
| Bawah 4 GB RAM | Benar-benar berguna — lebih banyak aplikasi latar belakang terus hidup dan bukannya dibunuh lalu dimuatkan semula. | berbaloi |
| 12 GB RAM ke atas | Jarang dicapai dalam penggunaan harian; pengulas melaporkan animasi yang lebih lancar apabila ia dimatikan. | bingkai tergugur |
Persoalan Ketahanan, Diselesaikan prosa di kiri · angka di kanan
Ketakutan bahawa swap akan menghauskan pemacu ialah bantahan yang paling berkekalan, dan ia sebahagian besarnya sudah terjawab. Dalam eksperimen jangka panjang yang paling terkenal, enam SSD pengguna ditulis sehingga mati: kegagalan pertama datang melepasi 700 TB, dan yang terakhir bertahan menyerap 2.4 PB — setiap pemacu jauh melebihi ketahanan tarafnya. Vendor menyatakan dengan jelas bahawa angka taraf menandakan penghujung waranti, bukan titik kegagalan. Aritmetiknya menjadikannya nyata: pemacu 600 TBW yang ditulis 100 GB setiap hari bertahan lebih daripada enam belas tahun, dan hampir tiada sesiapa menulis sebanyak itu. Dua kes masih wajar dijaga — eMMC gred rendah dalam telefon bajet, dan pelayan di bawah beban tulisan berat yang berterusan, yang sepatutnya ditentukan mengikut taraf tulisan harian dan bukannya kapasiti.
- 6 / 6pemacu yang melebihi tarafnya
- 2kes yang masih memerlukan perhatian
Titik Perubahan kronologi
- 2015Satu eksperimen ketahanan jangka panjang tamat: setiap SSD pengguna yang diuji melebihi tarafnya, yang pertama hanya gagal selepas melepasi 700 TB.
- 2015Windows 10 menyisipkan Memory Compression antara aktiviti penghalamanan dengan pagefile, mengurangkan kira-kira separuh tulisan halaman ke cakera.
- 2018Hujah keadilan tuntutan semula diterbitkan, membingkai semula swap daripada rizab kecemasan kepada mekanisme rutin.
- 2018PSI mendarat dalam kernel, membolehkan ruang pengguna bertindak atas masa tersekat sebelum pembunuh OOM sempat berjalan.
- 2020macOS memindahkan swap ke volum APFS tersembunyi yang khusus dan berkongsi ruang secara dinamik dengan sistem.
- 2020→Sebuah distribusi arus perdana menghantar ZRAM secara lalai dan dengan sengaja sebagai satu-satunya peranti swap, mengelakkan penyongsangan yang diundang oleh pencampuran lapisan.
- 2021→OEM Android menghantar peluncur “RAM lanjutan” — sesetengahnya hanya mengubah saiz ZRAM, yang lain benar-benar menulis ke storan.
Resolusi · Kandungan 3 / 3
Laluan yang Dilalui Sesebuah Halaman enam langkah, mengikut urutan
- 01Residendalam RAM
- 02Mampatmasih dalam RAM
- 03Limpahke cakera atau UFS
- 04TekananPSI melaporkan tersekat
- 05Bertindak awalOOM ruang pengguna
- 06Tambah RAMpenyelesaian sebenar
Tombol yang Benar-benar Wujud Linux · nilai lalai dalam kurungan
| Tombol | Apa yang dikawalnya | Bila perlu mengubahnya |
|---|---|---|
| vm.swappiness (60) | Sejauh mana memori anonim sanggup dihantar ke swap berbanding menuntut semula cache halaman. | Naikkannya melebihi 100 apabila swap lebih pantas daripada sistem fail, seperti dengan ZRAM. |
| vm.vfs_cache_pressure (100) | Sejauh mana agresifnya cache direktori dan inod dituntut semula berbanding cache halaman. | Jarang. Menetapkannya kepada sifar mengundang pembunuh kehabisan memori. |
| vm.watermark_scale_factor (10) | Bila tuntutan semula latar belakang terjaga, dan berapa banyak yang dibebaskannya setelah terjaga. | Naikkannya untuk mengekalkan lebih banyak memori bebas pada mesin yang terdedah kepada lonjakan peruntukan mengejut. |
| Sifat LMKD Android | Ambang swap bebas dan thrashing yang menentukan proses mana yang dibunuh, dan bila. | Root sahaja, dan mengikut peranti — pembunuh dalam kernel telah dibuang bertahun-tahun lalu. |
Dua Pendirian, Bukan Lima siapa yang menentukan — vendor, atau anda
Windows · macOS
Biarkan Sahaja
- Pemampatan dan limpahan bersepadu serta automatik; tiada penalaan yang perlu dibuat.
- Melumpuhkan fail halaman mengorbankan longgokan ranap dan merendahkan siling komit — pertukaran yang buruk.
- Pada macOS, melumpuhkan swap bermakna melemahkan perlindungan sistem; jawapannya ialah lebih banyak RAM.
- Perhatikan penunjuk tekanan, bukan angka swap.
Linux · Android
Pilih dengan Sengaja
- Tentukan lapisannya dahulu — hibernasi atau tidak — kemudian tetapkan saiznya.
- Sistem fail copy-on-write mengenakan kekangan sebenar pada fail swap; ikut prosedur mereka sendiri.
- Gandingkan pemantauan tekanan dengan pembunuh ruang pengguna, jika tidak tiada apa-apa yang bertindak sehingga mesin tersekat.
- Pada telefon, tafsirkan peluncur itu sebagai dail aplikasi latar belakang yang berkos pada kadar bingkai.
Saranan mengikut platform
- Windows — biarkan pagefile diurus oleh sistem. Melumpuhkannya demi menuntut semula beberapa GB melepaskan longgokan ranap dan boleh menggoyahkan mesin; kehausan SSD bukan pertimbangan yang nyata.
- Linux — pilih satu lapisan, bukan kedua-duanya. ZRAM pada separuh RAM dengan zstd untuk desktop; partisyen atau fail sebenar sekurang-kurangnya sebesar RAM jika anda berhibernasi. Jangan sekali-kali menjalankan ZRAM di sebelah swap cakera.
- Pelayan Linux — gandingkan PSI dengan daemon OOM ruang pengguna. Tanpanya, pembunuh kernel hanya menyala selepas mesin sudah pun tersekat.
- Android — hidupkannya pada 4 GB, matikannya pada 12 GB. Storan beberapa peringkat magnitud lebih perlahan daripada RAM, dan pada telefon perdana kos yang dilaporkan ialah bingkai tergugur.
Di mana ia berlabuh
Tanya tiga soalan sahaja: adakah anda memerlukan hibernasi, adakah anda mencampurkan lapisan, dan adakah kedalaman swap memberitahu anda untuk membeli RAM? Selebihnya hanyalah perincian.