SSD, встановлений на USB, з періодичністю збиває читання / запису на сервері Linux


1

Налаштування
MoBo: Сервер Super Micro
Proc: Twin Xenon з 20 фізичними ядрами та 40 потоками
ОЗУ: 128 ГБ
ОС: Cento 7.x Сервер
VCard: nVidia Quadro 4000

Завдання включає в себе запис на та зчитування з USB-накопичувачів SSD (1TB Micron 5100 Pro відформатований vfat) якомога швидше для механічної перевірки цілісності даних. На процесор передбачено 40 смуг PCIe 2.0. Один з 40 має дві картки StarTech USB 3.0 з виділеними каналами 5 Гбіт / с, але не має додаткової внутрішньої потужності. Ми використовуємо зовнішні документи SSD для Orico для підключення та живлення накопичувачів. Поза різними документами USB серверне обладнання, формат SSD та ОС неможливо змінити.

А тепер актуальна проблема та питання. Коли ми починаємо записувати на накопичувачі в циклі запису / читання, все починається нормально.

-Fetch 200Мб до 1,6 Гб файл з віддаленого файлового сервера (магазин в локальній пам'яті)
-Write файл на кожен з чотирьох USB встановлений SSD - накопичувачів (кожен запис на своєму власному потоці)
-Распознать файл з USB встановлений SSD для перевірки SHA (також на окремих потоки)
-Очистіть файлові дані з оперативної пам'яті
-Повторюйте, поки всі файли не будуть закінчені

Приблизно через десяток файлів запис на один або два диски настільки сповільнюється, що інші диски змушені чекати через обмеження, які ми розмістили на кількість файлів, що зберігаються в будь-який момент часу. Тоді диск "наздожене", а інший диск сповільниться. Ця проблема є переривчастою, і ми написали всю групу файлів (до 1600) без проблем і в межах 10% від того, що має бути фізично можливим.

Тож питання є, що може бути причиною цього і що ми могли б зробити, щоб цього не допустити? Наше програмне забезпечення гарантує, що жоден диск не записується і не читається одночасно, і ми не намагаємось прочитати або записати більше одного файлу з будь-якого даного диска одночасно. Будь-яка допомога буде дуже вдячна.

PS Це інше питання, ніж питання, про яке я тут звертався .

EDIT 1: Отже, це насправді не може мати нічого спільного з USB, SSD, драйверами, перемиканням контексту, пропускною здатністю PCIe і т. Д. Я просто трапився призупиняти виконання у дуже підходящий момент і std :: вектор я використання для зберігання записуваних даних було позначено як недоступне на відладчику для QtCreator. Кілька тверджень про друк пізніше та деякі точки перерви я виявив, що дані є, вказівник, повернутий функцією :: data (), є хорошим, і все так, як і повинно бути ВИКЛЮЧЕНО, що локальна змінна у відладчику показує як недоступну. Однак кожен раз, коли вектор показує недоступний, запис на диск надто довгий. Отож, зараз я наголошуюся на чомусь, що псує пам’ять чи щось подібне. Дуже дивна поведінка.


Нічого собі, це потужна система! Просто постріл у темряві, а як бути із затримкою на декілька мс між обробкою одного файлу та наступного?
А. Кендалл

На жаль, ми втратимо його через два тижні для замовника. :( Мій начальник вже випробував вашу пропозицію з повною секундою після кожного прочитаного та повну секунду після кожного написання, але результати були однакові. Дякую за пропозицію.
soulsabr

1
"Записування сповільнюється, потім наздоганяє, а інший SSD сповільнюється" звучить так, що якийсь внутрішній буфер запису переповнюється - все працює, поки буфер запису приймає дані, але фактична швидкість запису нижче, ніж дані, що надходять у буфер . Не маю уявлення, чи може це бути буфер вводу-виводу Linux, буфер USB або внутрішній буфер SSD. Ви протестували стійкі швидкості запису для одного пристрою? Це проявляє ті ж симптоми, чи це працює добре?
dirkt

Постійні швидкості запису здаються нормальними, але лише для однієї карти. Покладіть іншого, і у нас проблеми. Але, оскільки ми покладаємось на програмне забезпечення сторонніх виробників, щоб отримати дані, і це дотик невловимий, навіть це сумнівно. Я думав переключити кріплення на асинхронне кріплення, щоб зрозуміти, чи допоможе це, оскільки ми ніколи не намагаємось читати і писати одночасно.
соулссабр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.