Apakah ada ukuran maksimum di mana file swap dapat berfungsi?

8

Sejauh yang saya tahu, batas teoritis untuk file swap sangat besar tergantung pada apakah sistem 32bit atau 64bit digunakan.

Saya telah membuat file swap 16GB pada sistem 4GB RAM 64bit dengan spesifikasi rata-rata yang rendah, karena saya memiliki ruang lebih dari cukup pada HDD internal 1TB saya ...

Tetapi apakah file swap yang besar benar-benar membuat perbedaan dalam kecepatan / kinerja?

Devon van Schoor
sumber
1
Terkait: askubuntu.com/q/49109/367990
Byte Commander
2
IMO jika Anda menggunakan swap, Anda benar-benar membutuhkan lebih banyak RAM, bukan file swap yang lebih besar
Panther
1
jika Anda menggunakan HDD, maka Anda harus menggunakan zram dan menurunkan prioritas swap HDD. Dan partisi swap yang besar seperti itu tidak akan membantu, karena dengan tipe yang Anda gunakan seperti swap 4GB, sistem Anda lambat merangkak
phuclv
2
Terkait: askubuntu.com/q/1017021/504066
PerlDuck
Sejauh yang saya ingat file swap akan mengkonsumsi sejumlah RAM fisik (saya pikir kurang dari 1% dari ukuran file swap). Jadi memiliki file swap yang terlalu besar dapat merusak kinerja karena konsumsi memori itu. Tetapi untuk file swap berukuran cukup besar, itu tidak akan menjadi masalah.
kasperd

Jawaban:

7

Anda dapat memiliki hingga 32 area swap (file atau partisi) dengan masing-masing hingga ~ 4 miliar (2 ^ 32) halaman, di mana "halaman" adalah 4kB pada sistem tradisional (misalnya x86 atau x86_64) tetapi dapat lebih besar pada yang lain arsitektur atau jika Anda telah mengkonfigurasi halaman besar secara khusus.

Ini memberikan maksimum teoritis 16TB per area swap, dan hingga 32 area swap. Mungkin ada batasan lain yang berlaku sebelum Anda mencapai ini, tetapi ini sama besarnya dengan area swap yang mkswapdapat Anda buat.

Mengenai seberapa banyak yang Anda inginkan, area swap apa pun di luar batas maksimum yang Anda manfaatkan sebenarnya tidak berkontribusi apa pun pada kinerja atau stabilitas sistem. Caranya adalah dengan memperkirakan jumlah maksimum pemanfaatan yang akan pernah terjadi dalam situasi normal atau bahkan abnormal, dan menggunakannya sebagai ukuran file swap Anda dan tidak lebih.

Pada saat penulisan, ruang swap yang lebih besar dari sekitar 4GB lebih dari ukuran memori fisik Anda sangat tidak mungkin untuk digunakan, kecuali jika sistem Anda sangat tidak normal. Pada sistem tipikal seperti sistem desktop yang digunakan oleh satu orang pada satu waktu, Anda mungkin bahkan dapat berhenti pada maksimum mengatakan 6GB hingga 8GB bahkan jika memori fisik Anda lebih besar.

thomasrutter
sumber
6

Tidak ada bedanya dalam hal kecepatan atau kinerja. Itu hanya memungkinkan Anda untuk menggunakan hingga 20 GB memori virtual sebelum pembunuh OOM mulai membunuh proses untuk mendapatkan kembali memori.

Jika Anda menginginkan kinerja yang lebih baik:

  • kurangi swappinessjika Anda tidak menggunakan lebih dari 4 GB
  • tambahkan RAM
  • beralih ke SSD dan letakkan file swap di atasnya
Chai T. Rex
sumber
Jika Anda sering kali harus menukar blok memori, SSD karena arsitekturnya dan siklus penulisan yang terbatas bukanlah cara yang tepat karena dapat dengan mudah menghabiskan siklus penulisan SSD dengan sangat cepat. Jika Anda hanya sesekali datang ke kebutuhan swap memori SSD baik-baik saja.
Videonauth
11
@Videonauth: "Mudah menggunakan siklus penulisan SSD dengan sangat cepat": segala jenis SSD modern yang setengah layak dapat mempertahankan penulisan kapasitas penuh SSD hari demi hari selama bertahun - tahun . Nasihat Anda mungkin benar pada 2010, tetapi sudah ketinggalan zaman. Bahkan 256 GiB Samsung SSD 840 kelas konsumen dapat mempertahankan penulisan 100 GiB per hari selama lebih dari 2 tahun.
AlexP
Jika Anda memiliki banyak RAM, mengurangi swappiness membuat perbedaan lebih kecil daripada jika Anda memiliki RAM terbatas. Sebenarnya menginstal banyak RAM membuat tweak lain untuk bertukar redundan jika cukup sehingga Anda dapat menghindari bertukar. Buat partisi swap untuk stabilitas "berjaga-jaga", 99,9% dari waktu itu tidak akan digunakan, dan Anda akan mempertahankan kinerja yang hebat.
thomasrutter
1
Juga, hal tentang siklus penulisan SSD terbatas tidak benar selama lebih dari satu dekade, sudah saatnya FUD ini perlu diserukan. Maaf, komentar ini sangat berlebihan mengingat AlexP sudah membahas hal ini, tetapi perlu digarisbawahi. SSD sangat bagus untuk aplikasi yang berat.
thomasrutter
1
Leveling aus pada SSD menjadi hal yang populer di sekitar tahun 2008 ( makalah 2008 | artikel Anandtech 2009 ). "Apakah laptop pada titik harga konsumen normal bahkan datang dengan SSD pada 2008" huh tidak, SSD gila mahal dan tidak benar-benar datang standar.
thomasrutter
3

Menurut jawaban Gilles

... Dulu ada batas ukuran swap 2GB (pada sebagian besar platform 32-bit), tetapi ini tidak terjadi selama bertahun-tahun. Keterbatasan telah dihapus di beberapa titik dalam seri kernel 2.2.

Selain itu, ia mengutip halaman manual untuk mkswap:

Ukuran maksimum yang berguna dari area swap tergantung pada arsitektur dan versi kernel.

Di perpustakaan linux / swap.h ada MAX_SWAPFILESentri, jadi ada batasan pada jumlah file swap pada tingkat kernel, namun itu tampaknya juga bukan area definitif. Menurut dokumen tertaut:

Perlu dicatat bahwa enam bit untuk "tipe" harus memungkinkan hingga 64 area swap ada dalam arsitektur 32 bit, bukan pembatasan MAX_SWAPFILES dari 32

Yang saya pahami memiliki maksimum hingga 64 swap file pada arsitektur 32-bit. Namun, saya belum memperhatikan dalam dokumen yang menyebutkan apa yang akan terjadi pada arsitektur 64-bit. Juga perlu dicatat bahwa dalam kasus ini , upaya OP untuk membuat file swap gagal pada entri ke-30.

Mengenai partisi swap, tampaknya tidak ada batasan untuk itu di kernel, selain constat yang disebutkan sebelumnya, tetapi jumlah partisi apa pun masih akan dibatasi oleh BIOS dan tata letak disk yang mendasarinya .

Sergiy Kolodyazhnyy
sumber
2

Jawaban ini mungkin tidak sesuai untuk Ubuntu 18.04 (terima kasih kepada @Chai T. Rex untuk menunjukkan ini di komentar).

Bagaimanapun untuk versi sebelumnya, ini dia (masih belum ada pembaruan yang diusulkan LTS> LTS, jadi ini mungkin masih relevan):

Ini bukan file, ini partisi, dan ya itu karena swappiness

Parameter swappiness mengontrol kecenderungan kernel untuk memindahkan proses dari memori fisik dan ke swap disk. Karena disk jauh lebih lambat daripada RAM, ini dapat menyebabkan waktu respons yang lebih lambat untuk sistem dan aplikasi jika proses terlalu banyak dipindahkan keluar dari memori.

Jadi pada dasarnya jika partisi swap Anda jauh lebih besar daripada RAM yang Anda miliki, sistem akan cenderung untuk bertukar lebih, menyebabkan kelambatan umum.

dadexix86
sumber
4
Ada swap file sekarang, dan mereka adalah default (bukan partisi) ketika menginstal 18,04 dari awal.
Chai T. Rex
1
Saya menganggap perilaku swap cukup banyak tetap sama, tidak peduli apakah itu didukung oleh partisi atau file. Anda juga dapat memiliki banyak file swap dan / atau partisi secara bersamaan. Bagaimanapun, saya tidak berpikir lebih banyak swap akan memiliki efek negatif sementara masih ada RAM yang tersisa.
Byte Commander
Saya akan menganggap hal yang sama, tetapi sampai saya dapat mengatasinya, ini hanya asumsi liar
dadexix86
Ada swap partisi dan ada file swap. Partisi swap dapat digunakan oleh dua atau lebih instalasi Linux pada PC yang sama (dual boot atau triple boot). Partisi swap lebih baik jika disk penuh di mana file swap dapat dibuat terfragmentasi. ... File swap akan berfungsi sebaik partisi swap jika file tersebut dibuat pada disk yang tidak lengkap untuk menghindari fragmentasi - Devon van Schoor j
Devon van Schoor
2

Tidak ada banyak perbedaan dalam kecepatan atau kinerja ketika meningkatkan partisi swap menjadi besar secara sewenang-wenang.

Ada beberapa faktor yang terkait dengan swap yang dapat memengaruhi kinerja seperti swappinessdan tipe hard drive (SDD atau HDD).

Swap cukup lambat dan peningkatan swappiness mengurangi kinerja. Namun itu hanya berpengaruh jika tidak ada RAM yang cukup. Tapi itu lebih baik daripada tidak memiliki swap apa pun. Rekomendasi saya adalah membuat ukuran partisi swap dua kali lebih besar dari RAM Anda.

Zanna
sumber
5
rekomendasi itu sudah usang. Sistem modern dengan 32 atau 64GB RAM tidak perlu swap 64 atau 128GB
phuclv
3
@ LưuVĩnhPhúc Saya tidak akan menggunakan lebih dari 2GB swap hari ini ...
el.pescado
2gb tampaknya sangat rendah ... mesin atau game virtual benar-benar dapat mengisi lebih dari 2gb swap dengan sangat cepat. Saya pikir swap 4 hingga 8gb bekerja dengan baik dengan jumlah ram apa pun. Jika Anda membutuhkan lebih dari 8GB maka Anda mungkin harus menambahkan lebih banyak ram.
Germain
0

Saya sampai pada kenyataan bahwa file swap atau partisi swap praktis tidak memiliki batas. Juga, file swap 16GB saya cukup besar tetapi ukurannya tidak mempengaruhi kecepatan.

Namun apa yang saya kumpulkan adalah apa yang mempengaruhi kecepatan adalah sistem sebenarnya memanfaatkan ruang swap itu sebagai lawan perangkat keras fisik.

Solusi saya untuk itu adalah membuat nilai swappiness tinggi sehingga swap tidak terlalu digunakan sebagai lawan perangkat keras yang lebih cepat. jadi saya lakukan:

sudo -s
nano /etc/sysctl.conf

Ditambahkan ke file:

#vm.swappiness = 50

menyimpan

sudo sysctl -p

untuk menyegarkan (atau bisa saja reboot)

Devon van Schoor
sumber
Menambahkan baris #vm.swappiness = 50ke /etc/sysctl.conftidak memiliki efek apa pun, pemimpin #membuat baris ini menjadi komentar, hapus saja. Anda dapat memeriksa swappiness dengan cat /proc/sys/vm/swappiness.
mook765
Tetapi metode yang saya jelaskan berhasil. Ketika saya memasukkan [cat / proc / sys / vm / swappiness] saya mendapatkan 50 sebagai hasilnya
Devon van Schoor