Penyimpanan

Mengoptimalkan Penggunaan Memori Linux

Mengoptimalkan Penggunaan Memori Linux
Di bagian pertama dari seri ini, kami melihat lebih dekat pada ruang Swap, dan bagian kedua membahas alat dan perintah untuk mengelola memori. Sekarang, kita akan membahas berbagai parameter dan strategi untuk mengoptimalkan memori dan penggunaannya secara umum. Ini mencakup jumlah memori, percepatan akses, dan strategi penggunaan internal.

Jumlah memori

Seperti yang telah dibahas di bagian satu, seluruh memori disebut memori virtual, dan terdiri dari memori fisik dan ruang swap. Ketersediaan memori fisik tergantung pada perangkat keras yang dibangun ke dalam mesin serta berapa banyak memori yang dapat ditangani oleh prosesor, sebenarnya. Sebagai contoh, sistem operasi 32bit memiliki batas memori 4G, hanya (2^32bit), sedangkan sistem operasi berbasis 64bit secara teoritis memungkinkan hingga 16 EB (2^64bit).

Tepatnya batasannya adalah motherboard dengan prosesor itu sendiri, modul memori yang didukung oleh motherboard itu, dan modul memori khusus yang dicolokkan ke slot memori pada motherboard. Salah satu cara untuk memaksimalkan memori yang tersedia dari sistem adalah dengan menggunakan modul memori serupa yang memiliki ukuran sebesar mungkin. Cara kedua adalah dengan menggunakan memori Swap seperti yang sudah dijelaskan di bagian satu.

Akses memori

Selanjutnya, peningkatan kecepatan akses memori menjadi pertimbangan. Pada awalnya, batas fisik diberikan oleh modul memori itu sendiri. Anda tidak dapat melampaui batas fisik perangkat keras. Kedua, ramdisk, dan ketiga penggunaan zRAM dapat mempercepat akses memori. Kami akan membahas kedua teknologi ini secara lebih rinci.

Membuat ramdisk

Ramdisk adalah blok memori yang ditangani sistem operasi seperti perangkat fisik untuk menyimpan data - harddisk yang seluruhnya disimpan dalam memori. Perangkat sementara ini ada segera setelah sistem memulai dan mengaktifkan ramdisk, dan sistem akan menonaktifkan ramdisk, atau dimatikan. Perlu diingat bahwa data yang Anda simpan di ramdisk tersebut akan hilang setelah mesin dimatikan.

Anda dapat membuat ramdisk dinamis melalui sistem file tmpfs, dan melalui sistem file ramfs. Kedua teknologi sangat berbeda satu sama lain. Pertama, dinamis berarti memori untuk ramdisk dialokasikan berdasarkan penggunaannya (berlaku untuk kedua metode). Selama Anda tidak menyimpan data di dalamnya, ukuran ramdisk adalah 0.

Membuat ramdisk dinamis melalui tmpfs adalah sebagai berikut:

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

Membuat ramdisk dinamis melalui ramfs adalah sebagai berikut:

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

Kedua, menggunakan tmpfs dan kecuali ditentukan secara eksplisit, ukuran ramdisk dibatasi hingga 50% dari memori fisik. Sebaliknya ramdisk berdasarkan ramfs tidak memiliki batasan seperti itu.

Membuat ramdisk dinamis melalui tmpfs dengan ukuran relatif 20% dari memori fisik adalah sebagai berikut:

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

Membuat ramdisk dinamis melalui tmpfs dengan ukuran memori fisik tetap 200M adalah sebagai berikut:

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

Ketiga, kedua metode menangani swapping dengan cara yang berbeda. Jika sistem mencapai batas memori ramdisk berdasarkan tmpfs, data dari ramdisk akan ditukar. Ini menggagalkan gagasan akses cepat. Di sisi lain, sistem operasi memprioritaskan konten dan halaman memori yang diminta dari ramdisk berdasarkan ramf, menyimpannya di memori, dan menukar halaman memori yang tersisa ke disk.

Dalam contoh di atas kami telah menggunakan /media/ramdisk sebagai titik pemasangan. Mengenai data biasa, satu-satunya bagian dari sistem file Linux yang direkomendasikan untuk digunakan pada ramdisk adalah /tmp. Direktori ini menyimpan data sementara, hanya, yang tidak bertahan. Membuat ramdisk permanen yang menyimpan sistem file /tmp memerlukan entri tambahan dalam file /etc/fstab sebagai berikut (berdasarkan ramfs):

ramfs   /tmp     ramfs   defaults 0  0

Lain kali Anda mem-boot sistem Linux Anda, ramdisk akan diaktifkan, secara otomatis.

Menggunakan zRAM

zRAM berarti Pertukaran Virtual Terkompresi dalam RAM, dan membuat perangkat blok terkompresi langsung di memori fisik. zRAM mulai beraksi (digunakan) segera setelah tidak ada lagi halaman memori fisik yang tersedia di sistem. Kemudian, kernel Linux mencoba menyimpan halaman sebagai data terkompresi pada perangkat zRAM.

Saat ini, tidak ada paket yang tersedia untuk Debian GNU/Linux selain Ubuntu. Itu bernama zram-config. Instal paket, dan atur perangkat zRAM hanya dengan memulai layanan systemd yang sesuai sebagai berikut:

# systemctrl mulai zram-config

Seperti yang diberikan oleh output dari swapon -s, perangkat aktif sebagai partisi Swap tambahan. Secara otomatis, ukuran 50% dari memori dialokasikan untuk zRAM (lihat gambar 1). Saat ini, tidak ada cara untuk menentukan nilai yang berbeda untuk zRAM yang akan dialokasikan.

Untuk melihat detail lebih lanjut tentang partisi swap terkompresi gunakan perintah zramctl. Gambar 2 menunjukkan nama perangkat, algoritma kompresi (LZO), ukuran partisi swap, ukuran data pada disk dan ukuran terkompresinya serta jumlah aliran kompresi (nilai default: 1).

Strategi penggunaan

Selanjutnya, kami fokus pada strategi penggunaan memori. Ada beberapa parameter untuk mempengaruhi perilaku penggunaan dan distribusi memori. Ini termasuk ukuran halaman memori - pada sistem 64bit adalah 4M. Selanjutnya, parameter swappiness berperan. Seperti yang telah dijelaskan di bagian satu, parameter ini mengontrol bobot relatif yang diberikan untuk menukar memori runtime, sebagai lawan dari menjatuhkan halaman memori dari cache halaman sistem. Juga, kita tidak boleh melupakan caching dan penyelarasan halaman memori.

Gunakan program yang membutuhkan lebih sedikit memori

Last but not least penggunaan memori tergantung pada program itu sendiri. Sebagian besar ditautkan ke pustaka C default (LibC standar). Sebagai pengembang, untuk meminimalkan kode biner Anda, pertimbangkan untuk menggunakan alternatif, dan pustaka C yang jauh lebih kecil sebagai gantinya. Misalnya, ada dietlibc [1], uClibc [2], dan musl lib C [3]. Situs web pengembang musl lib C berisi perbandingan ekstensif [4] mengenai perpustakaan ini dalam hal program C statis sekecil mungkin, perbandingan fitur serta lingkungan build yang sesuai, dan arsitektur perangkat keras yang didukung.

Sebagai pengguna, Anda mungkin tidak perlu mengkompilasi program Anda. Pertimbangkan untuk mencari program yang lebih kecil dan kerangka kerja berbeda yang membutuhkan lebih sedikit sumber daya. Sebagai contoh, Anda dapat menggunakan Lingkungan Desktop XFCE daripada KDE atau GNOME.

Kesimpulan

Ada beberapa opsi untuk mengubah penggunaan memori menjadi lebih baik. Ini berkisar dari Swap ke kompresi berdasarkan zRAM serta menyiapkan ramdisk atau memilih kerangka kerja yang berbeda.

Tautan dan Referensi

Seri Manajemen Memori Linux

Ucapan Terima Kasih

Penulis ingin mengucapkan terima kasih kepada Axel Beckert dan Gerold Rupprecht atas dukungannya selama mempersiapkan artikel ini.

Port Sumber Terbuka dari Mesin Game Komersial
Rekreasi mesin game gratis, open source, dan lintas platform dapat digunakan untuk bermain lama serta beberapa judul game yang cukup baru. Artikel ini...
Game Baris Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar Anda saat menggunakan Linux-ini juga dapat menjadi sumber hiburan karena Anda dapat menggunakannya untuk me...
Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Jika Anda suka bermain game di Linux dengan gamepad alih-alih sistem input keyboard dan mouse biasa, ada beberapa aplikasi yang berguna untuk Anda. Ba...