swap partisi vs file untuk kinerja?

62

Apa yang lebih baik untuk kinerja? Partisi yang lebih dekat ke bagian dalam disk akan memiliki waktu akses yang lebih lambat, dan kita harus menunggu drive untuk beralih antara OS dan partisi swap.

Di sisi lain, partisi swap mem-bypass semua filesystem yang memungkinkan menulis ke disk secara langsung, yang bisa lebih cepat daripada file.

Apa trade off kinerja?

Berapa banyak swapfile ukuran tetap yang membuat perbedaan?

Apakah ini kasus yang akan lebih lama untuk berubah ke partisi swap, tetapi kinerjanya akan lebih baik saat berada di partisi swap bahwa jika itu adalah file swap?

Bill Gray
sumber
Hanya karena penasaran. Bisakah Anda memberikan detail sistem seperti versi kernel, RAM, partisi dan skema sistem file?
Viky
Pada OS apa yang Anda cari?
Mathieu Chateau
4
Untuk info Linux, lihat lkml.org/lkml/2005/7/7/326
Adam Monsen
Adakah pembaruan untuk jawaban pertanyaan?
kokbira

Jawaban:

29
  1. Pada hard disk, throughput dan pencarian sering lebih cepat menuju awal disk, karena data tersebut disimpan lebih dekat ke area luar disk, yang memiliki lebih banyak sektor per silinder. Dengan demikian, membuat swap di awal disk dapat meningkatkan kinerja.

  2. Untuk kernel Linux 2.6, tidak ada perbedaan kinerja antara partisi swap dan file swap tidak terfragmentasi . Ketika partisi swap / file diaktifkan oleh swapon, kernel 2.6 menemukan disk mana yang memblokir swapfile disimpan , sehingga ketika tiba saatnya untuk bertukar, ia tidak harus berurusan dengan sistem file sama sekali.

Jadi, jika swapfile tidak terfragmentasi, itu persis seolah-olah ada partisi swap di lokasi yang sama. Atau dengan kata lain, Anda akan mendapatkan kinerja yang identik jika Anda menggunakan partisi swap mentah, atau memformatnya dengan sistem file dan kemudian membuat swapfile yang mengisi semua ruang, karena bagaimanapun cara pada disk itu ada wilayah yang berdekatan digunakan untuk bertukar, yang digunakan kernel secara langsung.

Jadi jika seseorang membuat swapfile ketika filesystem baru (sehingga memastikan itu tidak terfragmentasi dan di awal volume), kinerja harus identik dengan memiliki partisi swap sebelum volume. Lebih jauh, jika seseorang membuat swapfile mengatakan di tengah volume, dengan file di kedua sisi, orang mungkin mendapatkan kinerja yang lebih baik, karena ada sedikit yang ingin bertukar.

Di Linux, jika swapfile dibuat tidak terfragmentasi, dan tidak pernah diperluas, itu tidak dapat terfragmentasi, setidaknya dengan sistem file normal seperti ext3 / 4. Itu akan selalu menggunakan blok disk yang sama, yang berdekatan.

Saya menyimpulkan bahwa tentang satu-satunya manfaat dari partisi swap khusus adalah dijamin tanpa fragmentasi ketika Anda perlu memperluasnya; jika swap Anda tidak akan diperluas, file yang dibuat pada sistem file baru tidak memerlukan partisi tambahan.

Shay
sumber
5
Satu-satunya hal yang ditambahkan di sini adalah jika mesin Anda dikonfigurasikan untuk "menangguhkan ke disk" apa yang sebenarnya terjadi adalah hal-hal dalam memori ditulis untuk ditukar. Agar ini berfungsi, swap harus berada di partisi sendiri karena swap tidak dapat berada di sistem file yang aktif agar hal ini terjadi. Karena itu, jika Anda memiliki server, Anda mungkin tidak menggunakan fitur ini dan dengan senang hati dapat menggunakan file swap. Jika Anda memiliki laptop, Anda mungkin menginginkan partisi swap sehingga Anda dapat "menangguhkan file" untuk hibernasi.
Nathan S. Watson-Haigh
@ NathanS.Watson-Haigh Apa yang terjadi dengan data yang sudah di swap? Itu tidak bisa dibuang.
XTF
3
@ NathanS.Watson-Haigh Bisakah Anda menautkan suatu sumber? Ubuntu 17.04 menggunakan file swap secara default. Akan mengejutkan jika tidak bisa "menangguhkan ke disk".
Matthias Weiler
22

Sebenarnya itu tidak membuat banyak perbedaan selama Anda tidak menggunakan file jarang .

Membuat file "normal" dengan dd akan mengalokasikan file (jika memungkinkan) dalam sekali jalan, sementara membuat file jarang akan memberi tahu Anda bahwa Anda memiliki file 10GB di sekitar tetapi tidak benar-benar menggunakan semua ruang. Saya tidak begitu yakin apakah mkswap tidak akan mengalokasikan ruang, tetapi biasanya file swap akan tumbuh dalam waktu dan dengan demikian tidak akan mengalokasikan sektor yang berkelanjutan (seperti di bagian disk) melainkan mengalokasikan blok sesuai kebutuhan yang mengarah ke fragmentasi seiring waktu (tentu saja tergantung pada penggunaan disk Anda)

Secara internal kernel Linux akan mengakses blok-blok yang mendasari file swap kurang lebih secara langsung - Saya tidak dapat menemukan tautan sekarang apa yang terjadi di bawah tenda, Anda harus mempercayai saya tentang hal ini kecuali seseorang akan menemukan sesuatu yang lebih resmi. Yang bisa saya pikirkan saat ini adalah:

ini semua hanya berlaku untuk kernel Linux baris 2.6.

Jika Anda ingin kinerja optimal (dan apa itu, sungguh? ... swapping lambat, titik. Tingkatkan RAM agar Anda tidak menukar untuk kinerja terbaik ), Anda ingin menggunakan partisi.

serverhorror
sumber
18
Versi modern dari swapon akan langsung menolak untuk bekerja dengan file yang jarang diformat sebagai swap, mengutip bahwa file tersebut memiliki lubang.
Pos Tim
3

Ini adalah pertanyaan yang menarik dan telah banyak membaca tentang hal yang sama. Umumnya partisi swap lebih baik daripada file karena sistem file yang mendasarinya. Tetapi jika Anda selalu perlu meningkatkan ukuran swap Anda maka file adalah pilihan yang lebih baik. Sampai kernel 2.4 dianggap bahwa partisi swap lebih cepat daripada file, tetapi sekarang dengan perbaikan kernel 2.6, kinerjanya hampir sama.

Sesuatu yang saya temukan di internet juga.

http://www.go2linux.org/swap-file-vs-swap-partition

dan

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html

Viky
sumber
Namun, kedua tautan itu tidak menjelaskan alasan di balik keputusan mereka.
Bill Gray
Alasannya adalah bahwa file tersebut akan memiliki kelebihan sistem file yang mendasarinya. Jika Anda membuat file, itu bisa jadi fragmenged. dan tergantung pada file yang sedang di-cache pada swap, bacaan bisa lambat dibandingkan dengan seluruh partisi yang merupakan sistem file swap sendiri.
Viky
Mencoba menggali lebih jauh dan menemukan artikel relatif di wiki. Hanya untuk membantu Anda, ada beberapa parameter tuning swap yang dapat Anda periksa. Periksa juga penjelasan di bawah implementasi untuk linux. Mungkin membantu. en.wikipedia.org/wiki/Paging
Viky
Ikuti salah satu kutipan pada tautan wiki yang disebutkan di atas dan temukan utas menarik tentang masalah yang sama. Mungkin ingin memeriksanya. lkml.org/lkml/2005/6/28/427
Viky
Saya menyebutkan kelebihan filesystem dalam pertanyaan saya, tetapi ini bukan merupakan blok kinerja seperti memiliki partisi di dekat disk bagian dalam. Penundaan itu akan lebih bagus daripada overhead sistem file.
Bill Gray
2

Saya pikir pada tahap kita sekarang, kecuali jika Anda menjalankan laptop dengan konfigurasi yang menulis data ke swap ketika ditangguhkan / tidur, swap harus benar-benar dianggap "pilihan terakhir". Taruhan terbaik Anda adalah dengan memasukkan cukup RAM ke dalam sebuah kotak sehingga tidak pernah ada halaman ke disk.

Yang sedang berkata, partisi mungkin cara yang lebih baik, kinerja bijaksana, meskipun file lebih fleksibel. Pastikan saja bahwa itu pada spindle 7200+ RPM.

Matt Simmons
sumber
1
Mengapa partisi menjadi kinerja yang lebih baik, ketika waktu akses bisa menjadi faktor keterlambatan?
Bill Gray
5
Karena menggunakan file mungkin memerlukan lebih banyak gerakan kepala, karena ketika menemukan halaman untuk membaca / menulis data bisa berada di mana saja pada sistem file sehingga struktur fs mungkin perlu dicari sedangkan dengan partisi swap setiap halaman akan berada di lokasi yang diketahui dalam partisi. Hal ini menjadikan waktu akses (seperti yang ditunjukkan ke throughput massal) sebagai faktor pembeda.
David Spillett
2
"Jangan mengonfigurasi swap kecuali Anda harus hibernate" adalah pandangan yang kontroversial. Terkadang ketika sistem rendah pada swap memori nyata dapat memungkinkan sistem untuk pulih. Tidak memiliki swap dapat membatasi Anda dari menjalankan program yang membuat alokasi memori sangat besar tetapi tidak benar-benar menyentuh sebagian besar dari itu (misalnya alat debugging tertentu). Kadang-kadang wilayah memori yang terisi tetapi tidak digunakan lebih baik digunakan sebagai cache disk dan itu hanya dapat dilakukan jika ada pertukaran. Lihat unix.stackexchange.com/questions/2658/… untuk diskusi.
Anon
1
Apa yang dikatakan @Anon. Chrome adalah memory hog yang terkenal buruk, dan bahkan dengan <100 tab, laptop 16GB saya menjadi tidak responsif selama beberapa menit ketika penggunaan memori sekitar 90% dan tidak ada file swap. Anehnya, Ubuntu tidak memiliki mekanisme bawaan untuk memperingatkan pengguna bahwa OS kehabisan memori .
Dan Dascalescu
2

Pemikiran di pekerjaan kami adalah karena file Swap dapat menjadi terfragmentasi, dan fragmentasi memperlambat akses swap, partisi adalah pendekatan yang lebih baik. Tentu saja, mendefinisikan swapfile berukuran statis melakukan banyak hal yang sama tetapi ini tampaknya lebih rapi secara subyektif.

Apakah pendekatan ini satu-satunya cara yang benar? Mungkin tidak, karena praktik ini didirikan hampir 10 tahun yang lalu. Satu-satunya perubahan besar dalam teknologi drive pada tahun-tahun berikutnya adalah kompleksitas pengontrol RAID yang kami gunakan (kami belum cukup kaya untuk SSD). Peningkatan ukuran drive berarti bahwa partisi swap yang kita buat lebih dekat ke awal drive daripada kembali ketika 18GB drive standar pengiriman, sehingga kecepatan swap bahkan lebih cepat daripada di masa lalu.

Tentu saja, pada sistem Windows berbasis ESX kami, posisi file swap sepenuhnya, sepenuhnya dapat diperdebatkan. Ada begitu banyak lapisan virtualisasi antara file swap dan piringan disk fisik yang tidak penting. Tetapi kami menyimpannya di partisi yang terpisah karena itu hanya standar.

sysadmin1138
sumber
4
File swap tidak menjadi terfragmentasi, karena kernel menggunakan pendekatan mmap langsung dan tidak akan pernah menumbuhkan atau mengecilkan file. +1 untuk komentar Anda tentang virtualisasi: sering kali tidak masalah.
parasietje
0

Menggunakan file swap mungkin menggunakan sedikit memori ekstra untuk terjemahan file-ke-memori. Kita berbicara tentang memori kurang dari 1MB per swap 1GB. Cache sistem file TIDAK cache data yang ditukar, hanya data organisasi, yang seharusnya sebagian besar persyaratan memori tambahan.

Selain itu saya ragu Anda akan kehilangan kinerja yang wajar kecuali mungkin sekali dalam 1000 kali pencarian kepala tambahan.

Fakta lucu, menggunakan zswap bersama dengan file swap yang berkembang secara dinamis menghasilkan kecepatan yang mengesankan pada operasi swap dengan biaya yang sangat sedikit saat tidak digunakan.

Crass Spektakel
sumber
1
Bisakah Anda memberikan alasan apa pun untuk klaim Anda? Ini sepertinya agak anekdot.
austinian