Câu hỏi Làm cách nào để vượt quá tốc độ USB 2.0 trên cổng USB 2.0?


Tôi đang ghi các tập tin vào một ổ đĩa USB 2.0 từ một đĩa RAM, có một tập tin đầy đủ ngẫu nhiên 256MB trên nó (được tạo ra từ / dev / urandom để dừng tập tin bị nén quá nhiều). Khi tôi nhìn vào tốc độ của các tập tin viết đó là đầu ra từ dd, chúng trung bình khoảng 75MB / s. Điều này đặc biệt thú vị, bởi vì tốc độ tối đa lý thuyết của USB 2.0 là 60MB / s.

Lệnh mà tôi đang chạy là:

dd if=/var/mnt/temp_data/urandom of=/mnt/usb/$FILE_NAME bs=10M count=1 

Lưu ý rằng tôi đang chạy điều này nhiều lần, và tôi điền vào ổ đĩa đầy đủ 95%. Lý do cho các tập tin 10MB là để đảm bảo rằng ổ đĩa là khá gần với 95% đầy đủ, và tôi sẽ không nhận được rằng loại điền với các tập tin lớn hơn, như tôi không biết những gì kích thước thẻ nhớ sẽ được cắm vào, và có nhiều tệp là một phần của thử nghiệm.

Nếu động cơ ảnh hưởng đến tốc độ ghi, những gì tôi đang làm là kiểm tra tốc độ ghi của các cổng USB trên một hệ thống để xem chúng có phù hợp với các tiêu chuẩn USB hay không. Do đó điều này là tương đối đau khổ, và điền từ / dev / urandom (gián tiếp).

Vậy tại sao điều này xảy ra và làm cách nào để khắc phục sự cố? Tôi là giả định rằng các phép đo dd được xuất ra là không chính xác, nếu không tôi sẽ bắt đầu bán các nhà văn trình điều khiển USB bí mật của tôi.

(Xin lỗi nếu điều này nên được unix.se, tôi không chắc chắn)


3
2017-12-10 10:20


gốc


Trước hết bs = 10M count = 1 sẽ không cho bạn tốc độ ghi xấp xỉ tốt, bởi vì bạn chỉ viết 10Mb. Dữ liệu có thể được lưu trữ ở đâu đó. Tôi khuyên bạn nên viết ít nhất 1Gb dữ liệu. Thử bs = 1M count = 1000 và xem kết quả có khác không - Art Gertner
@smc Tôi không chỉ chạy một lần, tôi đang làm đầy ổ đĩa với các tệp 10MB và ~ 75MB được tính trung bình trong toàn bộ thử nghiệm - Yann
lệnh bạn đã cung cấp không điền vào ổ đĩa với các tệp 10MB, nó chỉ ghi một tệp. Hiệu suất được báo cáo bởi dd trong khi thực hiện lệnh này có thể bị ảnh hưởng bởi ghi bộ nhớ đệm. Hãy thử các tham số lệnh mà tôi đã đề xuất ở trên hoặc sửa đổi nó để dd lấp đầy toàn bộ ổ đĩa - Art Gertner
@smc Nó hoạt động khi bạn chạy nó rất nhiều lần. Nó trong vòng lặp for. - Yann
bạn có bỏ qua những gì tôi vừa nói không? Bạn không thể dựa vào tốc độ được báo cáo trong lệnh đó khi bạn chạy nó nhiều lần. Đây là 'count = x' dành cho - Art Gertner


Các câu trả lời:


Ok, do đó, sau tất cả các ý kiến ​​và thảo luận dài dòng của chúng tôi trong trò chuyện ở đây là câu trả lời cho câu hỏi:

Khi bạn đang kiểm tra tốc độ ghi trên hệ thống, cho dù nó đang ghi vào USB hay HDD, ghi vào FilesSystem hoặc trực tiếp vào đĩa ở chế độ RAW, luôn đảm bảo ghi đủ dữ liệu để lấp đầy bộ đệm. Nếu không có đủ dữ liệu được viết, bạn đang đo tốc độ ghi vào bộ đệm (trong RAM)

OP, đã cố gắng để viết 10MB tập tin trong một vòng lặp thực hiện sync lệnh giữa các phiên ghi.

Điều gì đã xảy ra một cách hiệu quả, đó là dd lệnh đã làm các văn bản sẽ ghi dữ liệu vào bộ nhớ cache rất nhanh chóng. Tốc độ báo cáo là khoảng 75MB / s. Sau đó sync lệnh sẽ mất vài giây để thực thi, nhưng OP không tính đến điều này.

Sau khi thay đổi thử nghiệm để viết các tệp lớn hơn, nó đã được tiết lộ rằng tốc độ ghi thực tế là khoảng 2,2MB / s, đó là tốt với tiêu chuẩn USB 2.0


2
2017-12-10 11:32