Тонка настройка віртуальної машини за допомогою 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-додатків.