Запись жестких дисков происходит быстрее на виртуальной машине (Vagrant box) и медленнее на голом металле (хосте)

Запись жесткого диска происходит медленно, когда ubuntu работает на голом металле. Я начал коробку Vagrant на том же хосте (работает с той же версией Ubuntu), и записи очень быстрые по сравнению с голым металлом.

Ниже приведены выходные данные различных команд, связанных с производительностью жесткого диска, как от хоста, так и от виртуальной машины. Любая идея, что я должен настроить, чтобы улучшить скорость записи на голом металле?

Bare Metal

$ dd if=/dev/zero of=/tmp/output bs=384k count=1k oflag=dsync 1024+0 records in 1024+0 records out 402653184 bytes (403 MB) copied, 37.4866 s, 10.7 MB/s

VM (Vagrant Box)

$ dd if=/dev/zero of=/tmp/output bs=384k count=1k oflag=dsync 1024+0 records in 1024+0 records out 402653184 bytes (403 MB) copied, 37.4866 s, 10.7 MB/s

vagrant@vagrant-ubuntu-trusty-64:~$ sudo dd if=/dev/zero of=/tmp/output bs=384k count=1k oflag=dsync 1024+0 records in 1024+0 records out 402653184 bytes (403 MB) copied, 0.923299 s, 436 MB/s

$ lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk sda1 8:1 0 802.9G 0 part md0 9:0 0 802.8G 0 raid1 / sda2 8:2 0 1K 0 part sda5 8:5 0 35.5G 0 part md1 9:1 0 35.4G 0 raid1 [SWAP] sda6 8:6 0 93.1G 0 part md2 9:2 0 93.1G 0 raid1 /home sdb 8:16 0 931.5G 0 disk sdb1 8:17 0 802.9G 0 part md0 9:0 0 802.8G 0 raid1 / sdb2 8:18 0 1K 0 part sdb5 8:21 0 35.5G 0 part md1 9:1 0 35.4G 0 raid1 [SWAP] sdb6 8:22 0 93.1G 0 part md2 9:2 0 93.1G 0 raid1 /home $ mount | grep md0 /dev/md0 on / type ext4 (rw,errors=remount-ro)

На хосте,

$ lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk sda1 8:1 0 802.9G 0 part md0 9:0 0 802.8G 0 raid1 / sda2 8:2 0 1K 0 part sda5 8:5 0 35.5G 0 part md1 9:1 0 35.4G 0 raid1 [SWAP] sda6 8:6 0 93.1G 0 part md2 9:2 0 93.1G 0 raid1 /home sdb 8:16 0 931.5G 0 disk sdb1 8:17 0 802.9G 0 part md0 9:0 0 802.8G 0 raid1 / sdb2 8:18 0 1K 0 part sdb5 8:21 0 35.5G 0 part md1 9:1 0 35.4G 0 raid1 [SWAP] sdb6 8:22 0 93.1G 0 part md2 9:2 0 93.1G 0 raid1 /home $ mount | grep md0 /dev/md0 on / type ext4 (rw,errors=remount-ro)

На VM

$ hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST1000NM0033-9ZM173 Serial Number: Z1W3BGQQ Firmware Revision: SN04 Transport: Serial, SATA Rev 3.0 Standards: Supported: 9 8 7 6 5 Likely used: 9 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 1953525168 Logical Sector size: 512 bytes Physical Sector size: 512 bytes Logical Sector-0 offset: 0 bytes device size with M = 1024*1024: 953869 MBytes device size with M = 1000*1000: 1000204 MBytes (1000 GB) cache/buffer size = unknown Form Factor: 3.5 inch Nominal Media Rotation Rate: 7200
0
задан 2 May 2018 в 21:13

3 ответа

Я предполагаю, что слой кэширования или уровня виртуализации памяти распознает нули в потоке данных и, таким образом, создает разреженную запись в изображении диска.

> 400 МБ / с, как сообщается VM, совершенно нереально 7200 об / мин. 120-150 МБ / с является реалистичным, но высокая, непрерывная скорость записи,> 400 МБ / с - нет.

Чтобы проверить, является ли это кешированием памяти, выберите большую запись, например, в два раза большую память. Это удаляет влияние кэша записи из уравнения и скажет вам, что уровень виртуализации делает некоторые обманки со всеми нулями.

Вы также можете попробовать прочитать ненулевой файл данных, например, ISO, и посмотреть, какую производительность записи вы получите. Если это так же быстро, это также означает, что данные на самом деле не записаны на диск, а просто кэшированы large .

В системе с недавно обрезанным ssd я достигаю 42 МБ / с , Это, вероятно, медленнее, чем диск может выполнять в последовательной записи, поскольку dsync означает синхронную операцию ввода-вывода. Если я изменю размер блока на 1М, а число до 400, я достигаю ок. 80 Мбайт / с на SSD, что указывает на то, что операция синхронизации играет большую роль на низкой скорости.

0
ответ дан 17 July 2018 в 15:26

Я предполагаю, что слой кэширования или уровня виртуализации памяти распознает нули в потоке данных и, таким образом, создает разреженную запись в изображении диска.

> 400 МБ / с, как сообщается VM, совершенно нереально 7200 об / мин. 120-150 МБ / с является реалистичным, но высокая, непрерывная скорость записи,> 400 МБ / с - нет.

Чтобы проверить, является ли это кешированием памяти, выберите большую запись, например, в два раза большую память. Это удаляет влияние кэша записи из уравнения и скажет вам, что уровень виртуализации делает некоторые обманки со всеми нулями.

Вы также можете попробовать прочитать ненулевой файл данных, например, ISO, и посмотреть, какую производительность записи вы получите. Если это так же быстро, это также означает, что данные на самом деле не записаны на диск, а просто кэшированы large .

В системе с недавно обрезанным ssd я достигаю 42 МБ / с , Это, вероятно, медленнее, чем диск может выполнять в последовательной записи, поскольку dsync означает синхронную операцию ввода-вывода. Если я изменю размер блока на 1М, а число до 400, я достигаю ок. 80 Мбайт / с на SSD, что указывает на то, что операция синхронизации играет большую роль на низкой скорости.

0
ответ дан 20 July 2018 в 15:51

Я предполагаю, что слой кэширования или уровня виртуализации памяти распознает нули в потоке данных и, таким образом, создает разреженную запись в изображении диска.

> 400 МБ / с, как сообщается VM, совершенно нереально 7200 об / мин. 120-150 МБ / с является реалистичным, но высокая, непрерывная скорость записи,> 400 МБ / с - нет.

Чтобы проверить, является ли это кешированием памяти, выберите большую запись, например, в два раза большую память. Это удаляет влияние кэша записи из уравнения и скажет вам, что уровень виртуализации делает некоторые обманки со всеми нулями.

Вы также можете попробовать прочитать ненулевой файл данных, например, ISO, и посмотреть, какую производительность записи вы получите. Если это так же быстро, это также означает, что данные на самом деле не записаны на диск, а просто кэшированы large .

В системе с недавно обрезанным ssd я достигаю 42 МБ / с , Это, вероятно, медленнее, чем диск может выполнять в последовательной записи, поскольку dsync означает синхронную операцию ввода-вывода. Если я изменю размер блока на 1М, а число до 400, я достигаю ок. 80 Мбайт / с на SSD, что указывает на то, что операция синхронизации играет большую роль на низкой скорости.

0
ответ дан 23 July 2018 в 16:22

Другие вопросы по тегам:

Похожие вопросы: