LINUX.ORG.RU

KVM и/или Docker. Нужен ваш совет по конфигурации

 , ,


0

3

Добрый,

Имеется машинка,

Основная:

Basic System Information:
---------------------------------
Processor  : AMD EPYC 7313 16-Core Processor
CPU cores  : 32 @ 1500.000 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 62.8 GiB
Swap       : 0.0 KiB
Disk       : 1.7 TiB

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 973.22 MB/s (243.3k) | 1.48 GB/s    (23.1k)
Write      | 975.79 MB/s (243.9k) | 1.49 GB/s    (23.3k)
Total      | 1.94 GB/s   (487.2k) | 2.97 GB/s    (46.5k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 1.87 GB/s     (3.6k) | 1.92 GB/s     (1.8k)
Write      | 1.97 GB/s     (3.8k) | 2.05 GB/s     (2.0k)
Total      | 3.85 GB/s     (7.5k) | 3.98 GB/s     (3.8k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed     
                |                           |                 |                
Clouvider       | London, UK (10G)          | 974 Mbits/sec   | 8.18 Gbits/sec 
Online.net      | Paris, FR (10G)           | 976 Mbits/sec   | 8.20 Gbits/sec 
Clouvider       | NYC, NY, US (10G)         | 921 Mbits/sec   | 2.10 Gbits/sec 

Geekbench 4 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 6090                          
Multi Core      | 70778                         
Full Test       | https://browser.geekbench.com/v4/cpu/16526240

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 1387                          
Multi Core      | 18104                         
Full Test       | https://browser.geekbench.com/v5/cpu/14129066

VM:

Basic System Information:
---------------------------------
Processor  : AMD EPYC 7313 16-Core Processor
CPU cores  : 32 @ 3000.006 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 15.6 GiB
Swap       : 0.0 KiB
Disk       : 20.0 GiB

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 552.17 MB/s (138.0k) | 5.10 GB/s    (79.7k)
Write      | 553.62 MB/s (138.4k) | 5.12 GB/s    (80.1k)
Total      | 1.10 GB/s   (276.4k) | 10.23 GB/s  (159.8k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 5.15 GB/s    (10.0k) | 5.47 GB/s     (5.3k)
Write      | 5.43 GB/s    (10.6k) | 5.83 GB/s     (5.6k)
Total      | 10.59 GB/s   (20.6k) | 11.30 GB/s   (11.0k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed     
                |                           |                 |                
Clouvider       | London, UK (10G)          | 974 Mbits/sec   | 8.71 Gbits/sec 
Online.net      | Paris, FR (10G)           | 976 Mbits/sec   | 7.53 Gbits/sec 
Clouvider       | NYC, NY, US (10G)         | 915 Mbits/sec   | 1.91 Gbits/sec 

Geekbench 4 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 5971                          
Multi Core      | 60857                         
Full Test       | https://browser.geekbench.com/v4/cpu/16526228

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 1402                          
Multi Core      | 15634                         
Full Test       | https://browser.geekbench.com/v5/cpu/14128941

Использую Proxmox.

Так вот, как видите есть разница в производительности, где-то я теряю, где-то получаю.

Первое меня интересует, можно ли как-то ещё улучшить скорость дисков на 4к блоках чтобы она была ближе к оригиналу? writeback включен. Использую VirIO Block.

Моё желание - это как можно меньше потерять в производительности.

По этому следует ещё один вопрос. Стоит ли вообще создавать и разбивать на VMы или просто всё запускать из под докера(что возможно)? Понятное, что это две разные технологии и сравнивать их грех, но как бы всё же Вы посоветовали?


В proxmox же есть lxc, контейнер, но идеологически это замена виртуалки. У докера совершенно другой подход к контейнерам по сравнению с lxc.

einhander ★★★★★
()

Первое меня интересует, можно ли как-то ещё улучшить скорость дисков на 4к блоках чтобы она была ближе к оригиналу?

Можно - пробросить контроллер в виртуалку.

Minona ★★☆
()
Ответ на: комментарий от Marshy

И что в данном случае даст LXC?

Нативную скорость IO.

Minona ★★☆
()
Ответ на: комментарий от Marshy

Процессы в lxc выполняются на хостовой системе без виртуализации оборудования. Этакий chroot на максималках.

einhander ★★★★★
()
Ответ на: комментарий от einhander

Спасибо! Буду пробовать!

А почему тогда в остальных блоках такая разница в скорости. Учитывая что диски U.2 Gen4, как будто режется на хостовой системе

Marshy
() автор топика
Ответ на: комментарий от einhander

Сделал LXC

Уже выше, но всё равно где-то сжирается…

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 661.10 MB/s (165.2k) | 3.62 GB/s    (56.6k)
Write      | 662.85 MB/s (165.7k) | 3.64 GB/s    (56.9k)
Total      | 1.32 GB/s   (330.9k) | 7.26 GB/s   (113.5k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 1.66 GB/s     (3.2k) | 3.81 GB/s     (3.7k)
Write      | 1.75 GB/s     (3.4k) | 4.06 GB/s     (3.9k)
Total      | 3.41 GB/s     (6.6k) | 7.88 GB/s     (7.6k)
Marshy
() автор топика
Ответ на: комментарий от Marshy

LXC как делал? Если хранишь машины в qcow2, то производительность всё равно будет снижаться, надо хранить на разделах ФС, например, ZFS.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

У меня сделано вот так

В Storage использую тип «директорию».

И да qcow2.

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0    20G  0 loop  
nvme1n1     259:0    0 894.3G  0 disk  
├─nvme1n1p1 259:8    0   511M  0 part  /boot/efi
├─nvme1n1p2 259:9    0     1G  0 part  
│ └─md2       9:2    0  1023M  0 raid1 /boot
├─nvme1n1p3 259:10   0    10G  0 part  
│ └─md3       9:3    0    20G  0 raid0 /
├─nvme1n1p4 259:11   0    10M  0 part  
└─nvme1n1p5 259:12   0 882.7G  0 part  
  └─md5       9:5    0   1.7T  0 raid0 /var/lib/vz
nvme0n1     259:1    0 894.3G  0 disk  
├─nvme0n1p1 259:2    0   511M  0 part  
├─nvme0n1p2 259:3    0     1G  0 part  
│ └─md2       9:2    0  1023M  0 raid1 /boot
├─nvme0n1p3 259:4    0    10G  0 part  
│ └─md3       9:3    0    20G  0 raid0 /
├─nvme0n1p4 259:5    0    10M  0 part  
├─nvme0n1p5 259:6    0 882.7G  0 part  
│ └─md5       9:5    0   1.7T  0 raid0 /var/lib/vz
└─nvme0n1p6 259:7    0     2M  0 part  
Marshy
() автор топика
Ответ на: комментарий от Marshy

И да qcow2.

Ну вот. QCow2 — это просто файл в фс, да ещё со сжатием и Copy-on-Write. Естественно, он будет работать медленнее.

PVE поддерживает ZFS в качестве бакенда, если есть возможность, создай раздел ZFS и делай на нём, нарезать ZFS на дольки под каждую машину PVE будет сама.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

LVM как я понимаю отпадает?

А не будет ли проблемы с ZFS? Ибо у него в дефолте «8K volblocksize», а virtio использует 512B по дефолту, тем самым 4к будет резаться в 2 раза опять же.

Marshy
() автор топика
Ответ на: комментарий от Minona

Рекомендации по конфигурации? EXT4/XFS?

Привязать LVM к директории при инсталяции? Либо из под Proxmox создать?

Marshy
() автор топика
Ответ на: комментарий от Marshy

LVM как я понимаю отпадает?

LVM очень сильно тормозит при наличии на нём хотя бы нескольких снапшотов. Если снапшоты не нужны, пожалуйста.

Aceler ★★★★★
()
Ответ на: комментарий от Minona

Но работает быстрее. ТС-у нужна скорость же.

Aceler ★★★★★
()
Ответ на: комментарий от Marshy

Ибо у него в дефолте «8K volblocksize», а virtio использует 512B по дефолту

А не будет никакого virtio, это же LXC ;-)

Aceler ★★★★★
()
Ответ на: комментарий от Marshy

Если не нужны снапшоты, то с KVM лучше использовать LVM и форматировать полученный том в правильную ФС. Тут я не знаю, какая ФС лучше для твоей задачи.

Или подскажут другие умные люди, или проводи тесты.

Aceler ★★★★★
()
Ответ на: комментарий от Marshy

Ну блин.
pve.proxmox.com
Все ответы там.

EXT4/XFS?

Посмотри тесты на форониксе, емнип, разница в пределах погрешности.

Minona ★★☆
()
Ответ на: комментарий от Aceler

LVM XFS на хосте

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 676.26 MB/s (169.0k) | 736.49 MB/s  (11.5k)
Write      | 678.04 MB/s (169.5k) | 740.37 MB/s  (11.5k)
Total      | 1.35 GB/s   (338.5k) | 1.47 GB/s    (23.0k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 904.72 MB/s   (1.7k) | 976.69 MB/s    (953)
Write      | 952.80 MB/s   (1.8k) | 1.04 GB/s     (1.0k)
Total      | 1.85 GB/s     (3.6k) | 2.01 GB/s     (1.9k)
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1     259:0    0 894.3G  0 disk  
├─nvme0n1p1 259:2    0   511M  0 part  
├─nvme0n1p2 259:3    0     1G  0 part  
│ └─md2       9:2    0  1023M  0 raid1 /boot
├─nvme0n1p3 259:4    0    10G  0 part  
│ └─md3       9:3    0    20G  0 raid0 /
├─nvme0n1p4 259:5    0     1G  0 part  [SWAP]
├─nvme0n1p5 259:6    0 881.8G  0 part  
│ └─vg-data 253:0    0   1.7T  0 lvm   /var/lib/vz
└─nvme0n1p6 259:7    0     2M  0 part  
nvme1n1     259:1    0 894.3G  0 disk  
├─nvme1n1p1 259:8    0   511M  0 part  /boot/efi
├─nvme1n1p2 259:9    0     1G  0 part  
│ └─md2       9:2    0  1023M  0 raid1 /boot
├─nvme1n1p3 259:10   0    10G  0 part  
│ └─md3       9:3    0    20G  0 raid0 /
├─nvme1n1p4 259:11   0     1G  0 part  [SWAP]
└─nvme1n1p5 259:12   0 881.8G  0 part  
  └─vg-data 253:0    0   1.7T  0 lvm   /var/lib/vz
Marshy
() автор топика
Ответ на: комментарий от Marshy

LXC

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 474.59 MB/s (118.6k) | 3.10 GB/s    (48.4k)
Write      | 475.84 MB/s (118.9k) | 3.11 GB/s    (48.7k)
Total      | 950.44 MB/s (237.6k) | 6.22 GB/s    (97.2k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 3.70 GB/s     (7.2k) | 3.68 GB/s     (3.5k)
Write      | 3.89 GB/s     (7.6k) | 3.92 GB/s     (3.8k)
Total      | 7.59 GB/s    (14.8k) | 7.61 GB/s     (7.4k)
Marshy
() автор топика
Ответ на: комментарий от Marshy

Т.е. у тебя без LXC на хосте на XFS показывает почти гигабайт, а с LXC и размещением на XFS на LVM показывает половину?

И KVM быстрее чем LXC. Это очень странно.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Именно. Это ZFS на хосте

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 404.71 MB/s (101.1k) | 2.98 GB/s    (46.6k)
Write      | 405.78 MB/s (101.4k) | 3.00 GB/s    (46.9k)
Total      | 810.49 MB/s (202.6k) | 5.99 GB/s    (93.6k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 4.07 GB/s     (7.9k) | 3.67 GB/s     (3.5k)
Write      | 4.29 GB/s     (8.3k) | 3.91 GB/s     (3.8k)
Total      | 8.37 GB/s    (16.3k) | 7.58 GB/s     (7.4k)

ZFS LXC

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 73.79 MB/s   (18.4k) | 978.31 MB/s  (15.2k)
Write      | 73.98 MB/s   (18.4k) | 983.46 MB/s  (15.3k)
Total      | 147.77 MB/s  (36.9k) | 1.96 GB/s    (30.6k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 1.98 GB/s     (3.8k) | 1.56 GB/s     (1.5k)
Write      | 2.08 GB/s     (4.0k) | 1.66 GB/s     (1.6k)
Total      | 4.07 GB/s     (7.9k) | 3.22 GB/s     (3.1k)
Marshy
() автор топика
Ответ на: комментарий от Marshy

ZFS LXC (добавил ещё пространства, не хватало диска для правильного расчёта).

Это уже похоже на правду, но 4k даже на хосте режется в 2 раза…

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 393.68 MB/s  (98.4k) | 2.69 GB/s    (42.1k)
Write      | 394.72 MB/s  (98.6k) | 2.70 GB/s    (42.3k)
Total      | 788.40 MB/s (197.1k) | 5.40 GB/s    (84.4k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 4.30 GB/s     (8.4k) | 4.48 GB/s     (4.3k)
Write      | 4.52 GB/s     (8.8k) | 4.77 GB/s     (4.6k)
Total      | 8.83 GB/s    (17.2k) | 9.25 GB/s     (9.0k)
Marshy
() автор топика
Ответ на: комментарий от Marshy

Увы, нет. В нашей организации ZFS а) тюнил не я и б) нам производительность на данных в 4к как-то не нужна была.

Aceler ★★★★★
()
Ответ на: комментарий от Dimez

zfs set recordsize

volblocksize для volume (что именно используется можно посмотреть через zfs list -o name,type)

Harliff ★★★★★
()
Ответ на: комментарий от Marshy

А если говорить про KVM?

Снапшоты не нужны)

Тогда LVM (обычный, не thin).

Harliff ★★★★★
()

А чем Вы такие красивые таблички рисуете?

И какие настройки используете для fio?

Harliff ★★★★★
()
Ответ на: комментарий от Harliff

Класический yabs https://github.com/masonr/yet-another-bench-script

Удалось через ZFS достичь такого

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 551.00 MB/s (137.7k) | 5.17 GB/s    (80.8k)
Write      | 552.46 MB/s (138.1k) | 5.20 GB/s    (81.3k)
Total      | 1.10 GB/s   (275.8k) | 10.38 GB/s  (162.2k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 5.12 GB/s    (10.0k) | 6.26 GB/s     (6.1k)
Write      | 5.39 GB/s    (10.5k) | 6.68 GB/s     (6.5k)
Total      | 10.51 GB/s   (20.5k) | 12.94 GB/s   (12.6k)
Marshy
() автор топика
Ответ на: комментарий от Marshy

Но всё же я буду переходить на LVM.

Поделюсь опытом: я использую LVM там, где нужна производительность i/o (VM с СУБД, например) и ZFS — для всего остального (где нет жестких требований к производительности).

Harliff ★★★★★
()
Ответ на: комментарий от Harliff

Благодарю! Буду знать.

А вообще с вашим опытом, как бы вы мне посоветовали сделать? Всё запихнуть по докер контейнерам либо VMы?

Marshy
() автор топика
Ответ на: комментарий от Marshy

Я плохо разбираюсь в контейнерах, что бы давать по ним компетентные советы. Там есть нюансы, которые нужно понимать, что бы не «выстрелить себе в ногу». Например, по-умолчанию в docker используется storage типа overlay, который не особенно-то масштабируется. Я пока контейнеры (docker) использую только что бы что-то запустить и протестировать, поэтому всех нюансов не знаю.

Контейнеры — штука хорошая (быстро разворачиваемая и легковесная), но нужно уметь с ними работать и понимать их ограничения. Попробуйте!

Кстати, в proxmox’e, из коробки, используется не docker, a lxc. Почитайте документацию.

Harliff ★★★★★
()
17 мая 2022 г.

Подскажите пожалуйста. какую утилиту использовали для просмотра информации о системе.

Stazot
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.