Banyak RAM gratis, NVMe Intel P4500 dan semuanya melambat - kisah penambahan partisi swap yang tidak berhasil

Pada artikel ini, saya akan berbicara tentang situasi yang baru-baru ini terjadi dengan salah satu server di cloud VPS kami, membingungkan saya selama beberapa jam. Saya telah mengonfigurasi dan memecahkan masalah server Linux selama sekitar 15 tahun, tetapi kasus ini sama sekali tidak cocok dengan praktik saya - saya membuat beberapa asumsi yang salah dan sedikit putus asa sebelum saya dapat dengan benar menentukan penyebab masalah dan menyelesaikannya.


Pembukaan


Kami mengoperasikan cloud berukuran sedang, yang kami bangun di server tipikal dari konfigurasi berikut - 32 core, 256 GB RAM dan NVMe PCI-E Intel P4500 4TB. Kami sangat menyukai konfigurasi ini, karena memungkinkan kami untuk tidak memikirkan kurangnya IO, memberikan batasan yang benar pada tingkat jenis instance (instance) dari VM. Karena NVMe Intel P4500 memiliki kinerja yang mengesankan, kami dapat secara bersamaan menyediakan ketentuan IOPS penuh untuk mesin dan penyimpanan cadangan ke server cadangan dengan nol IOWAIT.


Kami milik orang percaya lama yang sama yang tidak menggunakan SDN hiper-konvergen dan potongan pemuda yang stylish, modis, untuk menyimpan volume VM, percaya bahwa semakin sederhana sistem, semakin mudah untuk bercanda di bawah kondisi "guru utama pergi ke pegunungan". Sebagai hasilnya, kami menyimpan volume VM dalam format QCOW2 di XFS atau EXT4, yang digunakan di atas LVM2.


Kami juga dipaksa untuk menggunakan QCOW2 oleh produk yang kami gunakan untuk orkestrasi - Apache CloudStack.

, LVM2 (, , LVM2 , Intel P4500 ). lvmcreate -s .. dd ZFS. β€” ZFS , DD VM mount -o loop ....


, , LVM2, RO QCOW2, , , XFS , , . , - "" , - , . XFS RO , LVM2.

, 600-800 MB/s , β€” 10Gbit/s, .


8 . , , , -, , , 8 GB/, -.


, β€” Intel P4500, NFS , , ZFS.



- SWAP 8 GB, - "" DD . 2xSATA SSD RAID1 2xSAS HDD RAID1 LSI HP. , , , " readonly", SWAP-. RAM 30-40% , SWAP .


. :


#!/bin/bash

mkdir -p /mnt/backups/volumes

DIR=/mnt/images-snap
VOL=images/volume
DATE=$(date "+%d")
HOSTNAME=$(hostname)

lvcreate -s -n $VOL-snap -l100%FREE $VOL
ionice -c3 dd iflag=direct if=/dev/$VOL-snap bs=1M of=/mnt/backups/volumes/$HOSTNAME-$DATE.raw
lvremove -f $VOL-snap

ionice -c3, NVMe , IO :


cat /sys/block/nvme0n1/queue/scheduler
[none] 

, legacy- SSD RAID-, , AS IS. , , ionice .


iflag=direct DD. direct IO , IO . , oflag=direct , ZFS .


.


… , , IOWAIT 50%. :


Volume group "images" not found

" Intel P4500", , , . LVM2 LVM2:


vgcfgrestore images

:


β€” , , VPS- , . , β€” iostat IOPS- IOWAIT. , " NVMe" , .



. VPS- 128 GB RAM. , 32 GB . VPS , , SWAP- .


. vm.swappiness - 60. SWAP SAS HDD RAID1.


( ). DD , RAM NFS. , swappiness, VPS , HDD RAID1. , IOWAIT , IO NVMe, IO HDD RAID1.


. 32GB. 16 , , SWAP . swappiness 5 .


Bagaimana ini tidak terjadi . Pertama, jika SWAP menggunakan SSD RAID atau perangkat NVMe, dan kedua, jika tidak ada perangkat NVMe, tetapi akan ada perangkat yang lebih lambat yang tidak akan menghasilkan volume data seperti itu - ironisnya, masalah terjadi NVMe terlalu cepat.


Setelah itu, semuanya mulai bekerja seperti sebelumnya - dengan nol IOWAIT.


All Articles