이 질문은 주로 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 인스턴스를 실행할 만큼 성능이 충분하다고 생각합니다.
또 다른 벤치마크는 다음을 보여줍니다.
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 Kingston입니다.
*-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이 설치된 것으로 보입니다. (적어도 드라이버가 로딩되는 것 같습니다.) 그렇다면 지연의 원인이 있는 것입니다. 두 명의 운전자가 동일한 자원을 놓고 경쟁합니다. 몇 년 전에도 똑같은 일을 했는데 시스템이 끔찍하게 반응했습니다.
단기적인 해결책은 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&동기화)
그리고 두 번째 작업의 타이밍을 확인하세요.
동시 작업을 수행하는 것도 이 매체에 적합하지 않으며 중단을 초래할 수 있습니다. 그러한 장비의 수명은 그러한 사용으로 인해 짧아지며 해당 미디어는 그러한 용도로 설계되지 않았습니다.
일반적으로 하이퍼바이저는 I/O 집약적이며 VM I/O 작업 외에도 지속적으로 VM 이미지를 저장할 수 있으며 일부 기술은 정기적인 스냅샷도 수행합니다.
간단히 말해서, 설계 목적에 맞지 않는 용도로 사용하려고 하는 것이며 아무리 최적화하려고 해도 작동하지 않을 것입니다.
추신. 나는 또한 용량이 더 적은 것을 제외하고는 "동일한" USB 펜 모델을 가지고 있는데, 그 모델은 정말 나쁜 선택입니다.느린정상적인 사용 중. 제조업체의 사양은 서류상으로는 좋아 보이지만 일반적으로 RAM 버퍼에 맞는 데이터 양으로 작업 시간을 정합니다.
PS2. 장치가 USB 3.1이라고 말했지만 장치의 기술은 알려주지 마십시오.