Тонка настройка віртуальної машини за допомогою SPICE
Однак дуже часто виникає проблема поганого промальовування екрану віртуальної машини в процесі гри.
Щоб покращити якість промальовування, QEMU приймає спеціальні параметри при запуску віртуальної машини визначальні параметри екрана:
- image-compression
- jpeg-wan-compression
- zlib-glz-wan-compression
- streaming-video
Увага: Даний список параметрів екрана отримано з файлу "qemu-options.hx", який формується при компіляції вихідного року QEMU (qemu - 1.2, spice - 0.12). Інформація, викладена в чорновому посібнику користувача SPICE Draft #10 [http://spice-space.org/docs/spice_user_manual.pdf] - є застарілою.
Параметр "image-compression" визначає алгоритм стиснення зображень, що виводяться на екран віртуальної машини. Нині застосовуються алгоритми без втрат. Доступні значення:
- "off" - використовувати алгоритми стиснення зображень.
- "quic" - використовувати алгоритм, заснований на базі алгоритму SFALIC
- "lz" - використовувати алгоритм Lempel-Ziv
- "glz" - використовувати алгоритм Lempel-Ziv із заснованим на історії глобальним словником.
- "auto_glz" - автоматичний вибір між значеннями lz, glz та quic.
- "auto_lz" - автоматичний вибір між значеннями lz, glz та quic.
За промовчанням використовується значення "auto_glz".
Параметри "jpeg-wan-compression" та "zlib-glz-wan-compression" визначають чи ні стискатимуться зображення при передачі трафіку через інтернет за алгоритмом jpeg і zlib відповідно. Доступні значення для обох параметрів:
- "auto" - автоматичний вибір, залежно від швидкості з'єднання.
- "never" – ніколи не стискати.
- "Always" - завжди стискати.
По-використовується значення "auto" - для обох параметрів.
- "off" - визначення вимкнено
- "all" - визначення включене
- "filter" - фільтрація вмісту
Приклади вказівки параметрів під час запуску з консолі
Стиснення зображень алгоритмом Lempel-Ziv із заснованим на історії глобальним словником:
kvm freedos.img -m 256 -smp 1,sockets=1,cores=1,threads=1 --spice port=5900,disable-ticketing,image-compression=glz -vga qxl
kvm freedos.img -m 256 -smp 1,sockets=1,cores=1,threads=1 --spice port=5900,disable-ticketing,image-compression=lz,streaming-video=off -vga qxl
Запуск із libvirt
Libvirt дозволяє вказувати параметри SPICE шляхом додавання відповідних нащадків у вузол "graphics" XML-опису домену віртуальної машини.
Розглянемо вказівки значень наступних параметрів екрану
- "image-compression" через атрибут compression вузла image
- "streaming-video" через атрибут mode вузла streaming
Додаткову інформацію про параметри домену викладено на відповідній сторінці документації libvirt [http://libvirt.org/formatdomain.html].
Наприклад, вузол graphics може мати такий вміст:
EDITOR= virsh edit
EDITOR=nano virsh edit freedos
Результати експериментів
При запуску ігор, застарілий клієнт Spicec відмінно показує себе навіть на старих комп'ютерах, сучасні клієнти Spicy і RemoteViewer поступаються йому як промальовування та обсяг споживаних ресурсів.
Інші параметри
Параметр "agent-mouse" визначає чи передаватиметься події миші від vdagent. Доступні значення:
- "on" - передача подій від vdagent включена
- "off" - передачаподій від vdagent відключено
За промовчанням використовується значення "on"
Якщо при запуску програми курсор миші переміщається різко, наприклад, у разі запуску гри "Fallout" необхідно вимкнути передачу подій миші через vdagent за допомогою даного параметра. У разі використання Libvirt елемент "
Де атрибут "mode" зі значенням "server" відключає використання vdagent як джерело подій миші, значення 'client' включає використання vdagent як джерело подій миші.
Параметр playback-compression визначає чи ні здійснюватися потокове стиснення звуку (за допомогою кодека CELT версії 0.5.1).
- "on" - стиск включено
- "off" - стиск вимкнено
За промовчанням використовується значення "on".
Буфер обміну
Bonus: Додавання звукової карти
Якщо ви вирішили пограти в старі добрі ігри з-під DOS, вам не обійтися без емуляції звукових карт SoundBlaster (відтворення звуків) і Adlib (відтворення MIDI-мелодій). Для того щоб приступити до використання даних віртуальних звукових карт вам необхідно переконатися в тому, що їх підтримка є в емуляторі KVM з допомогою команди:
qemu-system-i386 -soundhw ?
Повинен вийде висновок виду:pcspk PC speaker sb16 Creative Sound Blaster 16 cs4231a CS4231A adlib Yamaha YM3812 (OPL2) gus Gravis Ultrasound GF1 7 Audio es1370 ENSONIQ AudioPCI ES1370 hda Intel HD Audio
Якщо у списку в першому стовпці відсутні значення "sb16" та "adlib" - значить у вашому розпорядженні емулятор без підтримки звукових карток SoundBlaster і Adlib. Для того щоб вирішити цю проблему вам потрібно встановити з іншого репозиторію абосамостійно скомпілювати емулятор.
Якщо дані звукові карти доступні додайте їх у рядок запуску віртуальної машини:
/usr/bin/kvm -M pc-1.0 -m 256 -hda freedos.img -vga std -soundhw sb16,adlib
або налаштуйте домен libvirt шляхом додавання елементів:
елемент "domain".
Увага: Робота віртуальних звукових карт SoundBlaster і Adlib у середовищі DOS не стабільна і може викликати зависання віртуальної машини, тому керуйтеся методом перебору (від простого до складного) при налаштуванні DOS-додатків.