Apa itu swap memory?

26

Saya menggunakan RAM untuk menyimpan beberapa tabel database saya dan yang lainnya disimpan dalam hard disk.

Hari ini saya mengetahui bahwa proses saya menggunakan memori swap. Sekarang apa itu swap memory dan bagaimana saya bisa mendeteksi proses mana yang menggunakan memory swap dan bagaimana saya bisa menghentikan mereka menggunakannya?

030
sumber
tidak adakah cara untuk mengetahui bahwa proses mana yang menggunakan memori swap ???
lihat pada task manager windows (atau alat serupa) untuk jumlah file halaman yang digunakan dan kesalahan halaman.
Swap bukan hal per proses, itu untuk seluruh OS. "vmstat" akan menampilkan informasi tentang berapa banyak swap yang Anda gunakan.
jrockway
saya bekerja di linux bukan pada wimdows
mendapatkan alasan penggunaan swap ini ..... seseorang mencoba mengurai situs saya, itulah sebabnya mengapa semua ini terjadi tanpa sebab dari pihak kami. Terima kasih atas jawaban Anda, ini banyak membantu saya seperti biasa :-)

Jawaban:

41

Jika kehabisan memori fisik, Anda menggunakan memori virtual, yang menyimpan data dalam memori pada disk. Membaca dari disk adalah beberapa urutan besarnya lebih lambat daripada membaca dari memori, jadi ini memperlambat segalanya. (Saling menukar data antara memori nyata dan memori virtual adalah "swapping". Ruang pada disk adalah "ruang swap".)

Jika aplikasi Anda "menggunakan swap", maka Anda harus menggunakan lebih sedikit memori atau membeli lebih banyak RAM.

(Swap berguna karena aplikasi yang tidak sedang digunakan dapat disimpan pada disk sampai mereka digunakan. Kemudian mereka dapat "paged in" dan berjalan secara normal lagi. Meskipun tidak dalam memori, OS dapat menggunakan memori itu. untuk sesuatu yang lain, seperti cache disk. Jadi ini fitur yang sangat berguna, tetapi jika Anda tidak memiliki cukup memori fisik untuk menjalankan program Anda, Anda pasti membutuhkan lebih banyak memori. Untungnya, memori saat ini benar-benar sangat murah.)

jrockway
sumber
1
Demi kebenaran: memori virtual berarti menggunakan alamat memori virtual (sesuatu yang selalu diaktifkan dalam CPU modern, tidak peduli berapa banyak RAM yang tersedia yang Anda miliki) dan tidak terkait langsung dengan swapping (meskipun mereka digunakan dalam kombinasi, mereka adalah konsep dasarnya berbeda).
fortran
@fortran, untuk kebenaran ganda, memori virtual adalah istilah yang digunakan Windows ketika merujuk ke file paging (swap) .
sleblanc
7

Komputer memiliki sejumlah memori fisik. Tetapi sebagian besar waktu kita menginginkan lebih. Jadi kami menukar beberapa memori pada disk.

Setiap kali kita membutuhkan memori itu perlu ditukar kembali ke memori (menukar beberapa bagian lainnya). Ada algoritma yang sangat cerdas untuk meminimalkan penundaan, tetapi kadang-kadang kita masih harus menunggu.

Di windows, jika Anda melihat task manager, Anda bisa menunjukkan kesalahan halaman kolom. Ini menunjukkan jumlah waktu, aplikasi meminta sepotong memori yang ada di disk dan perlu ditukar. Banyak kesalahan halaman = aplikasi lambat.

Proses ini digunakan pada beberapa tingkatan. Ringkasan dari cepat ke lambat:

  • Pada level CPU, ada register. Ini adalah memori tercepat tetapi jumlahnya terbatas.
  • Juga pada CPU ada cache memori kecil. Di sini sepotong kecil program yang sedang berjalan disimpan untuk akses cepat. Cari pada algoritma prediksi cabang jika Anda ingin tahu lebih banyak.
  • Terkadang ada cache level 2 antara CPU dan memori utama.
  • Level selanjutnya adalah memori utama (RAM).
  • Level terakhir dan paling lambat adalah disk, terkadang Anda dapat menggunakan stik USB sebagai memori tambahan.
Toon Krijthe
sumber
3
cat /proc/pid/smaps

Jika Anda tidak ingin menggunakan swap, maka jangan gunakan partisi swap (komentar di luar baris /etc/fstab), tetapi itu akan mencegah untuk memulai proses baru dan akan membuat malloc gagal jika Anda kehabisan memori fisik. Itu bukan ide yang baik secara umum ... tidak terlalu aman dan bahkan tidak terlalu berguna, karena OS akan menyimpan halaman panas dalam memori dan akan bertukar ke disk yang tidak digunakan baru-baru ini.

Solusi lain bisa dengan meretas basis data Anda sehingga mengunci halaman ke dalam memori (saya tahu itu bisa dilakukan, tapi saya tidak bisa memberi tahu Anda sekarang bagaimana tepatnya), tapi bagaimanapun, sepertinya database Anda akan menggunakan swapping sendiri dan mekanisme caching.

Untuk mengetahui apa itu swap dan bagaimana memori virtual bekerja ... Saya sarankan Anda untuk melihat beberapa kuliah Sistem Operasi, mungkin MIT Open Courseware bisa membantu.

fortran
sumber
Karena konfigurasi default pada banyak distro linux adalah untuk overcommit memori, "terburuk" yang akan terjadi adalah bahwa pembunuh OOM akan memulai proses sniping, kemungkinan besar dimulai dengan DBMS (dan dengan tabel "disimpan dalam RAM" yang mungkin tidak baik benda).
symcbean
1

Saya telah menemukan sebagian jawaban. Memori Swap adalah ruang dalam Hard Disk komputer Anda yang akan digunakan Sistem Operasi untuk memasukkan info yang sebenarnya ada di RAM untuk membebaskannya untuk aplikasi lain. Ini harus dilakukan ketika sistem membutuhkan memori untuk proses baru dan tidak ada, sehingga kita dapat melihat bahwa jika sistem kita memiliki banyak RAM, mungkin tidak memerlukan memori SWAP.

MEMPERBARUI

Untuk mencari tahu di mana ruang Swap (atau memori virtual) Anda dapat pergi ke Task Manger (CTRL + ALT + DEL) dan hidupkan dari LIHAT -> KOLOM -> MEMORI VIRTUAL. Sekarang hanya menghitung perbedaan antara penggunaan memori dan memori virtual. Juga di sini adalah instruksi bagaimana melihatnya jika Anda menjalankan Vista: http://www.ehow.com/how_5067693_increase-swap-space.html

faya
sumber
-1

Swap adalah ruang hard disk yang digunakan sebagai RAM. Ini (relatif berbicara) sangat lambat, tetapi menghentikan komputer dari crash ketika mereka mencoba untuk menangani lebih banyak data maka RAM mereka dapat menangani.

Untuk menghentikan proses menggunakan swap - instal lebih banyak RAM.

Quentin
sumber
1
Jika Anda tidak ingin bertukar, hentikan penggunaan file halaman. Tetapi mengharapkan masalah lain.
1
Ini bukan. Swapping adalah memindahkan blok data dari harddisk ke memori fisik. Bacaan satu kali, yang biasanya cukup cepat.
@xtofl jawabannya tidak menyebutkan swapping, hanya swap partisi, dan komentar oleh gamecat tidak ada hubungannya dengan apa yang Anda katakan? : P
RapidWeb
-1

Jika Anda tidak ingin proses Anda menggunakan swap-memory, matikan saja swap memory. Sayangnya, jika Anda kehabisan memori, kernel Linux akan mematikan beberapa proses Anda yang sedang berjalan untuk membebaskan sebagian memori untuk digunakan.

Jika Anda memiliki RAM yang cukup untuk sistem Anda, Anda sebenarnya dapat pergi tanpa menukar memori.

Saya memiliki laptop dengan 768Mb RAM yang tidak menggunakan memori swap. Cukup bagus untuk kebutuhan saya. Saya memiliki server dengan 256Mb RAM dan tidak menggunakan memori swap. Ini menjalankan 8 server virtual menggunakan virtualisasi OpenVZ, tanpa masalah.

Jadi, terserah Anda jika Anda membutuhkan swap-memory.

sybreon
sumber
BAGAIMANA Anda menjalankan 8 VM pada mesin dengan hanya 256 megabita RAM?!?
warren
Mungkin dengan VZ karena RAM tidak sepenuhnya dipartisi karena perpustakaan umum dibagikan di seluruh VM, atau sesuatu yang berpengaruh. Jadi, 8 x 64M belum tentu 512M. :)
sybreon
namun - bagaimana perangkat yang mendasarinya berjalan stabil?
warren
Dengan menukar program yang tidak aktif, Anda memiliki lebih banyak memori untuk penyimpanan file. Dan itu mempercepat semuanya. membaca satu kali ini biasanya cukup cepat dan memiliki efek yang dapat diabaikan secara keseluruhan. itu tidak hanya digunakan ketika Anda keluar dari batas sehubungan dengan RAM yang tersedia. Saya telah melihat mesin dengan 16GB RAM menggunakan SWAP di kali.
RapidWebs
Selain itu, saya tidak akan merekomendasikan untuk menonaktifkan SWAP di server Database. Pelanggan atau aplikasi web-nya tidak akan senang ketika OOM membunuh back-end di seluruh operasi cadangan malam sederhana, atau yang serupa? akan lebih cerdas untuk menyetel cache database sehubungan dengan penggunaan aplikasi dan memori yang tersedia. jika dia sudah bertukar, dia membutuhkan lebih banyak ram, atau untuk mengkonfigurasi server DB-nya dengan lebih baik. jika tidak, menonaktifkan SWAP akan memaksa OOM untuk membunuh server DB setiap kali swap. Yang menilai dengan pertanyaannya, sering.
RapidWebs