Kategori produk
Hubungi Kami
Tambah: 5F, Bangunan 3A, No.8 Jalan Xiyuanyi, Taman Sains Tasik Barat, Hangzhou, China
Tel: + 86-571-87858811
Mob: +8613616520351
E-mel: trade@qiyangtech.com
Berita
Rumah > Berita > Kandungan
Bagaimana Melancarkan Memori Linux Secara Secara Manual? Ambil I.mx6 Sebagai Contoh
Jul 27, 2018

Pertama, keadaan biasa

Perbualan pertama "percuma":

Petikan:

[root @ server ~] # free -m total used shared shared buffers Mem: 249 163 86 0 10 94 - / + buffer / cache: 58 191 Tukar: 511 0 511

antara mereka:

Petikan:

total jumlah ingatan, bilangan memori yang sudah digunakan, nombor memori bebas, jumlah memori proses berbilang perkongsian, saiz cakera penampan Buffer Cache dan cache Laman cache -buffers / ingatan cache: Bilangan memori yang digunakan - buffer - cache + buffer / cache free + buffer + cached memory available = memory free + buffer + cache.

Dengan asas ini, anda boleh tahu bahawa saya kini digunakan untuk 163MB, percuma untuk 86MB, penyangga dan cache ialah 10MB, 94MB.

Kemudian mari kita lihat jika terdapat sebarang perubahan dalam ingatan jika saya melaksanakan fail salin.

Petikan:

[root @ server ~] # cp -r / etc ~ / test / [root @ server ~] # free -m total used shared shared buffers cached Mem: 249 244 4 0 8 174 - / + buffers / cache: : 511 0 511

Selepas saya memerintahkan pelaksanaan akhir, digunakan untuk 244MB, percuma untuk 4MB, buffer untuk 8MB, cache untuk 174MB. Tuhan, semua telah dikuasai oleh cache. Jangan gementar, ini untuk meningkatkan kecekapan amalan membaca fail.

Untuk meningkatkan kecekapan capaian cakera, Linux telah melakukan beberapa reka bentuk yang rumit, sebagai tambahan kepada cache pemalas (untuk VFS, mempercepat penukaran nama laluan fail ke inode), juga mengambil dua cara utama Cache: Penampan

Cache dan Page Cache. Yang pertama adalah untuk blok cakera membaca dan menulis, yang terakhir adalah untuk inode fail membaca dan menulis. Cache ini dipendekkan dengan berkesan

Masa panggilan sistem I / O (seperti membaca, menulis, getdent).

Kemudian seseorang berkata selepas satu tempoh masa, linux secara automatik akan melepaskan memori yang digunakan. Tunggu beberapa lama, kami menggunakan percuma untuk mencuba sekali lagi untuk melihat sama ada terdapat pembebasan?

Petikan

[root @ server test] # free -m total used shared shared buffers Mem: 249 244 5 0 8 174 - / + buffer / cache: 61 188 Tukar: 511 0 511

Nampaknya tidak ada perubahan. (di bawah keadaan sebenar, pengurusan ingatan berkaitan dengan Swap juga)

Jadi bolehkah saya melepaskan memori secara manual? Jawapannya ya!

Kedua, secara manual mengeluarkan cache

/ proc adalah sistem fail maya, kita boleh membaca dan menulis melaluinya sebagai cara komunikasi dengan entiti kernel. Dengan kata lain, anda boleh mengubah suai fail / proc untuk membuat penyelarasan pada tingkah laku kernel semasa. Kemudian kita boleh menyesuaikan / proc / sys / vm / drop_caches untuk membebaskan memori. Operasi adalah seperti berikut:

Rujukan [root @ server test] # cat / proc / sys / vm / drop_caches 0 Pertama, nilai / proc / sys / vm / drop_caches default ke 0. Quote [root @ server test] # sync

Secara manual laksanakan perintah penyegerakan (Penerangan: perintah sync untuk menjalankan subrutin penyegerakan.Jika anda mesti menghentikan sistem, jalankan perintah penyegerakan untuk memastikan integriti sistem fail .sync

Perintah untuk menulis semua penampan sistem yang tidak tertulis ke cakera, termasuk i-nod yang diubah suai, blok tertunda I / O, dan fail pemetaan baca-tulis)

Quote [root @ server test] # echo 3> / proc / sys / vm / drop_caches [root @ server test] # cat / proc / sys / vm / drop_caches 3 set / proc / sys / vm / drop_caches to 3 quote @server test] # free -m total used free shared buffers Mem: 249 66 182 0 0 11 - / + buffer / cache: 55 194 Pertukaran: 511 0 511

Kemudian jalankan arahan percuma, anda akan mendapati semasa yang digunakan untuk 66MB, percuma untuk 182MB, buffer untuk 0MB, cache ke 11MB. Oleh itu ia adalah pembebasan berkesan penimbal dan cache.

Penggunaan / proc / sys / vm / drop_caches diterangkan di bawah

Quote / proc / sys / vm / drop_caches (sejak Linux 2.6.16) Menulis ke fail ini menyebabkan kernel menjatuhkan cache bersih, penyihir dan inode dari memori, menyebabkan memori menjadi bebas. Untuk membebaskan pagecache, gunakan echo 1> / proc / sys / vm / drop_caches; untuk membuang gigi dan inode percuma, gunakan echo 2> / proc / sys / vm / drop_caches; untuk membebaskan pagecache, dentries dan inodes, gunakan echo 3> / proc / sys / vm / drop_caches. Kerana ini adalah operasi tidak merosakkan dan objek kotor tidak boleh dibebaskan, pengguna harus menjalankan penyegerakan terlebih dahulu.

Ketiga, pendapat saya

Artikel di atas telah memberikan jawapan yang lebih "intuitif" untuk soalan pengurusan memori Linux oleh banyak pengguna selama bertahun-tahun, saya merasa sedikit seperti kompromi pasukan pembangunan teras.

Saya mempunyai tempahan tentang sama ada saya perlu menggunakan nilai ini atau menyebut nilai kepada pengguna:

Petikan

1, boleh dilihat dari lelaki itu, nilai ini diberikan selepas versi teras 2.6.16, iaitu versi lama sistem operasi, seperti bendera merah DC 5.0, verison sebelum RHEL 4.x tidak mempunyai ini ;

2, jika memori sistem cukup untuk pemerhatian, saya masih berhasrat untuk melihat penggunaan swap dan saiz dua nilai si / jadi;

Soalan biasa pengguna adalah, mengapa percuma begitu kecil, sama ada ingatan tidak dilepaskan selepas menutup aplikasi itu?

Tetapi pada hakikatnya, kita semua tahu bahawa ini adalah kerana Linux berbeza dari Windows pada pengurusan memori, kecil yang kecil bukanlah memori yang tidak mencukupi, anda harus melihat nilai terakhir baris kedua yang bebas:

Petikan

- / + buffer / cache: 58 191

Inilah jumlah memori yang ada pada sistem.

Projek sebenar memberitahu kami bahawa jika aplikasi mempunyai masalah seperti kebocoran ingatan, masalah limpahan, ia dapat lebih cepat untuk menilai dari penggunaan swap, tetapi di atas bebas lebih sulit untuk dilihat.

Sebaliknya, pada masa ini, jika kita memberitahu pengguna untuk mengubah suai sistem nilai, "boleh" melepaskan memori, percuma akan menjadi lebih besar. Apa pendapat pengguna? Tidakkah mereka fikir sistem operasi "mempunyai masalah"?

Oleh itu, kerana teras dengan cepat dapat membersihkan penimbal atau cache, ia tidak sukar dilakukan (yang dapat dilihat dari operasi di atas), tetapi terasnya tidak melakukannya (default adalah 0), kita tidak perlu mengubahnya ia secara santai.

Di bawah keadaan biasa, aplikasi itu tetap beroperasi pada sistem, dan nilai percuma akan kekal pada nilai stabil, walaupun ia mungkin kelihatan lebih kecil.

Apabila terdapat memori yang tidak mencukupi, permohonan itu tidak boleh mendapat memori yang tersedia, ralat OOM dan isu-isu lain, mungkin kita harus lebih banyak untuk menganalisis sebab-sebab aplikasi tersebut, seperti jumlah pengguna terlalu besar yang menyebabkan kekurangan memori, aplikasi limpahan ingatan, jika tidak, jelas penimbal untuk memaksa Membebaskan saiz bebas, oleh itu, ia mungkin hanya meletakkan masalah pada perisai sementara.

Oleh itu, saya fikir, tidak termasuk kekurangan ingatan, kecuali dalam peringkat pembangunan perisian, kita perlu membersihkan penimbal sementara untuk menentukan penggunaan penggunaan memori; atau aplikasi tidak lagi menyediakan sokongan, walaupun permohonan itu mempunyai masalah untuk ingatan, dan Tidak dapat mengelakkan kes itu, kita hanya dapat mempertimbangkan pembersihan waktu penyangga. (Malangnya, aplikasi seperti biasanya dijalankan pada versi sistem operasi lama, operasi di atas tidak boleh diselesaikan juga).


QY-IMX6-V.jpg

  • Newsletter
  • Kategori produk
  • Hubungi Kami
    Tambah: 5F, Bangunan 3A, No.8 Jalan Xiyuanyi, Taman Sains Tasik Barat, Hangzhou, China
    Tel: + 86-571-87858811
    Mob: +8613616520351
    E-mel: trade@qiyangtech.com
  • QR Code
  • Hakcipta © Zhejiang Qiyang Intelligent Technology Co., Ltd Hak Cipta Terpelihara.