Ingatan

Mengoptimumkan Penggunaan Memori Linux

Mengoptimumkan Penggunaan Memori Linux
Pada bahagian pertama dari siri ini, kami telah melihat lebih dekat ruang Swap, dan bahagian kedua menguruskan alat dan perintah untuk menguruskan memori. Sekarang, kita akan membincangkan pelbagai parameter dan strategi untuk mengoptimumkan memori dan penggunaannya secara umum. Ini meliputi jumlah memori, percepatan akses, dan strategi penggunaan dalaman.

Jumlah memori

Seperti yang telah dibincangkan di bahagian pertama, keseluruhan memori disebut memori maya, dan terdiri daripada memori fizikal dan ruang pertukaran. Ketersediaan memori fizikal bergantung pada perkakasan yang terdapat di dalam mesin dan berapa banyak memori yang dapat ditangani oleh pemproses. Sebagai contoh, sistem operasi 32bit mempunyai had memori 4G, hanya (2 ^ 32bit), sedangkan sistem operasi berdasarkan 64 bit secara teori memungkinkan hingga 16 EB (2 ^ 64bit).

Batasan yang tepat adalah motherboard dengan prosesor itu sendiri, modul memori yang disokong oleh motherboard itu, dan modul memori khusus yang dipasang ke slot memori pada motherboard. Salah satu cara untuk memaksimumkan memori sistem yang tersedia adalah dengan menggunakan modul memori yang serupa dengan ukuran sebesar mungkin. Cara kedua adalah menggunakan memori Swap seperti yang telah dijelaskan di bahagian satu.

Akses memori

Seterusnya, peningkatan kelajuan akses memori dipertimbangkan. Pada mulanya, had fizikal diberikan oleh modul memori itu sendiri. Anda tidak boleh berada di bawah had fizikal perkakasan. Pada detik, ramdisk, dan pada ketiga penggunaan zRAM dapat mempercepat akses memori. Kami akan membincangkan kedua-dua teknologi ini dengan lebih terperinci.

Membuat ramdisk

Ramdisk adalah sekumpulan memori yang dikendalikan oleh sistem operasi seperti peranti fizikal untuk menyimpan data - cakera keras yang disimpan sepenuhnya dalam memori. Peranti sementara ini wujud sebaik sahaja sistem dimulakan dan mengaktifkan ramdisk, dan sistem sama ada mematikan ramdisk, atau mematikan. Perlu diingat bahawa data yang anda simpan pada ramdisk seperti itu hilang setelah mesin ditutup.

Anda boleh membuat ramdisk dinamik melalui sistem fail tmpfs, dan melalui sistem fail ramfs. Kedua-dua teknologi berbeza antara satu sama lain. Pertama, dinamik bermaksud bahawa memori untuk ramdisk dialokasikan berdasarkan penggunaannya (benar untuk kedua-dua kaedah). Selagi anda tidak menyimpan data di dalamnya, ukuran ramdisk adalah 0.

Membuat ramdisk dinamik melalui tmpfs adalah seperti berikut:

# mkdir / media / ramdisk
# mount -t tmpfs none / media / ramdisk

Membuat ramdisk dinamik melalui ramf adalah seperti berikut:

# mkdir / media / ramdisk
# mount -t ramfs ramfs / media / ramdisk

Kedua, menggunakan tmpfs dan melainkan jika dinyatakan secara jelas, ukuran ramdisk adalah terhad kepada 50% memori fizikal. Sebaliknya ramdisk berdasarkan ramf tidak mempunyai batasan seperti itu.

Membuat ramdisk dinamik melalui tmpfs dengan ukuran relatif 20% memori fizikal adalah seperti berikut:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 20% tiada / media / ramdisk

Membuat ramdisk dinamik melalui tmpfs dengan ukuran tetap memori fizikal 200M adalah seperti berikut:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 200M none / media / ramdisk

Ketiga, kedua-dua kaedah menangani pertukaran dengan cara yang berbeza. Sekiranya sistem mencapai had memori ramdisk berdasarkan tmpfs, data dari ramdisk ditukar. Ini menggagalkan idea akses cepat. Sebaliknya, sistem operasi mengutamakan kandungan dan halaman memori yang diminta dari ramdisk berdasarkan ramfs, menyimpannya dalam memori, dan menukar baki halaman memori ke cakera.

Dalam contoh di atas telah kami gunakan / media / ramdisk sebagai titik lekapan. Mengenai data biasa, satu-satunya bahagian sistem fail Linux yang disarankan untuk digunakan pada ramdisk adalah / tmp. Direktori ini menyimpan data sementara sahaja, yang tidak berterusan. Membuat ramdisk kekal yang menyimpan sistem fail / tmp memerlukan kemasukan tambahan dalam fail / etc / fstab seperti berikut (berdasarkan ramf):

ramfs / tmp ramfs lalai 0 0

Kali berikutnya anda boot sistem Linux anda, ramdisk akan diaktifkan secara automatik.

Menggunakan zRAM

zRAM bermaksud Virtual Swap Compressed dalam RAM, dan membuat peranti blok yang dimampatkan secara langsung dalam memori fizikal. zRAM mula digunakan (penggunaan) sebaik sahaja tidak ada lagi halaman memori fizikal yang tersedia di sistem. Kemudian, kernel Linux cuba menyimpan halaman sebagai data termampat pada peranti zRAM.

Pada masa ini, tidak ada pakej yang tersedia untuk Debian GNU / Linux melainkan Ubuntu. Ia dinamakan zram-config. Pasang pakej, dan siapkan peranti zRAM hanya dengan memulakan perkhidmatan systemd seperti berikut:

# systemctrl mulakan zram-config

Seperti yang diberikan oleh output pertukaran -s, peranti aktif sebagai partisi Swap tambahan. Secara automatik, ukuran 50% memori diperuntukkan untuk zRAM (lihat gambar 1). Saat ini, tidak ada cara untuk menentukan nilai yang berbeza untuk zRAM yang akan dialokasikan.

Untuk melihat lebih banyak perincian mengenai partisi swap yang dimampatkan, gunakan arahan zramctl. Gambar 2 menunjukkan nama peranti, algoritma pemampatan (LZO), ukuran partisi swap, ukuran data pada cakera dan ukurannya yang dimampatkan serta jumlah aliran mampatan (nilai lalai: 1).

Strategi penggunaan

Seterusnya, kami memberi tumpuan kepada strategi penggunaan memori. Terdapat beberapa parameter untuk mempengaruhi tingkah laku penggunaan dan pengedaran memori. Ini merangkumi ukuran halaman memori - pada sistem 64bit ia adalah 4M. Seterusnya, parameter swappiness memainkan peranan. Seperti yang telah dijelaskan di bahagian pertama, parameter ini mengendalikan bobot relatif yang diberikan untuk menukar memori runtime, berbanding dengan menjatuhkan halaman memori dari cache halaman sistem. Kita juga tidak boleh melupakan cache dan penjajaran halaman memori.

Gunakan program yang memerlukan memori yang kurang

Akhir sekali penggunaan memori bergantung pada program itu sendiri. Sebilangan besar dari mereka dihubungkan ke perpustakaan C lalai (standard LibC). Sebagai pembangun, untuk meminimumkan kod binari anda, pertimbangkan untuk menggunakan alternatif, dan perpustakaan C yang jauh lebih kecil. Contohnya, terdapat dietlibc [1], uClibc [2], dan musl lib C [3]. Laman web pemaju musl lib C mengandungi perbandingan luas [4] mengenai perpustakaan ini dari segi program C statik terkecil, perbandingan ciri dan persekitaran binaan yang sesuai, dan arkitek perkakasan yang disokong.

Sebagai pengguna, anda mungkin tidak perlu menyusun program anda. Pertimbangkan untuk mencari program yang lebih kecil dan kerangka kerja yang berbeza yang memerlukan lebih sedikit sumber. Sebagai contoh, anda boleh menggunakan XFCE Desktop Environment dan bukannya KDE atau GNOME.

Kesimpulannya

Terdapat beberapa pilihan untuk mengubah penggunaan memori menjadi lebih baik. Ini berkisar dari Tukar hingga pemampatan berdasarkan zRAM serta menyiapkan ramdisk atau memilih kerangka yang berbeda.

Pautan dan Rujukan

Siri Pengurusan Memori Linux

Ucapan terima kasih

Penulis ingin mengucapkan terima kasih kepada Axel Beckert dan Gerold Rupprecht atas sokongan mereka semasa menyiapkan artikel ini.

Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...