Mengapa sebagian RAM penuh (katakanlah 80%), membuat perangkat jauh tertinggal, meskipun ada beberapa ruang yang tersedia untuk menyimpan lebih banyak data? Apa yang saya harapkan adalah tetap bekerja dengan baik hingga 99%.
Saya perhatikan bahwa pada ponsel lebih dari pada PC, karena memiliki RAM lebih kecil, mis. Ponsel saya memiliki RAM 2 GB; ketika saya memiliki kurang dari 1 GB RAM gratis, itu tertinggal banyak! Mengapa itu terjadi, meskipun masih memiliki ~ 1 GB untuk digunakan?
Jawaban:
Ada banyak yang terlibat di sini, tetapi saya akan mencoba menjelaskannya sesederhana mungkin dan dengan cara yang berlaku untuk hampir semua OS.
Ada 2 prinsip dasar di sini:
Jumlah total semua yang perlu dalam RAM dan hal-hal yang akan mendapat manfaat dari berada di RAM hampir selalu lebih besar dari ukuran RAM. Hal-hal yang akan mendapat manfaat dari berada di RAM termasuk set proses kerja dan daftar siaga. Yang terakhir ini berisi data dan kode yang pernah digunakan secara aktif tetapi sejak itu tidak aktif lagi. Sebagian besar ini akan digunakan lagi, beberapa di antaranya segera, sehingga bermanfaat untuk menyimpannya dalam RAM. Memori ini bertindak sebagai semacam cache tetapi tidak benar-benar penting sehingga berada dalam kategori memori yang tersedia. Seperti memori bebas, ia dapat dengan cepat diberikan ke program apa pun yang membutuhkannya. Untuk kepentingan kinerja, memori siaga harus besar.
Frekuensi penggunaan blok memori jauh dari acak tetapi dapat diprediksi dengan cukup akurat. Memori dibagi menjadi beberapa blok, seringkali 4K byte. Beberapa blok diakses beberapa kali per detik sementara yang lain belum diakses selama beberapa menit, jam, hari, atau bahkan berminggu-minggu jika sistem telah cukup lama. Ada berbagai macam penggunaan antara 2 ekstrim ini. Manajer memori tahu blok mana yang telah diakses baru-baru ini dan yang belum. Ini adalah asumsi yang masuk akal bahwa blok memori yang telah diakses baru-baru ini akan dibutuhkan segera. Memori yang belum diakses baru-baru ini mungkin tidak akan dibutuhkan dalam waktu dekat. Pengalaman panjang telah membuktikan ini sebagai prinsip yang valid.
Manajer memori mengambil keuntungan dari prinsip kedua untuk mengurangi konsekuensi yang tidak diinginkan dari prinsip pertama. Untuk melakukan ini, ia melakukan penyeimbangan menjaga data yang baru-baru ini diakses dalam RAM sementara itu menjaga data yang jarang digunakan dalam file asli atau file halaman.
Ketika RAM berlimpah, tindakan penyeimbangan ini mudah. Sebagian besar data yang belum lama digunakan dapat disimpan dalam RAM. Ini adalah situasi yang baik.
Banyak hal menjadi lebih rumit ketika beban kerja meningkat. Jumlah total data dan kode yang digunakan lebih besar tetapi ukuran RAM tetap sama. Ini berarti bahwa bagian yang lebih kecil dari ini dapat disimpan dalam RAM. Beberapa data yang baru-baru ini digunakan tidak bisa lagi di RAM tetapi harus dibiarkan di disk. Manajer memori berusaha sangat keras untuk menjaga keseimbangan yang baik antara memori yang digunakan aktif dan memori yang tersedia. Tetapi dengan meningkatnya beban kerja, manajer memori akan dipaksa untuk memberikan lebih banyak memori yang tersedia untuk menjalankan proses. Ini bukan situasi yang baik tetapi manajer memori tidak punya pilihan.
Masalahnya adalah bahwa memindahkan data ke dan dari RAM saat program berjalan membutuhkan waktu. Ketika RAM berlimpah itu tidak akan terjadi sangat sering dan bahkan tidak akan diperhatikan. Tetapi ketika penggunaan RAM mencapai tingkat tinggi itu akan terjadi lebih sering. Situasi dapat menjadi sangat buruk sehingga lebih banyak waktu dihabiskan untuk memindahkan data ke dan dari RAM daripada yang dihabiskan untuk menggunakannya. Ini meronta-ronta, hal yang sulit dihindari oleh manajer memori tetapi dengan beban kerja yang tinggi sering tidak dapat dihindari.
Memory manger ada di pihak Anda, selalu berusaha yang terbaik untuk mempertahankan kinerja yang optimal bahkan dalam kondisi buruk. Tetapi ketika beban kerja sangat besar dan memori yang tersedia pendek, itu harus melakukan hal-hal buruk untuk tetap berfungsi. Itu sebenarnya hal yang paling penting. Prioritasnya adalah pertama-tama menjaga hal-hal berjalan kemudian membuatnya secepat mungkin.
sumber
memory manger
bagian dariOS
hak saya ? jadi jika saya berurusan dengan pointer dan hal-hal yang sangat rendah ini, apakah masih bisa melakukan paging?Semua sistem operasi modern menggunakan memori yang tidak digunakan jika tidak untuk menyimpan data sehingga dapat diakses dari RAM cepat bukan penyimpanan yang lebih lambat. Mereka umumnya akan melaporkan ini sebagai memori bebas, karena aplikasi dapat menghapus cache dan menggunakannya jika mereka perlu, tetapi masih benar-benar digunakan. Semakin sedikit ada, semakin sedikit data yang bisa di-cache, dan semakin lambat komputer.
sumber
Paging adalah skema manajemen memori yang melaluinya blok memori berukuran tetap memiliki proses yang ditugaskan padanya. Ketika penggunaan memori naik ke tingkat tinggi (yaitu kapasitas 80%), paging mulai meluas dari RAM ke vRAM (RAM virtual).
vRAM terletak di penyimpanan sistem, biasanya di dalam hard drive, atau lokasi penyimpanan lain yang cukup besar.
Proses ditetapkan sebagai bagian dari hard drive Anda untuk dijalankan sebagai memori dan akan memperlakukan bagian mereka sebagai RAM. Namun, ini adalah proses yang sangat normal, ketika waktu yang dihabiskan untuk mentransfer data ke dan dari vRAM meningkat, kinerja sistem menurun.
Sementara RAM khusus diakses langsung melalui motherboard dari CPU, yang menyediakan koneksi cepat, RAM virtual harus melintang kabel antara papan dan lokasi vRAM.
Namun ini, hanya menyebabkan sedikit dampak kinerja. Ketika kecepatan paging ke vRAM terjadi meningkat secara drastis (ketika RAM khusus mendekati kapasitas), terjadi thrashing.
Meronta-ronta adalah praktik mentransfer halaman memori dengan cepat dan cepat ke dalam memori virtual Anda. Ini membutuhkan banyak sekali kinerja karena lebih banyak waktu dihabiskan untuk mengambil dan menangani data.
Katakanlah, Anda ingin menuliskan angka 30 digit. Anda bisa duduk di sebelah layar Anda dengan notepad dan menulisnya (menggunakan memori khusus), atau Anda ingat potongan 5, lari ke kamar sebelah dan menuliskannya di notepad Anda di sana (menggunakan memori virtual). Keduanya menyelesaikan pekerjaan, tetapi mana yang akan lebih cepat?
Cari tahu lebih lanjut tentang pencuri di sini !
sumber
Itu karena OS harus melakukan banyak paging (memuat bagian dari program aktif) dan bertukar (memindahkan data dalam RAM ke HD dan sebaliknya) untuk menjaga perangkat lunak Anda tetap berjalan. Ketika halaman baru perlu dimuat yang mungkin membutuhkan lebih banyak ruang daripada 20% yang tersedia, OS harus menukar halaman yang ada dalam RAM yang dianggap kurang mungkin untuk segera digunakan. Terutama saat memulai program lain. Mengganti dan kembali halaman membutuhkan banyak waktu dan memperlambat kinerja PC Anda secara drastis karena Anda sekarang bekerja pada kecepatan HD, bukan RAM.
Ini membantu sedikit pada HDD untuk membuat partisi khusus pada HD Anda dan menetapkannya sebagai "swap" khusus (tidak menggunakannya untuk file "nyata") sehingga pertukaran tidak terlalu terpengaruh oleh fragmentasi HD.
sumber
Ingat, hard drive adalah urutan besarnya lebih lambat dari RAM, dan RAM itu sendiri tidak terlalu cepat untuk memulai (dalam arsitektur keseluruhan). Dalam urutan kecepatan akses (di mana setiap anak tangga adalah urutan besarnya lebih lambat dari yang di atas) yang Anda miliki
Virtual Memory Manager adalah penjudi. Berani bertaruh Anda tidak perlu semua RAM sepanjang waktu, jadi itu membuat tebakan yang mendidik dan melempar dadu bahwa program dokumen Anda (yang telah ada di latar belakang selama 10 menit terakhir saat Anda membaca ini) tidak sangat penting dan mendorongnya ke HDD.
Tetapi kemudian Anda mengklik kembali ke dokumen! Sekarang VMM harus memuat semua data itu kembali dari HDD. Lebih buruk lagi, jika Anda kehabisan RAM, sekarang harus mendorong data lain (lebih banyak judi) ke HDD untuk membebaskan ruang yang dapat digunakan. Linux suka hidup di tepi sini. Ini akan mengisi sebagian besar RAM dengan data yang sering digunakan (bagus untuk server dengan beberapa proses).
sumber
Jawaban meronta-ronta cukup banyak berhasil. Jika Anda bisa, Anda dapat meminimalkan seberapa cepat ini terjadi dengan mengurangi swappiness (berapa ram sistem akan memungkinkan untuk digunakan sebelum memindahkan barang ke ruang swap). Saya suka mengatur sistem untuk tetap keluar dari swap sampai ram mencapai 99% untuk aplikasi server karena default secara efektif berarti bahwa saya perlu kode untuk hal-hal untuk hanya memanfaatkan 80% ram untuk mengambil keuntungan dari caching tanpa dihukum karena mendorong sistem menjadi ruang swap.
sumber