Ubuntu 18.04 LTSのセットアップ7 - JACK優先度とCPU

インストール後のメモその7です。

audioグループへの参加。

$ groups
ohashi adm cdrom sudo dip plugdev lpadmin sambashare

audioがないことを確認。

$ sudo adduser $USER audio
ユーザー `ohashi' をグループ `audio' に追加しています...
ユーザ ohashi をグループ audio に追加
完了。

いったんログアウト。と思ったがアップデートがあったので再起動。

$ groups
ohashi adm cdrom sudo audio dip plugdev lpadmin sambashare

audioが追加された。

$ sudo vi /etc/security/limits.conf 

で以下を追加。

@audio          -       rtprio          99
@audio      -   memlock     unlimited
@audio      -   nice        -19

niceの行はよく分かってないけどググったら出てきたから一応入れてみた。

念のため、またログアウト・ログインする。一緒にやっておけばよかった。

qjackctlを立ち上げて、設定。

f:id:ohac:20180602125927p:plain

f:id:ohac:20180602130152p:plain

リアルタイムをチェック、レイテンシの許容度やPCの性能に合わせてバッファサイズ(フレームとピリオド数)を設定。プライオリティを最高の99に設定。

最後に開始を押して、音が出れば成功。

f:id:ohac:20180602125935p:plain

メトロノームでも鳴らしてみる。

$ jack_metro -b 60

systemにドラッグして接続。

f:id:ohac:20180602125940p:plain

CPUの動作周波数の設定ができるようにする。

$ sudo apt install cpufrequtils

現状こんな感じ。

$ cpufreq-info | head -13
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 3.80 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 3.80 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 900 MHz.

900 MHzで動作していて、省電力モードっぽい。 なお、linux kernelは事情があり4.4.0-122-lowlatencyを使用している。

governorsにはperformanceとpowersaveがあるので、performanceに切り替えてみる。

$ sudo cpufreq-set -g performance
$ cpufreq-info | head -13
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 3.80 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 3.80 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 3.65 GHz.
$ cpufreq-info | grep current.CPU
  current CPU frequency is 3.60 GHz.
  current CPU frequency is 3.61 GHz.
  current CPU frequency is 3.67 GHz.
  current CPU frequency is 3.64 GHz.
  current CPU frequency is 3.53 GHz.
  current CPU frequency is 3.56 GHz.
  current CPU frequency is 3.70 GHz.
  current CPU frequency is 3.70 GHz.

ちなみにHyper Threadingは切った方がよいらしい。(今は切ってない)

powersaveに戻してみる。

$ sudo cpufreq-set -g powersave
$ cpufreq-info | grep current.CPU
  current CPU frequency is 900 MHz.
  current CPU frequency is 1.24 GHz.
  current CPU frequency is 922 MHz.
  current CPU frequency is 1.02 GHz.
  current CPU frequency is 900 MHz.
  current CPU frequency is 900 MHz.
  current CPU frequency is 1.12 GHz.
  current CPU frequency is 900 MHz.

コマンドだと面倒くさいが、後でCadenceとCatiaをインストールするので、 そこからGUIで操作可能になる。同じくGUIでJACKのバッファサイズも動的に切り替えられる。

リスニングではバッファ多めのpowersaveで、制作時はバッファ少なめのperformanceでといった運用が可能に。

buntu 18.04 LTSのセットアップ6 - ffmpeg

インストール後のメモその6です。

ffmpegをビルドする。

ohac.hatenablog.com

この頃はハードウェアでのエンコーディングを知らなかったが、 その後、VAAPIを使うとCPUパワーをほとんど使わずにH.264エンコーディングできるということを知った。

ということで以下からgit cloneする。

Download FFmpeg

ビルドに必要なパッケージは以下である程度揃うはず。

sudo apt build-dep ffmpeg

./configure を実行。hwaccelsがEnabledになっていることを確認。

Enabled hwaccels:
h263_vaapi         mpeg1_xvmc             vc1_vaapi
h264_vaapi         mpeg2_vaapi            vc1_vdpau
h264_vdpau         mpeg2_vdpau            vp8_vaapi
hevc_vaapi         mpeg2_xvmc             vp9_vaapi
hevc_vdpau         mpeg4_vaapi            wmv3_vaapi
mjpeg_vaapi        mpeg4_vdpau            wmv3_vdpau
mpeg1_vdpau

makeを実行。マルチコアなら-j8とか付けてもいい。

終わったら sudo make install し、/usr/local/binにインストール。

最後に動作確認。

$ which ffmpeg
/usr/local/bin/ffmpeg
$ ffmpeg -version|head -1
ffmpeg version 3.4.2-2 Copyright (c) 2000-2018 the FFmpeg developers
$ ffmpeg -hwaccels 2>/dev/null
Hardware acceleration methods:
vdpau
vaapi
cuvid

$ ffmpeg -encoders 2>/dev/null | grep vaapi
 V..... h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V..... hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
 V..... mjpeg_vaapi          MJPEG (VAAPI) (codec mjpeg)
 V..... mpeg2_vaapi          MPEG-2 (VAAPI) (codec mpeg2video)
 V..... vp8_vaapi            VP8 (VAAPI) (codec vp8)
 V..... vp9_vaapi            VP9 (VAAPI) (codec vp9)
$ ffmpeg -decoders 2>/dev/null | grep cuvid
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
 V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
 V..... mjpeg_cuvid          Nvidia CUVID MJPEG decoder (codec mjpeg)
 V..... mpeg1_cuvid          Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
 V..... mpeg2_cuvid          Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
 V..... mpeg4_cuvid          Nvidia CUVID MPEG4 decoder (codec mpeg4)
 V..... vc1_cuvid            Nvidia CUVID VC1 decoder (codec vc1)
 V..... vp8_cuvid            Nvidia CUVID VP8 decoder (codec vp8)
 V..... vp9_cuvid            Nvidia CUVID VP9 decoder (codec vp9)
$ ffmpeg -decoders 2>/dev/null | grep vdpau
 V....D h264_vdpau           H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration) (codec h264)
 V....D mpeg1video_vdpau     MPEG-1 video (VDPAU acceleration) (codec mpeg1video)
 V....D mpegvideo_vdpau      MPEG-1/2 video (VDPAU acceleration) (codec mpeg2video)
 V....D mpeg4_vdpau          MPEG-4 part 2 (VDPAU) (codec mpeg4)
 V....D vc1_vdpau            SMPTE VC-1 VDPAU (codec vc1)
 V....D wmv3_vdpau           Windows Media Video 9 VDPAU (codec wmv3)

webcamのキャプチャ確認。

$ man ffmpeg 2>/dev/null | grep video4
               ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
               ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
$ ffmpeg -f video4linux2 -i /dev/video0 /tmp/out.mpg

再生。vlcが最もCPU負荷が軽いようだ。

$ ffplay /tmp/out.mpg
$ ffmpeg -re -i /tmp/out.mpg -f xv display
$ vlc /tmp/out.mpg

ハードウェアアクセラレータを使ったエンコードを確認。

$ ffmpeg -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -f video4linux2 -i /dev/video0 -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -y /tmp/out.mkv

画面のキャプチャ例。

$ ffmpeg -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -f x11grab -i :0.0+100,100 -video_size vga -framerate 30 -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -y /tmp/out.mkv

VDPAUを有効にして再生したが、効果はいまいち。vlcが一番よさそう。

sudo apt install vdpauinfo libvdpau-va-gl1 vdpau-va-driver
VDPAU_DRIVER=va_gl vdpauinfo
VDPAU_DRIVER=va_gl ffmpeg -hwaccel vdpau -re -i /tmp/out.mkv -pix_fmt yuv420p -f xv display

Ubuntu 18.04 LTSのセットアップ5 - JACK

インストール後のメモその5です。

まずはJACKをインストール。 ここでPulseAudioのモジュールも忘れないように。

sudo apt install jackd pulseaudio-module-jack

インストール中にリアルタイム実行を許可するか聞かれるので、許可する。

qjackctlを実行。設定ボタンを押し、インターフェイスを選択。 前回、PulseAudioの設定を最低限にしたので衝突は起きない。

開始ボタンを押し、pavucontrolを実行。JACKのインターフェイスが見えていたら成功。

qjackctlの接続ボタンを押してJACK Sinkとsystemを接続(たぶん自動で接続されている)。

ChromeなどのPulseAudio対応アプリを立ち上げ、YouTubeなどのオーディオ再生のあるサービスを開く。 pavucontrolで再生デバイスをNullからJACK Sinkに変更。音が出れば成功。 デフォルトデバイスに設定する緑のボタンを押しておけば次回からは自動でJACK Sinkを使ってくれる。

Ubuntu 18.04 LTSのセットアップ4 - PulseAudio

インストール後のメモその4です。

pulseaudioを無効にする

  • 正直よく分からない
  • よく分からないが /usr/lib/systemd/user/pulseaudio.service を以下のように変更
#ExecStart=/usr/bin/pulseaudio --daemonize=no
ExecStart=/bin/true
#Restart=on-failure

よく分からないが以下のようなコマンドを実行。不要かもしれない。

systemctl --user disable pulseaudio.socket
systemctl --user disable pulseaudio.service

reboot後、ps ax|grep pulseで動いていないことを確認。

以下は関係してそうなファイルのメモ。

  • /etc/xdg/autostart/pulseaudio.desktop
  • /usr/bin/start-pulseaudio-x11
  • /usr/lib/systemd/user/pulseaudio.socket, .service

pulseaudioの設定

  • /etc/pulse/の以下のファイルを~/.config/pulse/にコピー
  • daemon.confを編集
    • daemonize = yes だけあれば十分か
  • client.confを編集
    • autospawn = no を指定
  • default.paを編集
    • ばっさり削り以下のようにする。(nullとjackdbusを追加)
.fail

load-module module-null-sink

.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

pulseaudioを起動し、pavucontrolで動いていることを確認。 音はJACKで制御するのでこのような設定にしている。

Ubuntu 18.04 LTSのセットアップ3

インストール後のメモその3です。 (メモを取らなきゃ、とか思うとなかなか進まない。)

  • Wine環境を整える
    • playonlinuxをインストール。しかし、うまく動かない。Wineのインストールだけは動く。
    • wineとwinetricksをとりあえずインストール。
    • steamをwinetricksでインストール。しかし、まともに動くゲームがない。
  • wineのビルドに関連して各種パッケージをインストール
    • build-dep
    • aria2
    • aptにsource packageを追加
  • anyenvでGoとPythonをインストール
    • goenv
    • pyenv
  • Ubuntuソフトウェアで色々と追加
    • Steam - Torchlight2とTerrariaが動いた。
    • Spotify - ~/snapに何かできる
    • Discord - ~/snapに何かできる

Ubuntu 18.04 LTSのセットアップ2

インストール後のメモその2です。

  • Bluetoothのキーボードを購入したのでペアリング。
  • アルトコイン時価総額を確認するサービスのCookieを復旧。
    • いろいろ頑張ったが、ChromeのCookiesの暗号を復号化するのは諦めた。
    • 結局、現在のポートフォリオを手で入力していき復旧させた。
    • その関係でsqlite3とgitをインストールした。
    • githubにもログイン。
  • アプリたち
    • vlc
    • gnucash
    • nomacs (IrfanViewのような軽いやつ)
    • discord
    • owncloud
  • ownCloudの同期が終わったらgnucashとkeepass2でファイルを開く。
  • anyenvでNode.jsとRubyをインストール。
    • その関係で.ssh/の復旧。
    • ビルドに必要なパッケージをいくつかapt install

Ubuntu 18.04 LTSのセットアップ1

インストール後のメモです。

  • KeePass2のデータをコピーしてきて、各種パスワードを扱えるようにする。
    • KeePassXCというのもあるらしい。今度試したい。
  • FirefoxChromeをダウンロードして、インストールする。
  • 2FA用に gauth http://gauth.apps.gbraad.nl/ にアクセスし、各種シークレットを入力。
    • Cookieを移植したいところだけど、とりあえず手で入力。
  • ChromeGoogleにサインインする。
  • vimをインストール。nanoをアンインストール。
  • sudo visudoでNOPASSWDを設定。
  • Region & Language の Manage Installed Languages で日本語を設定。
    • ibus-skkをインストールし、それを追加する。
    • ibus英語キーボードとの組み合わせができないので後でfcitxに入れ替える予定。
  • アプリをインストール。
  • データ用HDDをmkfs.ext4でフォーマットし、バックアップからrsync -aでコピー。

今のところ、進捗はこんなところ。