Skip to content

Performance measurements of tuner servers

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

mirakc/performance-measurements

Repository files navigation

Performance measurements of tuner servers

The performance metrics described in this page were collected by using the following command executed on a local PC:

$ sh measure.sh http://target:40772 10m >/dev/null
Reading TS packets from ex...
Reading TS packets from ntv...
Reading TS packets from etv...
Reading TS packets from nhk...
Reading TS packets from bs1...
Reading TS packets from bsp...
Reading TS packets from bs-ntv...
Reading TS packets from bs-ex...
CHANNEL  #BYTES      #PACKETS  #DROPS
-------  ----------  --------  ------
ex       1150992384  6122299   0
ntv      1153122304  6133629   0
etv      1179140096  6272021   0
nhk      1140899840  6068616   0
bs1      1436811264  7642613   0
bsp      1294368768  6884940   0
bs-ntv   1149140992  6112452   0
bs-ex    1186283520  6310018   0

NAME    BASE  MIN   MAX   MIN+  MAX+
------  ----  ----  ----  ----  ----
cpu     2     28    30    26    28
memory  221   247   248   26    27
load1   0.33  0.92  2.14  0.59  1.81
tx      0     132   140   132   140
rx      0     155   155   155   155

http://localhost:9090/graph?<query parameters for showing metrics>

Results

mirakc/2.0.0 (Apline):

NAME    BASE  MIN   MAX   MIN+  MAX+
------  ----  ----  ----  ----  ----
cpu     2     28    30    26    28
memory  221   247   248   26    27
load1   0.33  0.92  2.14  0.59  1.81
tx      0     132   140   132   140
rx      0     155   155   155   155

mirakc/2.0.0 (Debian):

NAME    BASE  MIN   MAX   MIN+  MAX+
------  ----  ----  ----  ----  ----
cpu     1     27    29    26    28
memory  226   252   253   26    27
load1   0.06  0.7   1.63  0.64  1.57
tx      0     125   135   125   135
rx      0     155   155   155   155

Mirakurun/3.9.0-rc.2:

NAME    BASE  MIN   MAX   MIN+  MAX+
------  ----  ----  ----  ----  ----
cpu     1     33    37    32    36
memory  299   411   420   112   121
load1   0.14  1.05  1.93  0.91  1.79
tx      0     122   136   122   136
rx      0     154   155   154   155

Environment

Target Server:

  • Raspberry Pi 4B (DRAM: 4GB)
  • Receive TS packets from the upstream server by using curl
  • cat is used as a decoder
  • MALLOC_ARENA_MAX=2

Upstream Server:

  • ROCK64 (DRAM: 1GB)
    • Armbian 22.11.4 Bullseye
    • Linux 5.15.89-rockchip64
  • mirakc/mirakc:main-alpine
  • PLEX PX-Q3U4

Docker Engine:

  • 23.0.0

How to collect performance metrics

Create docker/prometheus/.env:

# Replace with the IP address of your target machine.
TARGET_IPADDR=192.168.1.23

cat <<EOF >docker/prometheus/.env
TARGET_IPADDR=$TARGET_IPADDR
TZ=Asia/Tokyo
EOF

Launch a Prometheus server on the local PC:

docker compose -f docker/prometheus/docker-compose.yml up -d

Setup a remote environment for performance measurements:

# Replace with the IP address of your Mirakurun-compatible upstream server.
UPSTREAM=192.168.2.34

sh remote.sh -r $TARGET_IPADDR setup $UPSTREAM

Perform measurement for each container:

# mirakc-alpine
sh remote.sh -r $TARGET_IPADDR up mirakc-alpine
# Wait several minutes for the target server to go steady, then:
sh measure.sh http://target:40772 10m >/dev/null
sh remote.sh -r $TARGET_IPADDR down

# mirakc-debian
sh remote.sh -r $TARGET_IPADDR up mirakc-debian
sh measure.sh http://target:40773 10m >/dev/null
sh remote.sh -r $TARGET_IPADDR down

# mirakurun
sh remote.sh -r $TARGET_IPADDR up mirakurun
sh measure.sh http://target:40774 10m >/dev/null
sh remote.sh -r $TARGET_IPADDR down

The command above performs:

  • Receiving TS streams from 4 GR and 4 BS services for 10 minutes
  • Collecting system metrics by using Prometheus and node_exporter
  • Counting the number of dropped TS packets by using node-aribts

Several hundreds or thousands of dropped packets were sometimes detected during the performance measurement. The same situation also occurred in Mirakurun.