Làm cách nào để tăng tốc độ ghi thẻ SD (sử dụng / dev / đĩa *) trên MacBook Pro?


17

Tôi đã cài đặt một số bản phân phối linux vào thẻ SD từ MacBook của mình, mặc dù chúng mất hơn một giờ để chuyển vài trăm MB (sử dụng dd/dev/disk1).

đầu ra dd

Nếu bạn nhìn vào đầu ra ở trên, nó hoạt động ở mức khoảng 0,31 MB / s! Thẻ SD là Class 10 và MacBook Pro của tôi là Intel Core 2 Duo 2,66 GHz, DDR3 4 GB 1067 MHz và OS X Lion 10.7.4. Đây là báo cáo phần cứng cho đầu đọc thẻ:

Đầu đọc thẻ SD tích hợp:

ID nhà cung cấp: 0x05ac
ID sản phẩm: 0x8403
Sửa đổi: 1.00 Số sê-ri: 9833

Thẻ SDHC:

Dung lượng: 7.97 GB (7.969.177.600 byte)
Phương tiện di động: Có Tên BSD: đĩa1
Phân vùng Bản đồ Loại: MBR (Bản ghi khởi động chính)
Trạng thái SMART: Không được hỗ trợ
Khối lượng:

PI:
Dung lượng: 7,96 GB (7,964,983,296 byte)
Hệ thống tệp: MS-DOS
BSD Tên: đĩa1s1
Nội dung: DOS_FAT_32

Bất cứ ý tưởng tại sao việc chuyển đến /dev/disk1rất chậm và làm thế nào tôi có thể tăng tốc nó?


Âm thanh như một vấn đề phần cứng với tôi. Tôi đã nghe nói MBP 2011 có đầu đọc SD kém, nhưng cũng có thể là vấn đề với những cái trước đó. Hãy thử một thẻ SD khác, nhưng nó cũng có thể là một vấn đề với đầu đọc thẻ, không may được gắn vào bảng logic trong hầu hết các MBP.
kẻ cướp

Tôi đã mua máy tính xách tay vào năm 2009, Fedora đã sao chép được 2 giờ và tôi đã bỏ cuộc. Thời gian đọc thẻ mới tôi nghĩ.
StuR

Điều thú vị là tốc độ dữ liệu tuần tự cao hơn nhiều nếu bạn sử dụng Finder hoặc Disk-Utility vì thủ phạm dường như là bộ đệm của / dev / đĩa * như được giải thích trong câu trả lời của @pci
iolsmit 22/03/13

Câu trả lời:


38

Chỉ gặp vấn đề tương tự và có vẻ như đó /dev/disk*là chậm vì nó được đệm. Nếu bạn sử dụng thiết bị ndisk tương ứng (ví dụ /dev/rdisk1s1:), bạn sẽ nhận được tốc độ bạn mong đợi. Đây rõ ràng là một điều BSD.

Thí dụ:

% sudo dd if=pi.bin of=/dev/disk1 bs=1m count=4095
^C408+0 records in
407+0 records out
426770432 bytes transferred in 1393.452305 secs (306268 bytes/sec)

% sudo dd if=pi.bin of=/dev/rdisk1 bs=1m count=4095
4095+0 records in
4095+0 records out
4293918720 bytes transferred in 378.669512 secs (11339489 bytes/sec)

Tham chiếu:


1
Đây là câu trả lời tốt nhất tôi đã tìm thấy cho câu hỏi này vì tôi đã có thể xác nhận kết quả. Đã đi từ ~ 1,35 MB / giây đến 20 MB / giây :)
cần đến

1
Tất nhiên đó là một sự xấu hổ (đối với Apple / BSD) - mặc dù vậy, việc sử dụng dd sẽ mang lại cho bạn hiệu suất tốt nhất có thể khi bạn có quyền truy cập viết (hoặc đọc) dài; ở cấp độ tệp và với quyền truy cập ngẫu nhiên, hiệu suất của bạn sẽ thay đổi rất nhiều, tùy thuộc vào thẻ SD - Và: tìm kiếm tuyệt vời @pci!
iolsmit

2
Đó là một câu chuyện dài, nhưng bạn vừa tiết kiệm cho tôi cá hồi trị giá 90 đô la sẽ trở nên tồi tệ nếu tôi không kịp thời khắc phục người hút thuốc.
deweydb

3
Thật là nực cười khi bạn có thể tải xuống một tệp ở tốc độ 20 + Mbps trên hàng ngàn km và vài mét cuối cùng là không dây. Nhưng truyền dữ liệu vài cm qua kết nối cứng thì chậm hơn nhiều.
Jonathan.

Cảm ơn. Tôi đã xem xét việc sao chép 7GB dữ liệu trong hơn 10 giờ khi tôi quyết định không chấp nhận được và tìm thấy câu trả lời này - rất hữu ích.
Barak

3

Cũng có thể là thẻ SD chậm như vậy.

Hãy xem điểm chuẩn này (Viết ngẫu nhiên, 4 KB (QĐ = 1) [MB / s]) và bạn sẽ thấy hầu hết các thẻ SD có hiệu suất ghi kém (dưới 100 kB / s) cho các tệp nhỏ - và một cài đặt linux điển hình bao gồm rất nhiều tệp nhỏ được ghi vào đĩa.

Đầu đọc thẻ nội bộ phải có khả năng đọc / ghi ít nhất 20 MB / s - rất khó có khả năng một đầu đọc thẻ khác sẽ cải thiện trải nghiệm của bạn với chính thẻ SD này.

Khi tất cả các tệp được ghi, tức là hệ thống đã được cài đặt, bạn thực sự có thể chạy Linux từ thẻ SD ở tốc độ chấp nhận được - vì chủ yếu là truy cập đọc.


1
Đối với những người bỏ phiếu, xem bài đăng này
iolsmit

Nó sẽ là một thử nghiệm tốt mặc dù để kiểm tra thẻ ở một người đọc khác được biết là tốt và kiểm tra một thẻ được biết là tốt ở người đọc bị nghi ngờ. Cũng lưu ý rằng tất cả "giấy tờ" để tạo tệp mới (trái ngược với việc viết nội dung của chúng) trong cấu trúc dữ liệu hệ thống tệp là rất lớn đối với nhiều tệp nhỏ.
Thorbjørn Ravn Andersen

Thẻ SD không nhanh lắm, tốc độ (328198 byte / giây và sau đó là 288881 byte / giây) không thể tưởng tượng được đối với thẻ SD ngày nay (cảm giác giống như ổ đĩa mềm). Vì đây là 'dd', nên nó có nghĩa là một tệp - không phải nhiều tệp nhỏ.
Barak

1

Nếu thẻ được gắn với tùy chọn đồng bộ hóa, điều này có nghĩa là mọi tệp đóng sẽ khiến ghi bị xóa vào đĩa và do đó hiệu suất của bạn trên các tệp nhỏ sẽ rất tệ khi so sánh với các tệp lớn. Nếu bạn xóa đồng bộ hóa khỏi các tùy chọn gắn kết, thì không có gì đảm bảo rằng việc ghi tệp khiến nó bị xóa ra đĩa - bạn phải gọi đồng bộ hóa thủ công từ dòng lệnh hoặc ngắt kết nối thiết bị trước khi gỡ bỏ hoặc tắt nguồn. Tuy nhiên, không có đồng bộ hóa, bạn sẽ thấy các tệp nhỏ ghi hiệu suất cải thiện đáng kể.


1
Theo man mount, async là mặc định rồi.
nohillside

1

Không, đây rõ ràng là một số vấn đề với Mac OS. Tôi nhận được hiệu suất nhanh hơn đáng kể khi tôi thực hiện thao tác này bằng Linux trên máy ảo chạy trên cùng máy Macintosh. Tức là, VM nhanh hơn khoảng 5 lần so với hệ điều hành gốc.

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.