Mengapa sebagian RAM penuh (let's mengatakan 80%), membuat perangkat lag banyak, meskipun ada beberapa ruang untuk menyimpan lebih banyak data? Apa yang saya harapkan adalah bahwa hal itu terus bekerja dengan baik sampai 99%.
Saya melihat bahwa pada ponsel lebih banyak dari pada PC, karena memiliki RAM yang lebih kecil, misalnya ponsel saya memiliki 2 GB RAM; ketika saya punya waktu kurang dari 1 GB RAM gratis, tertinggal banyak! Mengapa hal itu terjadi, meskipun ia masih memiliki ~ 1 GB untuk digunakan?
Ada banyak terlibat di sini tapi saya akan mencoba untuk menjelaskannya sesederhana yang aku dapat dan dengan cara yang berlaku untuk hampir semua OS.
Ada 2 prinsip dasar berikut ini:
Jumlah total dari segala sesuatu 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 memiliki set proses kerja dan daftar siaga. Yang terakhir berisi data dan kode yang dulunya digunakan aktif tetapi sejak terjerumus ke tidak aktif. Banyak dari ini akan digunakan lagi, beberapa dari itu cukup lama, sehingga sangat bermanfaat untuk menjaga ini dalam RAM. Memori ini bertindak sebagai semacam cache tapi tidak benar-benar penting sehingga adalah dalam kategori memori yang tersedia. Seperti memori bebas itu bisa dengan cepat diberikan untuk setiap program yang membutuhkannya. Dalam kepentingan kinerja siaga memori harus besar.
Frekuensi penggunaan memori blok lebih jauh dari random tetapi dapat diperkirakan dengan cukup akurat. Memori dibagi menjadi blok-blok, sering 4K byte. Beberapa blok yang diakses berkali-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 ekstrem. Manajer memori yang tahu blok mana yang telah diakses baru-baru ini dan mereka yang tidak. Itu adalah asumsi yang masuk akal bahwa sebuah blok memori yang telah diakses baru-baru ini akan dibutuhkan lagi. Memori yang belum diakses baru-baru ini mungkin tidak't akan dibutuhkan dalam waktu dekat. Pengalaman yang panjang telah membuktikan hal ini menjadi prinsip yang berlaku.
Manajer memori mengambil keuntungan dari prinsip kedua untuk sebagian besar mengurangi konsekuensi yang tidak diinginkan dari yang pertama. Untuk melakukan hal ini dilakukannya tindakan penyeimbangan menjaga yang baru diakses data di RAM sementara yang menjaga jarang digunakan data pada file asli atau pagefile.
Ketika RAM berlimpah tindakan penyeimbangan ini lebih mudah. Banyak yang tidak jadi digunakan data dapat disimpan dalam RAM. Ini adalah situasi yang baik.
Hal-hal menjadi lebih rumit ketika beban kerja meningkat. Jumlah total dari data dan kode yang di gunakan adalah lebih besar tetapi ukuran RAM tetap sama. Ini berarti bahwa subset yang lebih kecil ini dapat disimpan di RAM. Beberapa yang kurang baru-baru ini data yang digunakan tidak dapat lagi di RAM tapi harus dibiarkan pada disk. Manajer memori mencoba sangat keras untuk mempertahankan keseimbangan yang baik antara memori dalam penggunaan aktif dan memori yang tersedia. Tapi karena beban kerja meningkat manajer memori akan dipaksa untuk memberikan lebih banyak memori yang tersedia untuk menjalankan proses. Ini bukan situasi yang baik tapi memori manajer tidak memiliki pilihan.
Masalahnya adalah bahwa memindahkan data ke dan dari RAM sebagai program yang dijalankan membutuhkan waktu. Ketika RAM yang berlimpah itu tidak't terjadi sangat sering dan tidak't bahkan diperhatikan. Tapi ketika penggunaan RAM mencapai tingkat tinggi itu akan terjadi jauh lebih sering. Situasi dapat menjadi sangat buruk sehingga banyak waktu yang dihabiskan untuk memindahkan data ke dan dari RAM dari dihabiskan dalam menggunakannya. Ini adalah meronta-ronta, hal manajer memori mencoba sangat keras untuk menghindari tetapi dengan beban kerja yang tinggi sering tidak dapat dihindari.
Memori palungan adalah di sisi anda, selalu mencoba's terbaik untuk mempertahankan kinerja yang optimal bahkan dalam kondisi yang sulit. Tapi ketika beban kerja yang lebih besar dan memori yang tersedia berjalan singkat itu harus melakukan hal-hal buruk agar tetap berfungsi. Yang ini sebenarnya paling penting. Prioritas pertama adalah untuk menjaga hal-hal berjalan kemudian membuat kemudian secepat mungkin.
Semua sistem operasi modern menggunakan jika memori yang tidak terpakai untuk caching data sehingga dapat diakses dari RAM cepat, bukan lebih lambat penyimpanan. Mereka umumnya akan melaporkan hal ini seperti memori bebas, karena aplikasi dapat menghapus cache dan menggunakannya jika mereka perlu, tapi itu's masih benar-benar digunakan. Kurang dari itu ada, data kurang dapat di-cache, dan lambat komputer akan.
jawaban Ini sebagian besar telah ditulis ulang untuk membenahi struktur dan membuat pesan yang lebih jelas. Saya juga telah dibuka sebagai sebuah komunitas wiki menjawab, Merasa bebas untuk mengedit.
Paging adalah skema manajemen memori yang tetap-ukuran blok memori yang memiliki proses yang ditugaskan kepada mereka. Ketika penggunaan memori naik ke tingkat yang tinggi (yaitu 80% kapasitas), paging dimulai untuk memperpanjang dari RAM ke vRAM (virtual RAM).
vRAM adalah hotel yang terletak strategis di sistem penyimpanan, biasanya dalam sebuah hard drive, atau lainnya yang cukup besar lokasi penyimpanan.
Proses ditugaskan bagian dari hard drive anda untuk menjalankan sebagai memori dan akan memperlakukan mereka sebagai bagian RAM. Ini adalah hal yang normal, namun, ketika waktu yang dihabiskan untuk mentransfer data ke dan dari vRAM meningkat, kinerja sistem menurun.
Sementara RAM dedicated diakses langsung melalui motherboard dari CPU, yang menyediakan koneksi yang cepat, virtual RAM harus melintang kabel antara dewan dan lokasi vRAM.
Ini, bagaimanapun, menyebabkan hanya sedikit dampak kinerja. Ketika tingkat yang paging untuk vRAM berlangsung meningkat secara drastis (ketika RAM dedicated pendekatan kapasitas), meronta-ronta berlangsung.
Meronta-ronta adalah praktek dengan cepat dan dengan cepat mentransfer halaman dari memori ke memori virtual. Ini mengambil tol besar pada kinerja karena lebih banyak waktu yang harus dihabiskan mengambil dan menangani data.
Katakanlah, anda ingin untuk menuliskan nomor 30 digit. Anda bisa duduk di samping layar anda dengan notepad dan menulis (menggunakan dedicated memory), atau kau ingat potongan 5, lari ke kamar sebelah dan menuliskannya pada notepad anda di sana (menggunakan virtual memory). Keduanya mendapatkan pekerjaan yang dilakukan, tetapi yang akan menjadi lebih cepat?
Cari tahu lebih lanjut tentang thashing di sini!
terima kasih kepada para kontributor dari jawaban ini termasuk Daniel B, xenoid dan Jon Bentley.
It's karena OS memiliki untuk melakukan banyak paging (loading bagian dari program aktif) dan menukar (memindahkan data dalam RAM untuk HD dan sebaliknya) untuk menjaga perangkat lunak yang berjalan. Ketika halaman baru harus dimuat yang mungkin perlu lebih banyak ruang daripada availble 20%, OS akan memiliki untuk swap keluar halaman yang ada dalam RAM yang consideres kurang mungkin untuk digunakan segera. Terutama pada start up program lain. Swapping out dan kembali di halaman membutuhkan banyak waktu dan memperlambat kinerja Pc anda secara drastis karena anda sekarang bekerja pada kecepatan HD, tidak RAM.
Hal ini membantu sedikit pada HDD untuk membuat partisi khusus pada HD anda dan tetapkan sebagai dedicated "swap" (don't menggunakannya untuk "nyata" file) ruang sehingga menukar kurang terpengaruh oleh HDs fragmentasi.
Ingat, hard drive adalah urutan besarnya lambat dari RAM, dan RAM itu sendiri isn't semua yang cepat untuk memulai dengan (secara keseluruhan arsitektur). Di urutan kecepatan akses (di mana setiap anak tangga adalah urutan besarnya lebih lambat dari salah satu di atas) anda telah
Virtual Memory Manager adalah seorang penjudi. It's taruhan anda don't membutuhkan semua RAM anda sepanjang waktu, sehingga membuat tebakan dan gulungan dadu yang anda dokumen program (yang telah di latar belakang selama 10 menit terakhir saat anda membaca ini) isn't benar-benar penting dan mengarah ke HDD.
Tapi kemudian anda klik kembali ke dokumen! Sekarang VMM harus memuat semua data yang kembali dari HDD. Lebih buruk lagi, jika anda're rendah pada RAM, sekarang telah mendorong data lain (judi) ke HDD untuk membebaskan ruang yang dapat digunakan. Linux suka hidup di tepi sini. Itu akan mengisi sebagian besar dari RAM dengan data yang sering digunakan (untuk server dengan beberapa proses).
Meronta-ronta jawaban cukup banyak kuku itu. Jika anda're mampu, anda dapat meminimalkan seberapa cepat ini terjadi dengan mengurangi swappiness (berapa banyak ram sistem ini akan memungkinkan untuk digunakan sebelum hal-hal yang bergerak untuk ruang swap). Saya ingin mengatur sistem untuk tetap keluar dari swap ram sampai mencapai 99% untuk server aplikasi sejak default akan efektif berarti bahwa saya akan perlu kode untuk hal-hal yang hanya memanfaatkan 80% dari ram untuk mengambil keuntungan dari cache tanpa sanksi untuk mendorong sistem ke ruang swap.