この質問は主にLinuxのUSBパフォーマンスに関するものですが、特にUSBでvirtualboxイメージを実行するときのパフォーマンスの問題についてです。私はこれをvirtualboxフォーラムに投稿しましたが、これまで誰も私を助けませんでした。
詳細
新しいKingston HyperX Savage 512GB 3.1 USBスティックを購入しました。上記の150GBファイルをコピーしてハッシュを確認した結果、合格しました。また、以下を使用して速度を確認しました。
time $(sudo dd if=/dev/zero of=/home/host/mnt/testfile2 bs=1M count=1000 & sync)
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 3.69425 s, 284 MB/s
real 0m3.883s
user 0m0.002s
sys 0m0.002s
それ以外の場合は約110MB / sですが、VirtualBoxはUbuntuインスタンスを実行するのに十分なパフォーマンスがあると思います。
もう1つのベンチマークは次のことを示しています。
sudo hdparm -Tt /dev/sdd1
/dev/sdd1:
Timing cached reads: 21882 MB in 1.99 seconds = 10973.39 MB/sec
Timing buffered disk reads: 1204 MB in 3.00 seconds = 400.74 MB/sec
VirtualBoxを起動すると、一時停止または遅延が発生します。新規開始および終了仮想ボックスログは、次の場所にあります。https://pastebin.com/iC7kQ54J(長すぎるので始めを切ります。)
私の研究では、遅延が発生するたびにVBox.logに次のメッセージがたくさん表示されます。
00:07:10.988753 AsyncCompletion: Task 0x007f65495ff9c0 completed after 16 seconds
00:07:17.981513 AsyncCompletion: Task 0x007f65495ffe80 completed after 23 seconds
00:07:17.989714 AsyncCompletion: Task 0x007f65495ff7c0 completed after 23 seconds
00:07:18.004043 AsyncCompletion: Task 0x007f65495ffec0 completed after 23 seconds
00:07:18.009427 AsyncCompletion: Task 0x007f65495fffc0 completed after 23 seconds
00:07:18.065390 AsyncCompletion: Task 0x007f65495ffd80 completed after 23 seconds
00:07:18.065474 AsyncCompletion: Task 0x007f65495ff840 completed after 23 seconds
インターネット検索の結果、人々はこれがドライブのI / Oに関連していると言っているようです。しかし、ベンチマーク中にドライブで良いパフォーマンスを得ている場合はどうすればよいですか?
私の基準マーカーが間違っていますか?
より良いアプローチを提案できますか?
USBを使用してVirtual Boxのパフォーマンスの問題を引き起こす無効にすることができる他のパラメータはありますか?
この仮想マシンの実行中は、ホストマシンのdmesgにエラーはありません。
私のUSBの場合、sudo lshw | grep -A26 -B10 キングストンです。
*-usb:1
description: Mass storage device
product: HyperX Savage
vendor: Kingston
physical id: 6
bus info: usb@4:6
logical name: scsi8
version: 1.00
capabilities: usb-3.10 scsi emulated scsi-host
configuration: driver=usb-storage maxpower=896mA speed=5000Mbit/s
*-disk
description: SCSI Disk
product: HyperX Savage
vendor: Kingston
physical id: 0.0.0
bus info: scsi@8:0.0.0
logical name: /dev/sdd
version: PMAP
size: 468GiB (503GB)
capabilities: removable
configuration: ansiversion=6 logicalsectorsize=512 sectorsize=512
*-medium
physical id: 0
logical name: /dev/sdd
size: 468GiB (503GB)
capabilities: partitioned partitioned:dos
configuration: signature=6e13cd5d
*-volume
description: EXT4 volume
vendor: Linux
physical id: 1
logical name: /dev/sdd1
logical name: /home/host/mnt
version: 1.0
serial: e953210a-43c2-4ba9-87ec-55ed8ab3c6ff
size: 468GiB
capacity: 468GiB
capabilities: primary journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
configuration: created=2018-09-01 00:55:53 filesystem=ext4 label=datapartition lastmountpoint=/home/host/mnt modified=2018-09-01 12:50:22 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2018-09-01 12:50:22 state=mounted
誰でも問題が何であるかを教えてもらえますか?
答え1
ログによると、KVMがインストールされているようです。 (少なくともドライバがロードされているようです。)そうであれば、遅延の原因があります。 2人のドライバーが同じ資源を置いて競います。数年前も同じことをしましたが、システムはひどく反応しました。
短期的な解決策は、Virtualboxを起動する前にKVMモジュールを削除することです。長期的な解決策は、仮想化されたアプリケーションを削除または初期化する前に自動的にチェックすることです。
答え2
あなたの質問によると、最適な条件では、USB書き込み時間は読み取り時間の半分です。バッファを考慮していないようで、これらの速度はデバイスの実際の性能と非常に似ています。
だから試してみてください:
時間$(sudo dd if=/dev/urandom of=/home/host/mnt/testfile2 bs=1M count=1000 ) 時間$(sudo dd if=/dev/urandom of=/home/host/mnt/testfile2
bs =1M個数=1000&同期)
そして、2番目のタスクのタイミングを確認してください。
同時作業を実行することもこのメディアには適しておらず、中断を招く可能性があります。そのような機器の寿命はそのような使用のために短くなり、そのメディアはそのような用途には設計されていない。
一般に、ハイパーバイザーはI / O集約的であり、VM I / O操作に加えてVMイメージを継続的に保存することができ、いくつかの技術は定期的なスナップショットも実行します。
簡単に言えば、設計目的に合わない用途で使用しようとするものであり、いくら最適化しようとしても動作しないでしょう。
PS。私はまた、容量が少ないことを除いて、「同じ」USBペンモデルを持っていますが、そのモデルは本当に悪い選択です。遅い通常使用中。メーカーの仕様は書類上では良く見えますが、通常はRAMバッファに収まるデータ量で作業時間を決めます。
PS2。デバイスはUSB 3.1と言っていますが、デバイスの技術を教えてはいけません。