Запись жесткого диска происходит медленно, когда 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/sVM (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Я предполагаю, что слой кэширования или уровня виртуализации памяти распознает нули в потоке данных и, таким образом, создает разреженную запись в изображении диска.
> 400 МБ / с, как сообщается VM, совершенно нереально 7200 об / мин. 120-150 МБ / с является реалистичным, но высокая, непрерывная скорость записи,> 400 МБ / с - нет.
Чтобы проверить, является ли это кешированием памяти, выберите большую запись, например, в два раза большую память. Это удаляет влияние кэша записи из уравнения и скажет вам, что уровень виртуализации делает некоторые обманки со всеми нулями.
Вы также можете попробовать прочитать ненулевой файл данных, например, ISO, и посмотреть, какую производительность записи вы получите. Если это так же быстро, это также означает, что данные на самом деле не записаны на диск, а просто кэшированы large .
В системе с недавно обрезанным ssd я достигаю 42 МБ / с , Это, вероятно, медленнее, чем диск может выполнять в последовательной записи, поскольку dsync означает синхронную операцию ввода-вывода. Если я изменю размер блока на 1М, а число до 400, я достигаю ок. 80 Мбайт / с на SSD, что указывает на то, что операция синхронизации играет большую роль на низкой скорости.
Я предполагаю, что слой кэширования или уровня виртуализации памяти распознает нули в потоке данных и, таким образом, создает разреженную запись в изображении диска.
> 400 МБ / с, как сообщается VM, совершенно нереально 7200 об / мин. 120-150 МБ / с является реалистичным, но высокая, непрерывная скорость записи,> 400 МБ / с - нет.
Чтобы проверить, является ли это кешированием памяти, выберите большую запись, например, в два раза большую память. Это удаляет влияние кэша записи из уравнения и скажет вам, что уровень виртуализации делает некоторые обманки со всеми нулями.
Вы также можете попробовать прочитать ненулевой файл данных, например, ISO, и посмотреть, какую производительность записи вы получите. Если это так же быстро, это также означает, что данные на самом деле не записаны на диск, а просто кэшированы large .
В системе с недавно обрезанным ssd я достигаю 42 МБ / с , Это, вероятно, медленнее, чем диск может выполнять в последовательной записи, поскольку dsync означает синхронную операцию ввода-вывода. Если я изменю размер блока на 1М, а число до 400, я достигаю ок. 80 Мбайт / с на SSD, что указывает на то, что операция синхронизации играет большую роль на низкой скорости.
Я предполагаю, что слой кэширования или уровня виртуализации памяти распознает нули в потоке данных и, таким образом, создает разреженную запись в изображении диска.
> 400 МБ / с, как сообщается VM, совершенно нереально 7200 об / мин. 120-150 МБ / с является реалистичным, но высокая, непрерывная скорость записи,> 400 МБ / с - нет.
Чтобы проверить, является ли это кешированием памяти, выберите большую запись, например, в два раза большую память. Это удаляет влияние кэша записи из уравнения и скажет вам, что уровень виртуализации делает некоторые обманки со всеми нулями.
Вы также можете попробовать прочитать ненулевой файл данных, например, ISO, и посмотреть, какую производительность записи вы получите. Если это так же быстро, это также означает, что данные на самом деле не записаны на диск, а просто кэшированы large .
В системе с недавно обрезанным ssd я достигаю 42 МБ / с , Это, вероятно, медленнее, чем диск может выполнять в последовательной записи, поскольку dsync означает синхронную операцию ввода-вывода. Если я изменю размер блока на 1М, а число до 400, я достигаю ок. 80 Мбайт / с на SSD, что указывает на то, что операция синхронизации играет большую роль на низкой скорости.