Итак, дано: SAMSUNG MZVLW512HMJP-00000, материнка https://www.supermicro.com/products/motherboard/Xeon/C236_C232/X11SSE-F.cfm, проц: Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz
Тестируем через:
fio —filename=/dev/nvme0n1 —name=randwrite —ioengine=libaio —iodepth=1 —rw=randwrite —bs=512b —direct=0 —size=128M —numjobs=8 —runtime=240 —group_reporting —fsync=1Да, fsync стоит специально, чтобы не использовать дисковый кеш. Этот бенч выдает ~ 3-6 mb/s и 2k iops. Та же команда на mac book air с обычной ssd выдает 65 mb/s, 11k iops.
А судя по https://ssd.userbenchmark.com/SpeedTest/181300/NVMe-SAMSUNG-MZVLW512 - эта ссд должна выдавать от 70 до 100 mb/s на рандомные 4k.
Перерыл кучу тредов по slow performance с этим ssd на *nix системах и выделил основные направления советов:
- Проверить что разделы выравнены по 512 байт. У всех все было выравнено и все было медленно.
- Проверить что диски действительно подключены к pci express. Проверял через lshw - все ок.
- Проверить что все PCI Express подключены на CPU, а не на PCT (хз что имеется ввиду, но судя по графу lshw - PCI Express подключен к CPU).
- Проверить что процессор не ниже sky lake. У нас следующее поколение - kybe lake, так что все должно быть ок.
- Проверить в BIOS что в биосе для слотов PCI-E стоит режим M.2, а не auto и скорость X4. Не нашел таких параметров на нашей материнке, так что пропускаю.
- Очень многие писали про драйвера - типа под винду установили драйвера от ocz и сразу стало все работать - не можем проверить, поскольку у нас linux и на них нет этих драйверов.
- Так же многие писали про то, что нельзя вставлять nvme ssd в слот ниже графической карточки - типа кто-то переткнул и у них все заработало. Звучит странно, но думаю тут дело кроется в настройках биоса каким-то образом.
- И еще очень много писали про смену материнки - про supermicro ничего не писали, но много было про gigabyte & msi, типа переехали на asus и все стало волшебно.
- У nvme есть параметр write voliate memory - который похоже вообще ни на что не влияет 🙂 Я его и врубал и отрубал и результаты были идентичными (кто хочет проверить - вот так можно его врубить: nvme set-feature -f 0x06 -v 0x01 /dev/nvme0, так - вырубить: nvme set-feature -f 0x06 -v 0x00 /dev/nvme0, а так посмотреть: nvme get-feature -f 0x06 -H /dev/nvme0n1 текущее значение.
В общем я пока склоняюсь к проблеме с драйверами - хотим на винде это же железо погонять, возможно станет понятнее. Есть идеи?