KVM上でのエンコード速度の検証
スポンサーリンク
ホスト環境は
- OS : CentOS7 (UEFIブート)
- CPU: i7-6700K
- M/B: ASRock Z170 Extreme6
- RAM: Crucial CT4K8G4DFD8213 DDR4-2133 8GBx4
KVMのインストール
詳細はCentOS7へのKVMのインストール方法にあるためここではコマンド列挙のみにする
ホストへのKVMのインストール完了後にゲストにCentOS7をインストールする
$ sudo yum -y install qemu-kvm libvirt virt-install bridge-utils $ sudo yum -y install spice-server $ vi /etc/default/grub # intel_iommu=onを追加 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rd.lvm.lv=centos00/swap crashkernel=auto vconsole.keymap=jp106 rd.lvm.lv=centos00/root vconsole.font=latarcyrheb-sun16 rhgb quiet intel_iommu=on" GRUB_DISABLE_RECOVERY="true" $ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg $ sudo reboot $ dmesg | grep -e DMAR -e IOMMU [ 0.000000] ACPI: DMAR 000000007f382ca0 000A8 (v01 INTEL SKL 00000001 INTL 00000001) [ 0.000000] Intel-IOMMU: enabled [ 0.137271] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 7e3ff0505e [ 0.137285] dmar: IOMMU 1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da [ 0.138559] IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1 [ 1.333512] DMAR: No ATSR found [ 1.333579] IOMMU 0 0xfed90000: using Queued invalidation [ 1.333582] IOMMU 1 0xfed91000: using Queued invalidation [ 1.333586] IOMMU: Setting RMRR: [ 1.333616] IOMMU: Setting identity map for device 0000:00:02.0 [0x7f800000 - 0x8fffffff] [ 1.333721] IOMMU: Setting identity map for device 0000:00:14.0 [0x7e958000 - 0x7e977fff] [ 1.333787] IOMMU: Prepare 0-16MiB unity mapping for LPC [ 1.333820] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff] $ sudo systemctl start libvirtd $ sudo systemctl enable libvirtd $ sudo systemctl stop NetworkManager $ sudo systemctl disable NetworkManager $ sudo systemctl start network $ sudo chkconfig network on $ cd /etc/sysconfig/network-scripts $ sudo vi ifcfg-enp5s0 TYPE=Ethernet DEVICE=enp5s0 ONBOOT=yes BRIDGE=br0 $ sudo vi ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=none IPV6INIT=no UUID=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx ONBOOT=yes DNS1=192.168.11.1 IPADDR=192.168.11.232 PREFIX=24 GATEWAY=192.168.11.1 $ sudo systemctl restart network $ sudo virsh net-autostart default --disable $ sudo virsh net-list --all 名前 状態 自動起動 永続 ----------------------------------------- default 停止状態 いいえ (no) はい (yes) $ sudo systemctl stop firewalld
FFmpegのインストール
ホスト,ゲストにFFmpegをインストールする
(参考: CentOS7にyumでffmpegをインストール)
$ sudo yum -y install yum-plugin-priorities $ sudo vi /etc/yum.repos.d/CentOS-Base.repo # priority=1 $ sudo yum -y install epel-release $ sudo vi /etc/yum.repos.d/epel.repo # enabled=0,priority=11 $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm $ sudo vi /etc/yum.repos.d/nux-dextop.repo # enabled=0,priority=13 $ sudo yum -y --enablerepo=epel,nux-dextop install ffmpeg $ ffmpeg -version ffmpeg version 2.6.3 Copyright (c) 2000-2015 the FFmpeg developers
速度比較1
ホスト,ゲスト(6スレッド、16GB)で
以下のスクリプト(スレッド数:4)で30分のtsをエンコードした
time ffmpeg -y -i input.ts \ -f mp4 \ -preset medium -crf 20 -tune film \ -vcodec libx264 -s 1280x720 -vf yadif \ -acodec aac -strict -2 -ac 2 -ar 48000 -ab 128k \ -threads 4 \ output.mp4
- ホスト(ゲスト起動状態): 16分16秒
- ホスト(ゲスト停止状態): 16分15秒
- ゲスト: 16分09秒
何故かゲストの方が早い結果になった...
速度比較2
ホスト、ゲスト(8スレッド、16GB)で
以下のスクリプト(スレッド数自動:12)で30分のtsをエンコードした
time ffmpeg -y -i input.ts \ -f mp4 \ -preset medium -crf 20 -tune film \ -vcodec libx264 -s 1280x720 -vf yadif \ -acodec aac -strict -2 -ac 2 -ar 48000 -ab 128k \ -threads 0 \ output.mp4
- ホスト(ゲスト起動状態): 10分30秒
- ホスト(ゲスト停止状態): 10分28秒
- ゲスト: 11分21秒
消費電力
サンワサプライ TAP-TST8を用いて消費電力を測定した