Чому я бачу таку низьку пропускну здатність SMB?


10

Гаразд, тут є трохи більше, ніж випливає з назви.

Передумови та середовище : я копіюю кілька ТБ зі старого сервера Ubuntu на новий сервер Windows 2012 через SMB. (Технічно це товарне обладнання, але вони тут є серверами.) Усі мають гігабітну локальну мережу, а у старшої коробки Ubuntu є зв’язаний інтерфейс. Я вважаю, що на сервері Ubuntu є дві Ethernet-картки Rosewill PCI-e 1x, а у сервера Windows одна досить симпатична карта Ethernet PCI Intel.

Цільовий комп’ютер (сервер Windows) працює в накопичувальному пулі з паритетом більше 4-х накопичувачів 2 ТБ. На ньому працює новий ReFS від Microsoft. У вихідному комп’ютері (сервер Ubuntu) працює програмне дзеркало RAID. Він працює добре ol 'EXT4.

Два сервери працюють через один гігабітний комутатор. Я експериментував з розривом зв'язку на вихідному (Ubuntu) комп'ютері без будь-яких удосконалень.

Проблема : Я не маю проблем з перенесенням з розумною швидкістю з інших комп’ютерів на сервер Windows. Інші комп'ютери можуть утримувати 50-80 Мб / с без особливих труднощів, але передача з цього сервера Ubuntu перевищує 20 МБ / с. 4 + ТБ при 20 МБ / с займає багато часу (щось на зразок 2,3 дня), і мені цікаво, що я можу зробити, щоб зрозуміти, де знаходиться вузьке місце.

Симптоми : процесор на обох комп’ютерах досить мінімальний і, звичайно, не надто зайнятий. Жорсткі диски на обох комп’ютерах активні, але не затоплені, а процесор IOwait майже 0% на принаймні сервері Ubuntu.

Я простежив Wireshark протягом 35 секунд (імовірно, досить довгий, щоб переконатися, що всі ACK були для нових пакетів) і помітив, що було досить багато речей, яких я не очікував. (1) Не було ніяких контрольних сум для ACK (і деяких пакетів SMB) від Windows до Ubuntu. Однак Wireshark стверджує, що це може бути пов'язано з "завантаженням контрольної суми IP". Гаразд, у мене тут дуже приємна карта. Я припускаю, що цілком можливо, що мережева карта могла б зробити розрахунки контрольної суми. Чудово. Перехід до ... (2) "TCP ACKed невидимий сегмент." З цим у мене проблеми. Номер ACK знаходиться в межах прийнятного діапазону, ніж я можу сказати, і часто є величезні блоки цих повідомлень. Можливо, Wireshark просто занадто повільний?

Резюме : Швидкість передачі відстій (20 Мб / с через гігабітний Ethernet), і я не знаю чому. Wireshark стверджує, що Windows обробляє речі, які Ubuntu ніколи не надсилав.

Здогадки : Моя початкова здогадка полягає в тому, що дешевші карти Rosewill заграють. Моя друга здогадка полягає в тому, що програмне забезпечення, схоже на RAID, з тієї чи іншої сторони загрожує різними справами.


2
З якою швидкістю ви отримуєте копіювання з сервера Ubuntu на один із настільних комп’ютерів (не на сервер 2012)? Можливо, WinXP чи Win7? У мене виникли великі проблеми з підписанням пакетів і енцирбцією в SMB з Server 2008 і новіших версій.
Дом

Оновлення: мені довелося перезавантажити (завдяки паніці ядра). На жаль, зараз система має паніку з ядром при кожному завантаженні. Я витягнув свою надійну копію Knoppix і встановив накопичувачі, і все зараз добре і денді. Тепер я копіюю SSH і досі не знаю, де вузьке місце. sshdз'їдає 60% одного процесора з боку Knoppix. У будь-якому випадку, моя передача наближається до завершення. @Dom: Тепер, коли ви це згадуєте, я не пригадую, щоб усі ці дані там були набагато швидше, ніж 30 Мбіт / с.
Енді

2
@LorenzoVonMatterhorn, будь ласка, уникайте використання скорочувачів URL.
Крістіан Цюпіту

Ви впевнені, що це не проблема з вашими дисками?
MariusMatutiae

2
За останні 4-5 років Windows впровадила набагато швидку версію протоколу SMB (SMB 2), що набагато менш балаканина та ефективніша. Я не знаю, коли ці зміни перекинулися на Samba, але це здається, що у старшого Ubuntu є старша Samba, і, можливо, Knoppix має більш нову версію.
uSlackr

Відповіді:


1

Ваш розрив у продуктивності збігається із загальним досвідом, коли Samba (не впевнений, чи це все ще за замовчуванням; це було тривалий час) налаштовано на буфер сокету для читання та запису розміром 1024 байт за замовчуванням.

Я часто бачив це часто на машинах Linux та Mac. Сподіваємось, це все ще не так.

У файлі конфігурації samba є аргумент параметра socket, де можна встановити розмір буфера читання та запису сокета. Запропонуйте встановити обидва 8192 байти (8 KiB). 4 або 8 КБ часто схоже, але я не перевіряв це на гігабітному посиланні.

Крім того, не очікуйте, що одне TCP-з'єднання отримає користь від зв’язаного посилання, трафік майже завжди буде проходити через одне з посилань; інакше ви закінчите безліч пакетів, що не вийшли з ладу; тому очікуйте перевагу балансування навантаження при обслуговуванні кількох клієнтів. Вже тоді ви повинні шукати різні режими зв'язку та знати, що принаймні для "режиму 4" (IEEE 802.3ad) зв'язку, в основному, є два режими хешування передачі, які визначають, на який підлеглий інтерфейс надсилати. Є хешування шару-2 (за замовчуванням) та хешування-шар-3. Якщо надсилати основну частину ваших даних через шлюз, хеш рівня 2 не буде добре поширюватися, оскільки MAC-адреса шлюзу буде однаковою. Розглянемо замість цього шар 3.


0

Я колись мав дві картки Ethernet в одному комп’ютері Ubuntu, і чомусь це не працювало належним чином - вони обидва бачились за однакові пакети, здавалося, тому іноді я отримав би відповідь, іноді не хотів би, залежно від того, чи схопила інша мережева карта. упакований. Це було дивно. Я, мабуть, це якось неправильно сконфігурував, але я би подумав, що це просто спрацювало б. Картки, звичайно, мали унікальні IP-адреси.

У будь-якому випадку, вам було б просто спробувати його лише за одну карту Ethernet в машині, підключеній до мережі, щоб виключити це.

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