Недавно я купил пару накопителей NVME для домашнего сервера, на котором я работаю.
Я решил сделать его более бюджетным и потенциально улучшил IOP, выбрав дополнительную карту от Supermicro, которая использует мост PLX на слоте pcie, чтобы можно было подключить два SSD форм-фактора 2,5 одновременно.
Модель карты: AOC-SLG3-2E4.
Я загрузился в Linux на отдельном обычном SSD и могу видеть, что карта и диски работают нормально, выполнив следующие проверки:
liang@Sonny:~$ lspci |grep 0953
06:00.0 Non-Volatile memory controller: Intel Corporation Device 0953 (rev 01)
07:00.0 Non-Volatile memory controller: Intel Corporation Device 0953 (rev 01)
liang@Sonny:~$ lspci |grep PLX
04:00.0 PCI bridge: PLX Technology, Inc. PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
05:01.0 PCI bridge: PLX Technology, Inc. PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
05:02.0 PCI bridge: PLX Technology, Inc. PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
liang@Sonny:~$
Проблема в том, что я не получаю заявленную скорость записи 900 МБ / с:
liang@Sonny:~$ sudo dd if=/dev/zero of=/dev/nvme0
dd: writing to ‘/dev/nvme0’: Invalid argument
1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000297179 s, 0.0 kB/s
liang@Sonny:~$ sudo dd if=/dev/zero of=/dev/nvme0n1
^C7058361+0 records in
7058361+0 records out
3613880832 bytes (3.6 GB) copied, 14.3664 s, 252 MB/s
liang@Sonny:~$ sudo dd if=/dev/zero of=/dev/nvme1n1
^C764433+0 records in
764433+0 records out
391389696 bytes (391 MB) copied, 2.48995 s, 157 MB/s
liang@Sonny:~$ sudo dd if=/dev/nvme0n1 of=/dev/nvme1n1
^C930417+0 records in
930417+0 records out
476373504 bytes (476 MB) copied, 2.98179 s, 160 MB/s
liang@Sonny:~$ sudo dd if=/dev/nvme0n1 of=/dev/nvme1n1
^C23402049+0 records in
23402049+0 records out
11981849088 bytes (12 GB) copied, 59.4382 s, 202 MB/s
Как видно, это всего около 200 МБ / с. Я проверил, что это не узкое место процессора, и на моем обычном SSD, на который я загружался, я получаю 300 МБ / с:
liang@Sonny:~$ sudo dd if=/dev/nvme0n1 of=/home/liang/asdfasdf
^C3717510+0 records in
3717509+0 records out
1903364608 bytes (1.9 GB) copied, 5.71793 s, 333 MB/s
У кого-нибудь есть подобный опыт? Нужно ли устанавливать какие-то драйверы? Возможно, виновата карта? Или есть что-то, связанное с программным обеспечением, которое создает накладные расходы на скорость передачи?
Ура.
Изменить дополнительную информацию
liang@Sonny:~$ uname -a
Linux Sonny 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Материнская плата: ASUS Z10PE-D8 Disk Код продукта: SSDPE2MW400G4R5 (Intel 750 serises NVME ssd емкостью 400 ГБ)
Вы неправильно оцениваете его: выдача dd if=/dev/zero of=/dev/nvme0
вы используете запись размером 512 байт, что явно очень мало.
Попробуйте использовать dd if=/dev/zero of=/dev/nvme0 bs=1M
и у вас будет гораздо большее число.
Кстати, при использовании записи 512 байт непосредственно подключенный диск имеет более высокую производительность за счет меньшей задержки (PLX неизбежно увеличивает задержку).