Beaucoup de RAM gratuite, NVMe Intel P4500 et tout ralentit - l'histoire de l'ajout infructueux de la partition de swap

Dans cet article, je vais parler de la situation qui s'est récemment produite avec l'un des serveurs de notre cloud VPS, ce qui m'a dérouté pendant plusieurs heures. Je configure et dépanne des serveurs Linux depuis environ 15 ans, mais ce cas ne correspond pas du tout à ma pratique - j'ai fait de fausses hypothèses et je suis un peu désespéré avant de pouvoir déterminer correctement la cause du problème et le résoudre.


Préambule


Nous exploitons un cloud de taille moyenne, que nous construisons sur des serveurs typiques de la configuration suivante - 32 cœurs, 256 Go de RAM et NVMe PCI-E Intel P4500 4 To. Nous aimons vraiment cette configuration, car elle nous permet de ne pas penser au manque d'E / S, fournissant la restriction correcte au niveau des types d'instances (instances) de la VM. Étant donné que le NVMe Intel P4500 a des performances impressionnantes, nous pouvons simultanément fournir à la fois la fourniture complète d'IOPS aux machines et le stockage de sauvegarde à un serveur de sauvegarde sans IOWAIT.


Nous appartenons aux mêmes vieux croyants qui n'utilisent pas de SDN hyper-convergents et d'autres pièces de jeunesse élégantes et à la mode pour stocker des volumes de VM, estimant que plus le système est simple, plus il est facile de plaisanter dans les conditions de «le gourou principal est allé à la montagne». En conséquence, nous stockons les volumes de VM au format QCOW2 dans XFS ou EXT4, qui est déployé sur LVM2.


Nous sommes également obligés d'utiliser QCOW2 par le produit que nous utilisons pour l'orchestration - 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 .


Comment cela pourrait-il ne pas arriver ? Premièrement, si SWAP était sur un périphérique SSD RAID ou NVMe, et deuxièmement, s'il n'y avait pas de périphérique NVMe, mais il y aurait un périphérique plus lent qui ne produirait pas un tel volume de données - ironiquement, le problème s'est produit que NVMe est trop rapide.


Après cela, tout a commencé à fonctionner comme avant - avec zéro IOWAIT.


All Articles