Artikel ini memperkenalkan prinsip dan operasi praktikal mekanisme memori Linux, pertukaran memori maya, pelepas penimbal/cache, dsb.
1. Apakah mekanisme memori Linux?
2. Bilakah Linux mula menggunakan memori maya (swap)?
3. Bagaimana untuk melepaskan ingatan? 4. Bagaimana untuk melepaskan swap?
Kami tahu bahawa membaca dan menulis data secara langsung dari memori fizikal adalah jauh lebih cepat daripada membaca dan menulis data dari cakera keras Oleh itu, kami berharap semua pembacaan dan penulisan data selesai dalam ingatan, dan ini adalah terhad membawa kepada konsep ingatan fizikal dan ingatan maya.
Memori fizikal ialah saiz memori yang disediakan oleh perkakasan sistem. Berbanding dengan memori fizikal, terdapat satu konsep memori maya di bawah Linux penggunaan Sekeping memori logik yang dimayakan oleh ruang cakera Ruang cakera yang digunakan sebagai memori maya dipanggil ruang swap.
Sebagai lanjutan memori fizikal, Linux akan menggunakan memori maya partition swap apabila memori fizikal tidak mencukupi Secara lebih khusus, kernel akan menulis maklumat blok memori yang tidak digunakan buat sementara waktu ke ruang swap memori Dikeluarkan, memori ini boleh digunakan untuk tujuan lain Apabila kandungan asal diperlukan, maklumat akan dibaca dari ruang swap ke dalam ingatan fizikal semula.
Pengurusan memori Linux menggunakan mekanisme capaian paging Untuk memastikan memori fizikal dapat digunakan sepenuhnya, kernel secara automatik akan menukar blok data yang jarang digunakan dalam memori fizikal kepada memori maya pada masa yang sesuai, manakala blok data yang kerap digunakan akan menjadi. ditukar secara automatik ke dalam memori maya pada masa yang sesuai Maklumat yang digunakan disimpan ke memori fizikal.
Untuk mempunyai pemahaman yang mendalam tentang mekanisme pengendalian memori Linux, anda perlu mengetahui aspek berikut:
Sistem Linux akan melakukan operasi swap halaman dari semasa ke semasa untuk mengekalkan sebanyak mungkin memori fizikal percuma, walaupun tiada apa-apa. yang memerlukan memori, Linux Halaman memori yang tidak digunakan buat sementara waktu juga akan ditukar keluar. Ini mengelakkan masa yang diperlukan untuk menunggu pertukaran.
Pertukaran halaman dalam Linux adalah bersyarat Tidak semua halaman ditukar kepada memori maya apabila tidak digunakan Kernel Linux hanya menukar beberapa fail halaman yang jarang digunakan berdasarkan algoritma "yang paling baru digunakan". fenomena ini: Linux masih mempunyai banyak memori fizikal, tetapi banyak ruang swap juga digunakan. Sebenarnya, ini tidak menghairankan Sebagai contoh, apabila proses yang menduduki banyak memori perlu menggunakan banyak sumber memori semasa berjalan, beberapa fail halaman yang tidak biasa akan ditukar ke memori maya, tetapi kemudian proses ini yang menduduki banyak. sumber memori akan ditukar Apabila proses tamat dan banyak memori dikeluarkan, fail halaman yang baru ditukar tidak akan ditukar secara automatik ke dalam memori fizikal Melainkan ini perlu, memori fizikal sistem akan menjadi lebih bebas pada masa ini, dan ruang swap juga sedang digunakan Fenomena yang baru disebut berlaku. Tiada apa yang perlu dirisaukan pada ketika ini, cuma tahu apa yang berlaku.
Halaman dalam ruang swap mula-mula akan ditukar kepada memori fizikal apabila digunakan Jika tidak ada memori fizikal yang mencukupi untuk memuatkan halaman ini pada masa ini, ia akan ditukar dengan serta-merta. Akibatnya, ruang mungkin tidak mencukupi dalam memori maya untuk menyimpan Halaman pertukaran ini akhirnya akan menyebabkan masalah seperti ranap palsu dan keabnormalan perkhidmatan dalam Linux Walaupun Linux boleh pulih dengan sendirinya dalam tempoh masa, sistem yang dipulihkan pada dasarnya tidak boleh digunakan.
Oleh itu, adalah sangat penting untuk merancang dan mereka bentuk penggunaan memori Linux dengan betul
Dalam sistem pengendalian Linux, apabila aplikasi perlu membaca data dalam fail, sistem pengendalian mula-mula memperuntukkan beberapa memori dan membaca data daripada. cakera. Walau bagaimanapun, jika terdapat sejumlah besar data yang perlu dibaca dari cakera ke memori atau ditulis dari memori ke cakera, prestasi baca dan tulis sistem menjadi sangat rendah, kerana sama ada ia membaca data daripada cakera atau menulis data ke cakera, ia adalah satu tugas yang sangat sukar yang memakan masa dan sumber Dalam kes ini, Linux memperkenalkan penampan dan mekanisme cache.
Buffer dan cache adalah kedua-dua operasi memori, digunakan untuk menyimpan fail dan maklumat atribut fail yang telah dibuka oleh sistem Dengan cara ini, apabila sistem pengendalian perlu membaca fail tertentu, ia akan terlebih dahulu mencari dalam buffer dan kawasan memori cache . Jika ditemui, ia akan dibaca secara langsung Jika data yang diperlukan tidak dijumpai, ia akan dibaca dari cakera Ini adalah mekanisme caching sistem pengendalian. Tetapi kandungan penimbal dan penimbal cache adalah berbeza.
Penimbal digunakan untuk menimpan peranti menyekat Ia hanya merekodkan metadata sistem fail dan menjejak halaman dalam penerbangan, manakala cache digunakan untuk menimpan fail. Untuk meletakkannya dengan lebih mudah: penimbal digunakan terutamanya untuk menyimpan kandungan direktori, atribut fail dan kebenaran, dsb. Cache digunakan secara langsung untuk mengingati fail dan program yang telah kami buka.
Untuk mengesahkan sama ada kesimpulan kami betul, anda boleh membuka fail yang sangat besar melalui vi untuk melihat perubahan dalam cache, dan kemudian vi fail sekali lagi untuk merasakan persamaan dan perbezaan dalam kelajuan membukanya dua kali, dan sama ada ia adalah kali kedua ia dibuka dengan ketara lebih cepat daripada kali pertama? Kemudian laksanakan arahan berikut:
find / -name .conf untuk melihat sama ada nilai penimbal berubah, dan kemudian laksanakan arahan find berulang kali untuk melihat perbezaan kelajuan paparan antara dua masa.
[root@wenwen ~]# cat /proc/sys/vm/swappiness 60
60 di atas bermakna swap akan digunakan apabila 40% daripada memori fizikal digunakan (rujuk maklumat rangkaian: apabila baki memori fizikal kurang daripada 40% (40=100-60), ruang swap akan digunakan) Apabila swappiness=0, ia bermakna bahawa memori fizikal digunakan pada tahap maksimum, dan kemudian ruang swap Apabila swappiness=100, ia bermakna bahawa partition swap digunakan secara aktif, dan data pada. ingatan dialihkan ke ruang swap tepat pada masanya.
Semakin besar nilai, semakin besar kemungkinan anda menggunakan swap. Ia boleh ditetapkan kepada 0, yang tidak melarang penggunaan swap, tetapi hanya meminimumkan kemungkinan menggunakan swap.
通常情况下:swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。
B.修改swappiness参数
临时性修改: [root@wenwen ~]# sysctl vm.swappiness=10 vm.swappiness = 10 [root@wenwen ~]# cat /proc/sys/vm/swappiness 10
永久性修改:
[root@wenwen ~]# vim /etc/sysctl.conf 加入参数: vm.swappiness = 35 然后在直接: [root@wenwen ~]# sysctl -p /etc/sysctl.conf 查看是否生效: cat /proc/sys/vm/swappiness 35
立即生效,重启也可以生效。
一般系统是不会自动释放内存的关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:
0 – 不释放1 – 释放页缓存2 – 释放dentries和inodes3 – 释放所有缓存
实操:
很明显多出来很多空闲的内存了吧
Prasyarat: Pertama sekali, pastikan memori yang tinggal lebih besar daripada atau sama dengan penggunaan swap, jika tidak, ia akan ranap! Mengikut mekanisme memori, sebaik sahaja partition swap dikeluarkan, semua fail yang disimpan dalam partition swap akan dipindahkan ke memori fizikal. Melepaskan swap biasanya dicapai dengan memasang semula partition swap.
a. Periksa di mana partition swap semasa dipasang? b. Matikan partition ini c. Periksa sama ada partition swap dimatikan. e
Atas ialah kandungan terperinci Mekanisme memori Linux dan pelepasan manual swap, penimbal dan cache. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!