ОБНОВЛЕНИЕ: только что попробовал этот сценарий на плате с восемью дополнительными портами SATA, и это работает. Медленнее, чем я думал, но все же приемлемо. Что касается обсуждения с Дэвидом Шварцем, я полагаю, что он может быть прав, что есть что-то патологически неправильное, или что Али Чен может быть прав, что RHEL просто не может справиться с таким количеством хост-контроллеров одновременно. Я собираюсь поэкспериментировать немного больше, так как я зашел так далеко, и мне в основном платят, чтобы быть любопытным в этот момент. :)
НАЧАЛО ОРИГИНАЛЬНОГО ПОЧТА
Таким образом, установка занимает много времени. В нашей системе есть две карты USB 3.0 RocketU 1144D с четырьмя портами, одна на разъеме PCIe 2.0 и одна на разъеме PCIe 3.0, чтобы избежать проблем с пропускной способностью. Каждая из этих карт USB имеет четыре твердотельных накопителя Crucial MX300 емкостью 1 ТБ в корпусах Silver Stone Raven с внешним питанием. Потребность каждого клиента в том, чтобы иметь возможность одновременно записывать один и тот же набор файлов на четыре из восьми дисков при чтении файлов с других четырех дисков для вычисления контрольных сумм MD5. Каждый диск будет максимально приближен к емкости с файлами размером примерно 1 ГБ на момент чтения или после записи всех файлов.
Теперь, если мы только обращаемся или записываем файлы на диски на одной из карт, скорость не так уж и плоха. При полном ТБ мы усредняем от 3 до 4 секунд на файл (чтение / вычисление или запись). Проблема заключается в том, что когда мы пытаемся одновременно выполнять обе операции, скорость чтения и записи довольно быстро снижается, начиная с примерно 1,5 секунд на файл и заканчивая шестидесяти секундами на файл.
Единственными другими картами в системе являются видеокарта в слоте PCIe 3 16x и адаптер Intel X540-T2 (в настоящее время не используется) в другом из слотов PCIe 3 8x.
У нас есть двухпроцессорный сервер MOBO X10DRL-i с двумя 6-ядерными процессорами Zenon и 64 ГБ ОЗУ под управлением RHEL 7.2 от другого Crucial MX300, подключенного к порту SATA.
Таким образом, вопрос в том, возможно ли сделать то, что описано выше, в течение приемлемого промежутка времени, определенного как: одна тысяча один гигабайтный файл на SSD, считанный с четырех SSD, подключенных к карте один, записанный на четыре SSD, подключенных к карте два, операции ДОЛЖНЫ быть сделано параллельно (потому что клиент) все менее чем за час?
Исходя из того, что я изучаю, я начинаю склоняться к «нет», но подумал, что спрошу и посмотрю, есть ли у кого-то, кто обладает большим знанием, что-либо более определенное. Любая помощь, совет, и особенно ответ очень ценится.
РЕДАКТИРОВАТЬ в соответствии с предложением Дэвида Шварца:
Требуемая пропускная способность на карту 5 Гбит / с на порт USB 3.0 x4 порта = 20 Гбит / с
Доступная пропускная способность PCIe 2.0 x4 при 500 Мбит / с на линию = 16 Гбит / с
Поскольку одна карта использует линии PCIe 3, а другая - линии PCIe 2, для этих ресурсов не должно быть конфликта, насколько я понимаю.
НОТА:
Я знаю, что карта была перепродана по пропускной способности, но чтение и запись не должны занимать несколько минут на файл в ГБ.
РЕДАКТИРОВАТЬ 2:
После предложения Дэвида Шварца я контролировал использование ядра с помощью системного монитора и htop. Система показывает 100% или почти 100% использования или четыре ядра для первых дюжин файловых операций ввода-вывода. Система будет зависать на несколько секунд, и это происходит, когда происходит ухудшение ввода-вывода файла. Кроме того, загрузка ядра после этого редко достигает 100%, а когда это происходит, это происходит очень кратко.
РЕДАКТИРОВАТЬ 3: Скорее всего, окончательное редактирование.
После небольшого количества исследований и экспериментов, я думаю, мы можем сказать, что это не сработает для карты под рукой, и я держу пари, что карта StarTech, упомянутая в комментариях, также не будет работать. Я считаю, что мы можем прийти к такому выводу, основываясь на нескольких вещах. Короче говоря, один SSD отлично работает на карте. Два работают хорошо с небольшим замедлением; накладные расходы, я думаю. Тем не менее, 3 или более начинают делать плохие вещи. Я предполагаю, что это потому, что мы пытаемся увеличить пропускную способность PCIe на 16 Гбит / с на скорости 16 Гбит / с, и вместо теоретического максимума 16 Гбит / с контроллеры на обеих сторонах передачи могут споткнуться друг на друга и, как правило, приводить к тому, что происходит резервное копирование. замедление передачи данных в обход. Это просто теория, но она была достаточно хороша, чтобы заставить клиента отказаться от требования USB и позволить нам попробовать SATA и другие методы. SATA много работает, НАМНОГО лучше, так что я думаю, что у нас есть победитель. Спасибо Дэвиду Шварцу и Али Чену за помощь и предложения.
РЕДАКТИРОВАТЬ 4: фактическое окончательное редактирование
Итак, вчера я наткнулся на ответ на свой вопрос в нескольких частях, рассматривая решения SATA. Фактическая проблема была двоякой и стала очевидной только после того, как была обнаружена первая из них.
Итак, первой проблемой было управление памятью. Протестировав часть программного обеспечения, считывающую большие файлы для записи, показалось, что файлы читаются один раз, а затем записываются несколько раз. Это был не тот случай. Итак, у нас было несколько запросов на чтение для нескольких файлов размером 1 ГБ, которые постоянно выполнялись. Почему это сработало в тестах, а не на практике, я не уверен, но у нас не было времени сделать вскрытие, чтобы оставить его в истории.
Вторая проблема заключается в том, что мы не аппаратные парни, и поэтому мы не знали одной очень важной детали при работе с системой Linux. Поскольку NTFS не является родной для Linux (это мы знали), очевидно, она будет работать почти на порядок медленнее (этого мы не знали). Если бы это была коробка с Windows, у нас не было бы проблем.
Объедините эти два фактора вместе, и вы получите хаотичное поведение, которое мы испытали. Как только мы выполнили полное переформатирование всех дисков в EXT4, мы перестали видеть непредсказуемое время чтения / записи, и все работало как ожидалось. Мы могли бы выполнять одновременную запись и чтение / вычисления md5 в пределах допустимых параметров.