Tại sao tôi thấy thông lượng chuyển SMB thấp như vậy?


10

Ok, có một chút về câu chuyện hơn tiêu đề ngụ ý.

Bối cảnh và Môi trường : Tôi đang sao chép một số TB từ máy chủ Ubuntu cũ sang máy chủ Windows 2012 mới hơn qua SMB. (Về mặt kỹ thuật, đó là phần cứng hàng hóa, nhưng chúng là máy chủ quanh đây.) Mọi người đều sử dụng mạng LAN gigabit và hộp Ubuntu cũ hơn có giao diện ngoại quan. Tôi tin rằng máy chủ Ubuntu có hai thẻ ethernet Rosewill PCI-e 1x và máy chủ Windows có một thẻ ethernet PCI Intel PCI khá đẹp.

Máy tính đích (máy chủ Windows) đang chạy Storage Pool với số lượng tương đương trên các ổ 4x 2TB. Nó đang chạy ReFS mới của Microsoft. Máy tính nguồn (máy chủ Ubuntu) đang chạy nhân bản RAID phần mềm. Nó đang chạy tốt ol 'EXT4.

Hai máy chủ đang chạy qua một chuyển đổi gigabit duy nhất. Tôi đã thử nghiệm phá vỡ liên kết trên máy tính nguồn (Ubuntu) mà không có bất kỳ cải thiện nào.

Vấn đề : Tôi không gặp khó khăn khi chuyển ở tốc độ hợp lý từ các máy tính khác sang máy chủ Windows. Các máy tính khác có thể giữ tốc độ 50-80 MB / giây mà không gặp nhiều khó khăn, nhưng việc chuyển từ máy chủ Ubuntu đó ra không quá 20 MB / giây. 4 + TB với tốc độ 20 MB / giây mất nhiều thời gian (tương đương 2,3 ngày) và tôi đang tự hỏi mình có thể làm gì để tìm ra nút thắt ở đâu.

Triệu chứng : CPU trên cả hai máy tính là khá tối thiểu và chắc chắn không quá bận rộn. Ổ cứng trên cả hai máy tính đều hoạt động nhưng không bị tràn ngập và CPU IOwait gần như 0% trên ít nhất là máy chủ Ubuntu.

Tôi đã thực hiện theo dõi Wireshark trong 35 giây (có lẽ đủ dài để đảm bảo tất cả các ACK dành cho các gói mới) và nhận thấy rằng có khá nhiều điều tôi không mong đợi. (1) Không có bất kỳ tổng kiểm tra nào cho các ACK (và MỘT SỐ gói SMB) từ Windows đến Ubuntu. Tuy nhiên, Wireshark tuyên bố rằng điều này có thể là do "tổng kiểm tra IP giảm tải". Ok, tôi có một thẻ khá đẹp trong đó. Tôi cho rằng có thể card mạng có thể thực hiện tính toán tổng kiểm tra. Khỏe. Di chuyển trên ... (2) "TCP ACKed phân đoạn chưa thấy." Cái này tôi có vấn đề với. Số ACK nằm trong phạm vi chấp nhận được so với những gì tôi có thể nói và thường có những khối lớn các tin nhắn này. Có lẽ Wireshark chỉ là quá chậm?

Tóm tắt : Tốc độ truyền hút (20MB / s so với ethernet gigabit) và tôi không biết tại sao. Wireshark tuyên bố Windows đang ACKing những thứ không bao giờ được gửi bởi Ubuntu.

Đoán : Dự đoán ban đầu của tôi là các thẻ Rosewill rẻ hơn đang bị ngập. Dự đoán thứ hai của tôi là những thứ giống như phần mềm RAID ở một đầu hoặc đầu kia đang bị ngập trong những thứ cần làm.


2
Tốc độ nào bạn có được sao chép từ máy chủ Ubuntu sang một trong các máy tính để bàn (không phải Server 2012)? Có lẽ WinXP hay Win7? Tôi đã gặp vấn đề lớn với việc ký và gói dữ liệu với SMB với Server 2008 trở lên.
Dom

Cập nhật: Tôi đã kết thúc việc phải khởi động lại (nhờ vào sự hoảng loạn của kernel). Thật không may, hệ thống hiện có một kernel hoảng loạn trên mỗi lần khởi động. Tôi đã đánh cắp bản sao Knoppix đáng tin cậy của mình và gắn các ổ đĩa, và mọi thứ giờ đã ổn và bảnh bao. Bây giờ tôi đang sao chép qua SSH và tôi vẫn không biết nút cổ chai ở đâu. sshdđang ăn tới 60% một bộ xử lý ở phía Knoppix. Trong mọi trường hợp, chuyển khoản của tôi sắp hoàn thành. @Dom: Bây giờ bạn đề cập đến nó, tôi không nhớ là đã đặt tất cả dữ liệu đó vào đó nhanh hơn 30MBps ngay từ đầu.
Andy

2
@LorenzoVonMatterhorn, vui lòng tránh sử dụng các công cụ rút ngắn URL.
Cristian Ciupitu

Bạn có chắc chắn nó không phải là vấn đề với đĩa của bạn?
MariusMatutiae

2
Windows đã triển khai một phiên bản nhanh của giao thức SMB (SMB 2) trong 4-5 năm qua, ít trò chuyện hơn và hiệu quả hơn trên mạng. Tôi không biết khi nào những thay đổi đó chuyển sang Samba, nhưng có vẻ như Ubuntu cũ hơn có Samba cũ hơn và có lẽ Knoppix có phiên bản mới hơn.
uSlackr

Câu trả lời:


1

Khoảng cách hiệu suất của bạn phù hợp với trải nghiệm phổ biến khi Samba (không chắc đây có phải là mặc định hay không, nó đã có từ lâu) được cấu hình với kích thước bộ đệm ổ cắm đọc và ghi mặc định là 1024 byte.

Tôi thường thấy điều này thường xuyên với các máy Linux và Mac. Hy vọng nó không phải là trường hợp đó.

Có một đối số tùy chọn ổ cắm trong tệp cấu hình của samba nơi bạn có thể đặt kích thước bộ đệm ổ cắm đọc và ghi. Đề nghị bạn đặt cả hai thành 8192 byte (8 KiB). 4 hoặc 8 KB thường tương tự nhau, nhưng tôi chưa kiểm tra điều đó trên liên kết gigabit.

Ngoài ra, đừng mong đợi một kết nối TCP duy nhất được hưởng lợi từ một liên kết được liên kết, lưu lượng sẽ hầu như luôn đi qua một trong các liên kết; nếu không, bạn kết thúc với rất nhiều gói không theo thứ tự để giải quyết; vì vậy chỉ mong đợi một lợi ích cân bằng tải khi phục vụ nhiều khách hàng. Ngay cả khi đó, bạn nên tra cứu các chế độ liên kết khác nhau và biết rằng ít nhất là liên kết "chế độ 4" (IEEE 802.3ad), về cơ bản có hai chế độ băm truyền, xác định giao diện nô lệ nào sẽ được gửi đi. Có băm lớp 2 (mặc định) và băm lớp 3. Nếu gửi phần lớn dữ liệu của bạn qua cổng, hàm băm lớp 2 sẽ không phân phối tốt, vì địa chỉ MAC của cổng sẽ giống nhau. Thay vào đó hãy xem xét sử dụng lớp 3.


0

Tôi đã từng có hai thẻ Ethernet trong một máy tính Ubuntu và vì một lý do nào đó nó không hoạt động chính xác - cả hai đều đấu tranh cho cùng một gói, vì vậy đôi khi tôi sẽ nhận được trả lời đôi khi tôi sẽ không nhận được, tùy thuộc vào việc thẻ mạng kia có bị lấy không Việc đóng gói. Thật kỳ lạ. Tôi đã phải cấu hình sai bằng cách nào đó, nhưng tôi đã nghĩ rằng nó sẽ chỉ hoạt động. Các thẻ có địa chỉ IP duy nhất của khóa học.

Dù sao, thật đơn giản để bạn thử nó chỉ với MỘT thẻ Ethernet trong máy được kết nối với mạng chỉ để loại trừ điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.