MacBook ProでSDカードの書き込み速度(/ dev / disk *を使用)を高速化するにはどうすればよいですか?


17

MacBookからいくつかのLinuxディストリビューションをSDカードにインストールしていますが、数百MBの転送に1時間以上かかります(ddand を使用/dev/disk1)。

dd出力

上記の出力を見ると、およそ0.31 MB / sで動作しています!SDカードはクラス10であり、私のMacBook Proは2.66 GHz Intel Core 2 Duo、4 GB 1067 MHz DDR3、およびOS X Lion 10.7.4です。カードリーダーのハードウェアレポートは次のとおりです。

内蔵SDカードリーダー:

ベンダーID:0x05ac
製品ID:0x8403
リビジョン:1.00シリアル番号:9833

SDHCカード:

容量:7.97 GB(7,969,177,600バイト)
リムーバブルメディア:はいBSD名:disk1
パーティションマップタイプ:MBR(マスターブートレコード)
SMARTステータス:サポートされていない
ボリューム:

PI:
容量:7.96 GB(7,964,983,296バイト)
ファイルシステム:MS-DOS
BSD名:disk1s1
コンテンツ:DOS_FAT_32

への転送がなぜ/dev/disk1遅いのか、どうすれば高速化できるのか?


ハードウェアの問題のように思えます。2011 MBPには悪いSDリーダーがあると聞きましたが、以前のMBPでも問題になる可能性があります。別のSDカードを試してください。ただし、ほとんどのMBPでロジックボードに接続されているカードリーダーの問題である可能性があります。
robmathers

私は2009年にラップトップを購入しましたが、Fedoraは現在2時間コピーしており、あきらめました。新しいカードリーダーの時間だと思う。
StuR

興味深いことに、@ pci
iolsmit

回答:


38

ちょうど同じ問題に/dev/disk*出くわし、それはバッファリングされているので遅いようです。対応するrdiskデバイス(例:)を使用する場合、/dev/rdisk1s1期待する速度が得られます。これは明らかにBSDの問題です。

例:

% 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)

参照:


1
結果を確認することができたので、これがこの質問に対する最良の答えです。
〜1.35

1
もちろんそれは残念です(Apple / BSDの場合)-ただし、ddを使用すると、1回の長い書き込み(または読み取り)アクセス権があるため、最高のパフォーマンスが得られます。ファイルレベルとランダムアクセスでは、SDカードによってパフォーマンスが大きく異なります。
iolsmit

2
長い話ですが、あなたはたった90ドル分のサーモンを節約してくれました。
deweydb 14

3
数千キロメートルにわたって20 Mbps以上の速度でファイルをダウンロードでき、最後の数メートルはワイヤレスです。しかし、ハード接続を介して数センチメートルのデータを転送すると、はるかに遅くなります。
ジョナサン。

ありがとう。7GBのデータを10時間以上コピーすることを検討していましたが、受け入れられないと判断し、この回答が見つかりました-非常に役立ちました。
バラク

3

SDカードの速度が遅い可能性があります。

見てみましょう。このベンチマークを(ランダム書き込み、4キロバイト(QD = 1)[MB / S])、あなたは、ほとんどのSD-カードは、小さなファイル用(100 KB /秒以下)お粗末な書き込み性能を持っていることがわかります-とA典型的なLinuxのインストールは、ディスクに書き込まれた多くの小さなファイルで構成されています。

内蔵カードリーダーは少なくとも20 MB / sの読み取り/書き込みが可能でなければなりません-別のカードリーダーがこのSDカードでの体験を改善することはほとんどありません。

すべてのファイルが書き込まれると、つまりシステムがインストールされると、SDカードからLinuxを受け入れ可能な速度で実際に実行できる場合があります-ほとんどが読み取りアクセスであるためです。


1
ダウン有権者については、このポスト
iolsmit

しかし、良いとわかっている別のリーダーでカードをテストし、疑わしいリーダーで良いとわかっているカードをテストするのは良い実験です。また、ファイルシステムのデータ構造に新しいファイルを作成する(コンテンツを書き込むのではなく)すべての「事務処理」が、多くの小さなファイルに対して非常に大きいことに注意してください。
トールビョーンラヴンアンデルセン

Whle SDカードはそれほど高速ではなく、速度(328198バイト/秒およびそれ以降の288881バイト/秒)は、今日のSDカードでは想像できません(フロッピードライブのように感じられます)。これは「dd」なので、複数の小さなファイルではなく、単一のファイルを意味します。
バラク

1

カードが同期オプションでマウントされている場合、すべてのファイルを閉じると書き込みがディスクにフラッシュされるため、小さなファイルでのパフォーマンスは大きなファイルと比較するとひどいことになります。マウントオプションから同期を削除した場合、ファイルを書き込むとディスクに出力されるという保証はありません。コマンドラインから手動でsyncを呼び出すか、デバイスをアンマウントしてから削除するか、電源を切ってください。ただし、同期しないと、小さなファイルの書き込みパフォーマンスが大幅に向上するはずです。


1
によるとman mount、すでにasyncがデフォルトです。
nohillside

1

いいえ、これは明らかにMac OSの問題です。同じMacintosh上で実行されている仮想マシンでLinuxを使用してこの同じ操作を行うと、パフォーマンスが大幅に向上します。つまり、VMはネイティブOSの約5倍高速です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.