Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Info

Reference only(All changes merged to rdk-next and available in all releases)

Introduction

                     Tiny RDKB is an effort focused on reducing the RFS of mainline RDKB. While there are many different ways are being explored and worked upon for reducing the overall image size, this particular document is aiming at capturing the Tiny RDKB effort .

Major Highlights to be taken in RDKB RPI :  Removed the Unused Modules ,XML files ,scripts, systemd files ,configuration files,libraries and binaries/executables from the RDKB RPI  RFS. This should be applicable for both Morty and Dunfell builds.

Design

             Below are the Overall steps to be taken for Tiny RDKB effort in RPI,

1.Remove sound kernel modules
2.Removal of unused file COSAXcalibur.XML
3.Replace some executables with busybox
4.Replace NTPD package with Busybox configuration
5.Removed UnUsed packages from ccsp packagegroup in RPI platfrom
6.Removed UnUsed packages from OSS packagegroup in RDKB RPI platfrom
7.Removed UnUsed and Duplicate files from RFS in RDKB RPI platfrom
8.Removed unused driver kernel modules of ath,mediatek,realtek in linux-raspberrypi
9.Removed NLS modules from linux-raspberrypi
10.Removed unused driver modules of rtc,usb,input in linux-raspberrypi
11.Removed Unused kernel driver modules of NF,Xtables,PPS,BT from linux-raspberrypi
12.Removed Unused kernel modules of HID and USB from linux-raspberrypi
13.Removed Unused kernel modules of DRM,USB_SERIAL,SPEECH,CAN,W1,YAM from linux-raspberrypi
14.Added PHP->JST Migration
15.Removed Unused packages from util-linux
16.Added nodejs package as DISTRO Features for Morty Builds
17.Removed Unused files from RFS
18.Converted Parental control features kernel modules to in-built modules for reducing the kernel size in RFS.

Comparison of Image Size


S.NOYocto Version Builds      Before Tiny RDKB Image Size          After Tiny RDKB Image Size                        Difference 
  1      Morty               380MB                 224 MB                        156MB
  2     Dunfell 80MB(After extract the tar 448MB) 59MB(After extract the tar 306MB)                         21MB(142MB)

RDKB RPI Memory Comparison

              Below are the ways to compare the memories in before and after the Tiny RDKB effort in RPI,

      • RAM usage
      • CPU Utilization
      • Rootfs size on Storage Disk

Initial Boot-up

             This below analysis are immediately taken while the fresh image is boot-up,

RAM Usage On Initial Boot-up

                         

Gliffy Diagram
macroId2bd68b86-a7d2-4476-a494-2f26cd14f30a
displayNameRAM Usage on Initial Boot-up
nameRAM Usage on Initial Boot-up
pagePin3

CPU Utilization On Initial Boot-up

Gliffy Diagram
macroId60c15741-1ae7-4dce-8e85-f66ad98685b4
displayNameCPU utilization on Initial boot-up
nameCPU utilization on Initial boot-up
pagePin2

Rootfs Size on Storage Disk On Initial Boot-up

Gliffy Diagram
macroId1b2d9ead-4b7e-4fa9-b2f7-77429c6406a0
displayNameRFS on Initial boot-up
nameRFS on Initial boot-up
pagePin2


After one hour from Image Boot-up

                   The below analysis are taken one hour after form the fresh image boot-up,

RAM Usage On After One Hour

Gliffy Diagram
macroId73d66c39-7a40-444e-92b2-1b5004d2643b
displayNameRAM Usage on After one hour
nameRAM Usage on After one hour
pagePin3

CPU Utilization On After One hour

Gliffy Diagram
macroIdfd964425-06a7-4f97-b836-590ed24b61c9
displayNameCPU utilization on after 1hour
nameCPU utilization on after 1hour
pagePin2

Rootfs Size on Storage Disk On After One hour

Image Added


Linux Commands for Memory Usage

Below linux commands are used to find the memory usage of RAM, CPU Utilization and Rootfs Size.


 S.NO                               Memory Usages                    Linux Commands
              1                             RAM Usage                         free -m
              2                             CPU Utilization                         iostat / top
               3                             Rootfs Size                         df -h


Initial Boot-up - Sample Output from fresh image 

        

Deck of Cards
startHiddenfalse
languagebash
themeDJango
idRAM Usage
titleRAM Usage - free -m
linenumberstrue


Card
idRAM Usage
labelBefore Tiny RDKB


Code Block
languagebash
themeDJango
titleRAM Usage
root@RaspberryPi-Gateway:~# free -m
              total        used        free      shared  buff/cache   available
Mem:            924          63         827          4          39         842
Swap:             0           0           0



Card
idRAM Usage
labelAfter Tiny RDKB


Code Block
languagebash
themeDJango
titleRAM Usage
root@RaspberryPi-Gateway:~# free -m
              total        used        free      shared  buff/cache   available
Mem:            603          60          503          4          36         518
Swap:             0           0           0






Deck of Cards
startHiddenfalse
idcpu utilization
loopCardstrue


Card
defaulttrue
labelBefore Tiny RDKB
titleCPU utilization


Code Block
languagebash
themeDJango
titleCPU Utilization
root@RaspberryPi-Gateway:~# iostat 
Linux 5.4.72-v7 (RaspberryPi-Gateway) 	12/09/20 	_armv7l_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          19.17    0.02   26.86    0.41    2.50   53.46

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
mmcblk0          14.02       508.65        43.97      95683       8271
mmcblk0p1         0.38         3.88         0.01        729          1
mmcblk0p2        13.39       493.68        43.96      92866       8270

root@RaspberryPi-Gateway:~# 



Card
defaulttrue
labelAfter Tiny RDKB
titlecpu utilization


Code Block
languagebash
themeDJango
titleCPU Utilization
root@RaspberryPi-Gateway:~# iostat 
Linux 5.4.72-v7 (RaspberryPi-Gateway) 	03/29/21 	_armv7l_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          17.72    0.02   24.32    1.94    0.00   53.98

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
mmcblk0          20.85       723.65        73.56      79435       8075
mmcblk0p1         0.58         6.66         0.01        731          1
mmcblk0p2        19.83       697.97        73.55      76616       8074




Deck of Cards
idROOTFS


Card
labelAfter Tiny RDKB
titleRootfs Size


Code Block
languagebash
themeDJango
titleRootfs Size On Storage Disk
root@RaspberryPi-Gateway:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               241.6M    139.5M     85.6M  62% /
devtmpfs                173.0M         0    173.0M   0% /dev
tmpfs                   301.5M      4.0K    301.5M   0% /dev/shm
tmpfs                   301.5M     21.4M    280.1M   7% /run
tmpfs                   301.5M         0    301.5M   0% /sys/fs/cgroup
tmpfs                   301.5M      2.5M    299.1M   1% /tmp
tmpfs                   301.5M    328.0K    301.2M   0% /var/volatile
/dev/mmcblk0p1           50.8M     29.2M     21.6M  58% /boot
tmpfs                    60.3M         0     60.3M   0% /run/user/0
root@RaspberryPi-Gateway:~# 



Card
idRootfs Size
labelBefore Tiny RDKB


Code Block
languagebash
themeDJango
titleRootfs Size On Storage Disk
root@RaspberryPi-Gateway:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               375.7M    217.2M    135.1M  62% /
devtmpfs                333.7M         0    333.7M   0% /dev
tmpfs                   462.2M      4.0K    462.2M   0% /dev/shm
tmpfs                   462.2M     25.5M    436.7M   6% /run
tmpfs                   462.2M         0    462.2M   0% /sys/fs/cgroup
tmpfs                   462.2M      2.9M    459.3M   1% /tmp
tmpfs                   462.2M    512.0K    461.7M   0% /var/volatile
/dev/mmcblk0p1           48.5M     27.4M     21.0M  57% /boot
root@RaspberryPi-Gateway:~# 



One Hour after from Image Boot-up - Sample Output


Deck of Cards
idFrame


Card
defaulttrue
labelBefore Tiny RDKB


Code Block
languagebash
themeDJango
titleRAM Usage
root@RaspberryPi-Gateway:~# free -m
              total        used        free      shared  buff/cache   available
Mem:            924         133         712          24          78         750
Swap:             0           0           0
root@RaspberryPi-Gateway:~#



Card
defaulttrue
labelAfter Tiny RDKB


Code Block
languagebash
themeDJango
titleRAM Usage
root@RaspberryPi-Gateway:~# free -m
              total        used        free      shared  buff/cache   available
Mem:            603         116         337          99         149         371
Swap:             0           0           0




Deck of Cards
idFrame


Card
defaulttrue
labelBefore Tiny RDKB


Code Block
languagebash
themeDJango
titleCPU Utilization
root@RaspberryPi-Gateway:~# iostat 
Linux 5.4.72-v7 (RaspberryPi-Gateway) 	03/29/21 	_armv7l_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.63    0.01   24.77    0.09    0.00   71.50

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
mmcblk0           3.44        91.07        15.14      96231      15997
mmcblk0p1         0.07         0.69         0.00        729          1
mmcblk0p2         3.33        88.41        15.14      93414      15996



Card
defaulttrue
labelAfter Tiny RDKB


Code Block
languagebash
themeDJango
titleCPU Utilization
root@RaspberryPi-Gateway:~# iostat
Linux 5.4.72-v7 (RaspberryPi-Gateway) 	03/29/21 	_armv7l_	(4 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.02    0.01   21.68    0.03    0.00   74.26
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
mmcblk0           1.33         8.31        10.54      81599     103441
mmcblk0p1         0.01         0.07         0.00        731          1
mmcblk0p2         1.32         8.03        10.54      78780     103440




Deck of Cards
idFrame


Card
defaulttrue
labelBefore Tiny RDKB


Code Block
languagebash
themeDJango
titleRootfs Size on Storage Disk
root@RaspberryPi-Gateway:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               375.7M    216.1M    136.1M  61% /
devtmpfs                333.7M         0    333.7M   0% /dev
tmpfs                   462.2M      4.0K    462.2M   0% /dev/shm
tmpfs                   462.2M      9.5M    452.7M   2% /run
tmpfs                   462.2M         0    462.2M   0% /sys/fs/cgroup
tmpfs                   462.2M      2.8M    459.4M   1% /tmp
tmpfs                   462.2M    280.0K    461.9M   0% /var/volatile
/dev/mmcblk0p1           48.5M     27.4M     21.0M  57% /boot



Card
defaulttrue
labelAfter Tiny RDKB


Code Block
languagebash
themeDJango
titleRootfs Size on Storage Disk
root@RaspberryPi-Gateway:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               241.6M    139.5M     85.6M  62% /
devtmpfs                173.0M         0    173.0M   0% /dev
tmpfs                   301.5M      4.0K    301.5M   0% /dev/shm
tmpfs                   301.5M     21.4M    280.1M   7% /run
tmpfs                   301.5M         0    301.5M   0% /sys/fs/cgroup
tmpfs                   301.5M      2.5M    299.1M   1% /tmp
tmpfs                   301.5M    328.0K    301.2M   0% /var/volatile
/dev/mmcblk0p1           50.8M     29.2M     21.6M  58% /boot
tmpfs                    60.3M         0     60.3M   0% /run/user/0




Limitation

               "rbus" and "runit" Integration also part of Tiny RDKB effort but still those changes are not available in stable2 branch.

we will  integrated in RPI  once those changes are successfully merged in stable2.

References

Jira

             

Jira
serverJIRA
serverId11deff04-0380-3a3d-a916-0849d4e573f7
keyREFPLTB-916

             https://code.rdkcentral.com/r/q/REFPLTB-916