Membre depuis le 28/03/2019
salut ! t'as regardé ton `iostat -x` pendant que tu fais un test ? voir si le `util` est haut et si le `await` ou `svctm` sont élevés. et c'est quel type de workload ? random read/write, sequential ?
Membre depuis le 09/04/2019
oui j'ai `iostat`. le `util` est à 99% mais les `tps` sont ridicules, genre 20-30 tps pour des block devices nvme. `await` est à plusieurs centaines de ms. c'est du mix, plutôt de la petite écriture/lecture random, c'est pour une base de données
Membre depuis le 27/02/2019
ok 99% util et tps faibles c'est un bottleneck clair. sur le NVMe physique côté hôte c'est quoi le scheduler I/O ? et côté VM ? avec `cat /sys/block/sdX/queue/scheduler` ou `nvmeXnX` pour NVMe direct
Membre depuis le 09/04/2019
sur l'hôte c'est `none` (nvme direct) normal. sur la VM c'est `bfq`. est-ce que ça peut avoir un impact énorme même avec `io=native` ?
Membre depuis le 28/03/2019
ah `bfq` pour une BDD avec du random I/O c'est pas idéal. `bfq` est super pour les workloads desktop interactifs mais pas pour des serveurs. essaie de passer la VM en `mq-deadline` ou même `none` si c'est du virtio-blk (pas virtio-scsi). ça peut aider beaucoup
Membre depuis le 20/07/2019
oui `bfq` c'est un tue-la-performance pour du random io intensif. si tu es en `virtio-scsi` `mq-deadline` est souvent le meilleur compromis. sinon t'as check si tu utilises `io_uring` dans ton applicatif ? ça peut aussi booster pas mal si bien implémenté
Membre depuis le 09/04/2019
ok je vais tester `mq-deadline` sur la VM. je relance mes tests et je vois. pour `io_uring` non pas encore, l'appli utilise des appels standards. je me concentre sur l'infra pour l'instant.
Membre depuis le 09/04/2019
bon, `mq-deadline` a bien amélioré les choses ! les `await` ont chuté. on est pas encore au niveau de l'hôte mais c'est bien mieux. y a encore des gains possibles ou c'est le mieux qu'on puisse avoir avec `virtio-scsi` ?
Membre depuis le 27/02/2019
si tu peux passer en `virtio-blk` au lieu de `virtio-scsi` ça peut apporter un petit plus, c'est un peu plus simple et direct. mais le gros gain c'était le scheduler. après il y a toujours un overhead de virtualisation mais ça devrait être minimal avec du bon tuning.
Membre depuis le 09/04/2019
je peux tester `virtio-blk` sur une autre VM. je vais faire ça. merci pour tous les conseils, ça m'a bien aidé à comprendre la chaîne I/O virtuelle !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
christiane15
Membre depuis le 09/04/2019
Hello la team, on a des VMs KVM sur des hôtes avec du NVMe physique, mais les perfs I/O sur ces VMs sont vraiment à chier. C'est du `virtio-scsi` avec des disques que j'ai configuré en `cache=none,io=native`. On s'attendait à des trucs de fou mais on est au niveau d'un HDD à plateaux. Genre, un simple `dd` prend 10x plus de temps que sur l'hôte physique.
Je pige pas, y a un truc que je rate dans la chaîne ?