mirakcって何ですか?
初めて名前を目にした人もいると思うので,簡単に説明しておきます.
mirakcは,Raspberry Piのようなシングルボードコンピュータ(SBC)をターゲットデバイスとして,Rust言語で記述されたMirakurunクローンです.
大きな改善点として,CPU使用率及びメモリー使用量の改善が挙げられます.例えば,8チャンネル同時ストリーミング時のリソース使用効率が,Mirakurunと比べて以下のように向上しています.
- CPU使用率は同程度(もしくは低い)
- メモリー使用量は1/4
また,GCを使用しない実装となっていることから(一部,参照カウント方式のメモリー管理を行っています),CPU使用率・メモリー使用量共に安定的に推移します.
mirakcは,Mirakurunの完全クローンには至っておらず,EPGStationを動作させるために必要なWeb APIのみを実装しています.そのため,残念ながらChinachuでは使えません(もちろん,不足しているWeb APIを実装すれば動くとは思います).
開発を始めるまでの経緯
一般的に,SBCは以下のような特徴を持っています.
- 1GHz程度の低クロックCPU
- 1GB程度のメモリー
- 十数ワットの電力消費
一昔前のデスクトップPCよりも貧弱な環境です.動画をffmpegでソフトウェアエンコードするといった使い方には向いていません.しかし,24時間稼働し続けるちょっとしたサービスの運用には最適です.
ちょっとしたサービス.そう,録画サーバーに向いていると思いませんか?私もそう考えて,棚の上で埃を被っていたRaspberry Pi 3Bに手を伸ばしました.
早速メルカリでPX-S1UDとカードリーダーを手に入れました.マイクロSDカードに Raspbianを書き込み,チューナーデバイスのファームウェアとMirakurunをインストールしました.
Mirakurunは申し分ない速度で動作しました.CPU使用率も問題ありませんでした.心配していたメモリー使用量は150MB前後であり,予想よりも少ない消費量で動作しました.ちょっとした成功に高揚感を感じた私は,何を思ったのかROCK64とPX-Q3U4を購入していました.
当時(2019年第1四半期),Raspberry Pi 3Bに搭載されているイーサネットの上限が100Mbpsであるため,Mirakurunで4つのTSストリームを同時に送信することは困難であることが知られていました(Qiitaの記事だったと記憶していますが,その記事はすでに削除されてしまっているようです).そこで,ROCK64の登場です.今ならRaspberry Pi 4 を購入する場面ですが,その当時,1Gbpsイーサネット搭載で扱いやすそうなSBCの1つが ROCK64でした.価格も手頃だったので悩むことなく購入しました.
準備を整え,8つのTSストリームの同時送信を試したところ,メモリーが枯渇しました.後で分かったことですが,Mirakurunでも2GBあれば8つのTSストリームを同時送信可能です.当時私が使用していたROCK64に搭載されていたメモリーは1GB.ROCK64のメモリーのラインナップは1/2/4GB.数千円をケチって安いのを買ったことがmirakc開発の始まりとなりました.