LINUX.ORG.RU
ФорумAdmin

Не масштабируется скорость записи на Intel Optane

 , ,


0

3

Здравствуйте!

Есть компьютер, в который вставлены 3 диска Intel Optane. Последовательная запись на каждый по отдельности даёт ожидаемые ~2.2 ГБ/сек. Я рассчитываю, что одновременная запись на все три диска должна достигать ~6.6 Гб/сек. Однако, при попытке писать сразу на два диска суммарная скорость записи упирается в 3 Гб/сек. При попытке писать на три диска одновременно потолок снова 3 Гб/сек. Подскажите, пожалуйста, где искать причину этого ограничения.

Ядро 4.20.3, Ubuntu, процессор Сore i7 7800X. Htop показывает большую kernel-загрузку для пары-тройки ядер, остальные в простое.

Здесь вывод /proc/interrupts: http://paste.ubuntu.com/p/h4PC9WWVSv/

А там отдельных линий pci-e до проца хватает-то? А то у чипсета их типо много, но на самом деле до проца идёт к нему четыре, плюс отдельный x16 слот.

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

А то у чипсета их типо много, но на самом деле до проца идёт к нему четыре, плюс отдельный x16 слот.

Ого, вот это новость. А как об этом узнать поподробней?

johnsmithololo2 ()

Однако, при попытке писать сразу на два диска суммарная скорость записи упирается в 3 Гб/сек. При попытке писать на три диска одновременно потолок снова 3 Гб/сек

У тебя raid-массив? Чем измеряешь скорость?

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

Нет, не RAID-массив. Работаю с каждым диском по отдельности. Измеряю скорость через iotop. Запускаю три процесса (каждый пишет на свой оптан) - смотрю Total/Actual DISK WRITE

johnsmithololo2 ()

1 канал 1x PCI-E пропускает 1G/s.
3G/s сильно похоже на 3 х 1х PCI-E. Надо смотреть по каким шинам подключены диски.

fox-mage ()
Ответ на: комментарий от Deleted

Если я запускаю один процесс, то вижу 100% загрузку 1 ядра из 6 физических, причем эти 100% красные, т.е. в режиме ядра. Насколько я понимаю, это значит, что всё это время уходит у ядра на обработку операции fwrite. И я получаю честные 2.2 ГБ/сек. Но остальные-то ядра простаивают. Добавляю второй процесс, htop показывает, что суммарно на 100% загружены два ядра. Но есть ещё четыре. Таблица прерываний, опять же, насколько я понял (может, непарвильно?), показывает, что прерывания от дисков раскиданы равномерно по ядрам, поэтому такого, чтобы одно ядро всё на себя брало, вроде нет.

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

Но остальные-то ядра простаивают

Если твоя программа однопоточная, то так и должно быть.

Тестируй штатными инструментами типа dd.

Deleted ()
Ответ на: комментарий от fox-mage

Вот вывод lspci http://paste.ubuntu.com/p/gPbkVrPjdf

01:00.0 Non-Volatile memory controller: Intel Corporation Optane SSD 900P Series
02:00.0 Non-Volatile memory controller: Intel Corporation Optane SSD 900P Series
05:00.0 Non-Volatile memory controller: Intel Corporation Optane SSD 900P Series

Это ведь разные шины, да?

johnsmithololo2 ()
Ответ на: комментарий от Deleted

Попробовал, с dd результат ровно тот же самый, те же 3 Гб/сек если вместе, только загрузка процессора почти нулевая. Если поодиночке, то те же 2.2 Гб/сек на Оптан.

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

А вообще, dd показал идеально ровные 1.0Гб/c на диск при трёх процессах, что наводит меня на мысль трёх pсi-линиях суммарно на все диски. Но что с этим делать?

johnsmithololo2 ()

Читай документацию к материнке, там будет что-то вида «один разъем м2 работает на pcie x4 только при незанятых других, иначе скорость каждого pcie x1»

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

у тс дешманская материнка в которой половина портов работает в режиме «или/если», что ты там тестировать собрался?

Как пример

Методика полностью описана в посте. Есть правда несколько не совсем понятных моментов:

хороший пример, ничего не скажешь.

anonymous ()
Ответ на: комментарий от johnsmithololo2

Ну думаю отсюда понятно, что на ваши m.2 разъемы выделено 3 линии pci-e 3.0. Так сделал производитель материнки.

Прежде всего, отметим, что платы на чипсете Intel X299 ориентированы на дорогие ПК. Особенность этих плат в том, что они поддерживают процессоры с разным количеством линий PCIe 3.0 — 16, 28 и 44 линии. На базе процессорных линий PCIe 3.0 реализуются, прежде всего, слоты PCI Express 3.0 x16/x8/x4, а также иногда разъемы M.2/U.2. Сложность в данном случае в том, что для каждого типа процессоров должна быть своя реализация слотов.

gfh ★★ ()
Последнее исправление: gfh (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.