GNU/Linux >> Belajar Linux >  >> Linux

Menganalisis kasus yang mendukung dan menentang pengaturan ruang swap pada instans cloud

Jika Anda ingin memulai argumen dengan pengguna Linux, tanyakan tentang swap Penyimpanan. Beberapa memujinya sebagai bantalan atau sebagai jaring pengaman sementara yang lain meremehkannya sebagai penopang dan perusak kinerja sistem. Lahir pada 1960-an, memori swap telah berkembang selama bertahun-tahun di Linux untuk melayani dua fungsi penting:

  • Memori darurat saat sistem menggunakan semua RAM-nya dan masih membutuhkan lebih banyak lagi
  • Tempat parkir untuk halaman memori yang jarang digunakan yang menghabiskan RAM sistem yang berharga

Banyak distribusi Linux, termasuk Red Hat, merekomendasikan memori swap untuk semua sistem. Namun, jika Anda melihat sebagian besar instance cloud dari berbagai distribusi, Anda menemukan bahwa memori swap tidak ada.

[ Anda mungkin juga menyukai: Pemecahan masalah Linux 101:Kinerja sistem ]

Ikhtisar pertukaran

Swap ada di sebagian besar sistem sebagai partisi pada disk. Setelah mempartisi, administrator memformat partisi dengan mkswap , aktifkan dengan swapon , dan kernel langsung melihat memori swap yang tersedia. Sistem tanpa partisi yang tersedia dapat menggunakan file swap, yang hanya merupakan file pada sistem file yang ada yang diformat dengan mkswap dan diaktifkan.

Kedua metode bekerja dengan baik, tetapi menempatkan swap pada partisi menghasilkan kinerja yang lebih baik karena Anda melewatkan overhead file swap pada partisi yang ada.

Ketika RAM sistem langka, Linux dapat menyimpan halaman memori di swap untuk menghindari mematikan proses dan merusak sistem. Disk jauh lebih lambat daripada RAM sistem, dan ini mengurangi kinerja sistem hingga RAM sistem kosong. Jika penggunaan memori terus meningkat ke titik di mana RAM sistem dan swap benar-benar habis, pembunuh Kehabisan Memori (OOM) muncul dan mulai menghentikan proses hingga tersedia cukup RAM.

Saran lama tentang ukuran swap adalah dua kali lipat ukuran RAM sistem Anda. Misalnya, alokasikan 2GB swap untuk sistem dengan 1GB RAM sistem. Meskipun rasio ini bekerja dengan baik untuk sistem yang lebih kecil, rasio ini tidak ditingkatkan untuk sistem dengan ratusan gigabyte RAM sistem.

Kasus untuk swap di cloud

Munculnya layanan mikro (layanan kecil yang saling berhubungan yang membentuk aplikasi besar) mendorong perusahaan untuk menyebarkan lebih banyak instans yang lebih kecil. Instans yang lebih kecil hadir dengan RAM sistem yang lebih sedikit, yang meningkatkan risiko pembunuh OOM yang ditakuti muncul untuk menghentikan proses hingga sistem memiliki cukup memori bebas.

Menambahkan swap ke sistem ini membantu dalam dua cara:

  • Pertama, proses dapat secara singkat keluar dari RAM sistem ke dalam swap selama periode beban tinggi. Administrator mempelajari tentang peristiwa ini dari sistem pemantauan mereka, dan mereka memiliki waktu untuk menyelidiki alasan ledakan saat itu terjadi pada sistem. Dalam kasus kebocoran memori, pengembang dapat memeriksa proses untuk memahami apa yang salah saat masih hidup. Ini juga bisa menjadi sinyal bahwa administrator membutuhkan jenis instans yang lebih besar untuk aplikasi mereka seiring pertumbuhannya.
  • Kedua, kernel Linux mengawasi halaman memori yang jarang digunakan dan mengirimkannya untuk ditukar untuk mempertahankan RAM sistem yang berharga. sysctl menyetel vm.swappiness mengontrol keinginan kernel untuk mendorong halaman memori untuk bertukar. Ini dapat membantu instance cloud dengan menyimpan halaman paling aktif di RAM sistem sambil mendorong halaman yang jarang digunakan untuk menukar memori.

Kasus terhadap swap di cloud

Analogi "hewan peliharaan vs ternak" sering muncul ketika berbicara tentang instance cloud dan administrator membuang swap karena mereka dapat secara otomatis mengganti instance yang berperilaku tidak semestinya dengan yang baru. Seiring waktu, metrik pemantauan mereka menunjukkan peningkatan dalam kasus yang membutuhkan penggantian karena pembunuh OOM membuat aplikasi mereka offline. Solusinya bisa berupa instance yang lebih besar atau penyelidikan lebih lanjut tentang kebocoran memori yang sedang dimuat. Systemd juga akan memulai ulang proses ini dengan cepat jika memungkinkan.

Memilih lokasi memori swap pada instans cloud membutuhkan lebih banyak pemikiran dan perencanaan. Pada server fisik, swap pada disk Non-Volatile Memory Express (NVMe) yang terpasang secara lokal cukup cepat, tetapi bagaimana dengan instance cloud dengan penyimpanan eksternal terpasang, seperti Elastic Block Storage (EBS) AWS? Performa pada EBS bervariasi tergantung pada jenis EBS yang Anda pilih dan sistem tetangga Anda. Tukar pada sistem penyimpanan jarak jauh dapat menyebabkan kinerja instans yang buruk ketika sistem melebihi RAM-nya. Administrator dapat memilih untuk menghilangkan swap dan mengganti instance ini saat mereka memenuhi RAM mereka alih-alih bergulat dengan permintaan penanganan server yang berkinerja buruk.

Terakhir, banyak instance cloud menjadi bagian dari kluster Kubernetes dan OpenShift, dan mereka memiliki tantangan saat berurusan dengan memori swap. Ada masalah GitHub yang sudah berjalan lama tentang penanganan memori swap dengan tepat karena membuang akuntansi memori untuk container. Ada solusi, tetapi memori swap umumnya dilewati pada sistem ini.

Menerapkan instance cloud dengan swap

Jika Anda memutuskan bahwa penyediaan memori swap menguntungkan aplikasi Anda, cloud-init memberi Anda kemampuan untuk menyediakan memori swap pada boot pertama menggunakan mounts modul. Cukup tambahkan beberapa baris ke data pengguna cloud-config yang ada:

swap:
    filename: /swapfile
    size: auto
    maxsize: 4294967296

Konfigurasi ini memberi tahu cloud-init untuk membuat file swap di /swapfile dengan ukuran otomatis yang sama dengan atau kurang dari 4GB. Rumus untuk ukuran swap otomatis ada di kode sumber cloud-init:

formulas = [
    # < 1G: swap = double memory
    (1 * GB, lambda x: x * 2),
    # < 2G: swap = 2G
    (2 * GB, lambda x: 2 * GB),
    # < 4G: swap = memory
    (4 * GB, lambda x: x),
    # < 16G: 4G
    (16 * GB, lambda x: 4 * GB),
    # < 64G: 1/2 M up to max
    (64 * GB, lambda x: x / 2),
]

Ukuran swap yang disarankan dari Red Hat sedikit berbeda:

  • 2GB atau kurang dari RAM sistem :2x RAM
  • Lebih dari 2 GB hingga 8 GB : 1x RAM
  • Lebih dari 8GB hingga 64GB : Minimal 4 GB
  • Lebih dari 64 GB : minimal 4 GB

Anda dapat secara manual menentukan memori swap (dalam byte) dengan size: parameter
di cloud-config:

swap:
    filename: /swapfile
    size: 2147483648  # 2 GiB

Penyediaan swap pada instance cloud yang ada

Untuk contoh yang ada, file swap seringkali merupakan metode termudah untuk mengaktifkan memori swap. Dalam contoh ini, tempatkan file swap 2 GB di /swapfile :


# BTRFS only #################################################################
# We must disable copy-on-write updates for swap files on btrfs file systems.
# The 'swapon' step fails if you skip these steps.
truncate -s 0 /swapfile
chattr +C /swapfile
# BTRFS only #################################################################

# A 2 GiB swap file.
dd if=/dev/zero of=/swapfile bs=1MiB count=2048

# Set the correct permissions on the swap file.
chmod 0600 /swapfile

# Format the swapfile.
mkswap /swapfile

# Enable the swapfile.
swapon /swapfile

# Add it to /etc/fstab to enable it after reboot.
echo "/swapfile none swap defaults 0 0" >> /etc/fstab

Periksa apakah memori swap Anda sudah siap:

$ cat /proc/swaps
Filename        Type    Size      Used    Priority
/swapfile       file    2097148   0       -2

[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ] 

Selesai

Memori swap memberikan dua manfaat berharga:

  • Bantal pengaman saat penggunaan RAM sistem meningkat ke tingkat yang berbahaya
  • Tempat parkir untuk halaman memori yang jarang digunakan yang menghabiskan ruang berharga di RAM sistem 

Bantalan pengaman itu disertai dengan penalti kinerja karena paging memori ke disk sangat lambat dibandingkan dengan memori sistem.

Penerapan cloud jarang melihat memori swap dikerahkan, tetapi swap masih memiliki manfaat di sana. Memilih untuk menerapkan swap memungkinkan adanya bantalan keamanan saat aplikasi berperilaku tidak semestinya, tetapi dapat menyebabkan aplikasi berjalan lambat hingga masalah konsumsi memori teratasi. Melewatkan swap menghilangkan bantalan tetapi memastikan bahwa aplikasi yang berperilaku tidak semestinya segera berhenti. Administrator cloud harus memiliki rencana untuk menangani situasi ini.

Untungnya, cloud-init muncul di sebagian besar instans cloud, dan memungkinkan pembuatan file swap hanya dengan beberapa baris YAML. Memori swap juga mudah dikonfigurasi setelah penerapan menggunakan perintah atau skrip shell sederhana.

Apakah Anda memilih untuk menggunakan memori swap atau tidak, pastikan Anda memiliki rencana saat hal terburuk terjadi. Pantau sistem dengan tepat dan pertahankan tampilan holistik dari aplikasi yang mereka layani.


Linux
  1. Linux – Bagaimana Cara Menggunakan Ruang Swap Untuk Keadaan Darurat Saja?

  2. CloudBerry – Pencadangan Cloud Lintas-Platform Sempurna untuk Individu dan Profesional TI

  3. Pemantauan dan manajemen memori

  1. Berapa jumlah ruang swap yang tepat untuk sistem Linux modern?

  2. Linux – Apa Memori Tinggi dan Memori Rendah Di Linux?

  3. Memecahkan masalah ruang disk yang rendah untuk server cloud Linux

  1. cloudHQ – Sinkronkan Google Apps dan G Suite ke Akun Cloud Gratis

  2. Rancang dan bangun Server Cloud untuk stabilitas

  3. Memecahkan masalah ruang disk yang rendah untuk server cloud Windows