Closed
Bug 1440098
Opened 7 years ago
Closed 7 years ago
Experiment with running a kvm-accelerated x86 android emulator in docker
Categories
(Testing :: General, enhancement, P1)
Tracking
(Not tracked)
RESOLVED
WORKSFORME
People
(Reporter: gbrown, Assigned: gbrown)
References
Details
Recent emulator experiments on moonshot hardware and packet.net did not run docker. Can we run the android emulator with an x86 image and use kvm-acceleration inside a docker container?
Assignee | ||
Comment 1•7 years ago
|
||
Running on my own laptop....
Be sure to run with --privileged:
sudo docker run --privileged -ti
as root (not sure how much of this is necessary yet):
apt-get update
apt-get install kvm
apt-get upgrade
sudo modprobe kvm_intel
mknod /dev/kvm c 10 232
chgrp kvm /dev/kvm
adduser worker kvm
chmod g+w /dev/kvm
modprobe kvm_intel
<download avd, emulator>
worker@cbb9225b6bb6:~$ ls -l /dev/kvm
crw-rw-r-- 1 root kvm 10, 232 Feb 21 21:00 /dev/kvm
worker@cbb9225b6bb6:~$ lsmod | grep kvm
kvm_intel 176128 3
kvm 544768 1 kvm_intel
irqbypass 16384 1 kvm
worker@cbb9225b6bb6:~$ id
uid=1000(worker) gid=1000(worker) groups=1000(worker),44(video),127(kvm)
worker@cbb9225b6bb6:~$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
worker@cbb9225b6bb6:~$ emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.
accel
export PATH=~/android-sdk-linux/emulator:~/android-sdk-linux/tools:~/android-sdk-linux/platform-tools:$PATH
xvfb-run --server-args="-screen 0 1600x1200x24" emulator -avd test-1 -verbose -show-kernel -gpu swiftshader -skip-adb-auth -ranchu -selinux permissive -memory 3072 >emulator.log &
emulator.log looks okay, except it has no kernel messages; 'adb devices' shows no devices :(
Assignee | ||
Comment 2•7 years ago
|
||
https://tools.taskcluster.net/groups/WuC0r7RzSymy_eximaoMbA/tasks/WuC0r7RzSymy_eximaoMbA/runs/0/logs/public%2Flogs%2Flive.log
[task 2018-05-07T01:09:31.841Z] 01:09:31 INFO - Running command: ['kvm-ok']
[task 2018-05-07T01:09:31.841Z] 01:09:31 INFO - Copy/paste: kvm-ok
[task 2018-05-07T01:09:31.844Z] 01:09:31 INFO - INFO: /dev/kvm exists
[task 2018-05-07T01:09:31.845Z] 01:09:31 INFO - KVM acceleration can be used
[task 2018-05-07T01:09:31.845Z] 01:09:31 INFO - Return code: 0
This is based on a slightly-modified desktop1604test docker image running in privileged mode, on packet.net: so far, so good.
Assignee | ||
Comment 3•7 years ago
|
||
Very good news here: Tests running in kvm-accelerated emulator on packet.net.
https://tools.taskcluster.net/groups/TdL5szt4QiS5L1ZE7H4FPw/tasks/TdL5szt4QiS5L1ZE7H4FPw/runs/0/logs/public%2Flogs%2Flive.log
[task 2018-05-09T18:01:06.374Z] 18:01:06 INFO - Copy/paste: emulator -accel-check
[task 2018-05-09T18:01:06.381Z] 18:01:06 INFO - accel:
[task 2018-05-09T18:01:06.381Z] 18:01:06 INFO - 0
[task 2018-05-09T18:01:06.381Z] 18:01:06 INFO - KVM (version 12) is installed and usable.
[task 2018-05-09T18:01:06.381Z] 18:01:06 INFO - accel
[task 2018-05-09T18:01:06.381Z] 18:01:06 INFO - Return code: 0
[task 2018-05-09T18:01:39.737Z] 18:01:39 INFO - Running timeout 30 /builds/worker/workspace/build/android-sdk-linux/platform-tools/adb devices
[task 2018-05-09T18:01:39.740Z] 18:01:39 INFO - List of devices attached
[task 2018-05-09T18:01:39.740Z] 18:01:39 INFO - emulator-5554 device
[task 2018-05-09T18:02:06.179Z] 18:02:06 INFO - 0 INFO SimpleTest START
[task 2018-05-09T18:02:06.179Z] 18:02:06 INFO - 1 INFO TEST-START | dom/bindings/test/test_sequence_wrapping.html
[task 2018-05-09T18:02:06.179Z] 18:02:06 INFO - 2 INFO TEST-OK | dom/bindings/test/test_sequence_wrapping.html | took 1108ms
[task 2018-05-09T18:02:06.180Z] 18:02:06 INFO - 3 INFO TEST-START | Shutdown
[task 2018-05-09T18:02:06.180Z] 18:02:06 INFO - 4 INFO Passed: 4
[task 2018-05-09T18:02:06.180Z] 18:02:06 INFO - 5 INFO Failed: 0
[task 2018-05-09T18:02:06.180Z] 18:02:06 INFO - 6 INFO Todo: 0
[task 2018-05-09T18:02:06.180Z] 18:02:06 INFO - 7 INFO Mode: non-e10s
[task 2018-05-09T18:02:06.180Z] 18:02:06 INFO - 8 INFO Slowest: 1108ms - /tests/dom/bindings/test/test_sequence_wrapping.html
Assignee | ||
Comment 4•7 years ago
|
||
Requirements:
- install qemu-kvm package in docker image
- run privileged: docker run --privileged -- otherwise /dev/kvm is not visible
- ensure test user (worker:worker) has permissions for /dev/kvm -- had to chmod 666 /dev/kvm in run-task (cannot do that in Dockerfile...need a privileged context)
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•