HTCデバイスの取り外しに時間がかかる

HTCデバイスの取り外しに時間がかかる

この記事をここに投稿するかどうかはわかりません。Android SEこれは、これがAndroidオペレーティングシステムと直接関連していないと思うからです。私のシステムでは、次のオプションを使用してHTCデバイスを手動でmount設定しました。umount/etc/fstab

UUID=3465-3762 /mnt/htc auto gid=100,umask=002,noauto,user,rw,exec 0 0

この方法は、SDカードの少量のデータを修正するのにうまく機能しますが、他のデバイスからFLACでエンコードされた音楽アルバムのいくつかをコピーするたびにSDカードをマウント解除するのに時間がかかるようです。

$ time umount /mnt/htc/
real    1m17.195s
user    0m0.000s
sys     0m0.237s

この時間は変更されたデータの量に比例しますか?とにかく削除するのにこれほど時間がかかりますか?

答え1

これは、デバイスへの書き込みバッファリングを含む多くのバッファリングを実行するカーネルに関連しています。

発行する場合:

cp large_file /mnt/htc/

cpデータが完了するとすぐに返されますがwrite(かなり「遅い」デバイス/接続の場合)、データが実際に書き込まれる前に返されます。 (cp使用しているツールがfsync実際のデータがドライブに到着するのを待つために独自に呼び出すか、または同様の呼び出しを行わない限り、一部のグラフィックファイルマネージャはこれを実行し、一部のツールはそれを実行するかどうかを制御します。できるオプションがあります。)

unmountデータが失われないようにデバイスを「分離」する前に、書き込みバッファをフラッシュします。カーネルが大量のデータをバッファリングすると、時間がかかり、実際の書き込み速度も遅くなります。

コピーおよび操作中に端末で次のタスクをiostat 2(部分的に)実行してみると、そのポイントが返されるまで書き込みI / Oが表示されます。sysstatunmountunmount

関連情報