Raspberry Pi 4 2GBモデルのサポート改善へ
2022年4月にリリース予定の「Ubuntu Desktop 22.04 LTS」では、「Raspberry Pi 4 2GBモデル」のサポートが改善されます。Ubuntu Desktop for Raspberry Pi
「Ubuntu」は「Raspberry Pi」向けに「Ubuntu Desktop」をリリースしています。例えば現在最新版の「Raspberry Pi」向け「Ubuntu 21.10」は、以下で入手可能です。
4GB以上のメモリーを推奨している
現在「Raspberry Pi」向け「Ubuntu Desktop」では、パフォーマンスを確保するため4GB以上のメモリーを搭載した「Raspberry Pi」を推奨しています。Raspberry Pi 4 2GBモデルのサポート改善
4GBよりも少ない「Raspberry Pi」でも「Ubuntu Desktop」を利用できるようにするため、「Ubuntu Desktop 22.04 LTS」で「Raspberry Pi 4 2GBモデル」のサポート改善に向けた取り組みが行われています。Zswap
「Zswap」はスワップ対象のデータを圧縮し、実スワップ動作を制御する仕組みです。言い換えればスワップによるストレージへのアクセス頻度を低減する仕組みです。
現在のスワップシステム
現在のスワップシステムはスワップファイルが採用されており、スワップ領域に使用されるファイルがストレージ上に確保されています。スワップは現在搭載されている物理メモリーの容量を仮想的に拡大する仕組みであり、実メモリー容量以上のメモリーを利用できるようにします。
また特定のアプリケーションで積極的に物理メモリー領域を確保するために活用されることもあります。
スワップは遅い
スワップ領域はストレージ上に確保されています。そのためスワップのアクセス速度は物理メモリーのアクセス速度よりも遅く、スワップにアクセスする機会が多いほどシステムのパフォーマンスは低下します。
スワップに関する具体的な内容は、以下を参照してください。
Zswapによる実スワップ動作の制御
システムは物理メモリーの空き容量が少なくなってくると、データをスワップファイルに移し始めます。この時「Zswap」はスワップファイルにデータを移す前に、そのデータを圧縮して容量を小さくします。
そして現在のメモリー状況からスワップファイルにデータを移す必要があるかどうかを判断し、必要がないならそのまま「Zswap」が管理している物理メモリー上の領域にそのデータを配置します。
こにれより実スワップ動作を制御し、スワップによるストレージへのアクセスを回避できます。
また圧縮されたスワップデータを物理メモリー上に戻す時は、圧縮データを展開し利用可能な物理メモリー上に戻します。
そのため圧縮と展開という追加コストが必要になりますが、それでもストレージ上に確保されたスワップファイルにアクセスするよりも高速にスワップ動作を実現することができます。
Zswapはデフォルトで利用可能
「Zswap」はデフォルトで利用可能になっています。Zswapを有効にするには
以下のコマンドを実行すれば、「Zswap」を有効にできます。
sudo sed -i -e 's/$/ zswap.enabled=1/' /boot/firmware/cmdline.txt
このコマンドは「/boot/firmware/cmdline.txt」ファイルを開いて「zswap.enabled」設定の値を「1」に設定する処理です。
ですので手作業で行うことも可能です。
後は「reboot」コマンド等でデバイスを再起動すれば、「Zswap」が有効になります。
「Zswap」による検証や詳細は、以下を参照してください。
Zswapだけでは不十分
しかし「Zswap」だけではサポートの改善は不十分です。Ubuntu Desktopを利用できるようにするため
「Raspberry Pi 4 2GBモデル」上で「Ubuntu Desktop」のサポートを改善するため、「Ubuntu Desktop 22.04 LTS」でさらなる改善が計画されています。z3foldの採用
圧縮するオブジェクト数拡大のため、「z3fold」アロケーターの採用が検討されています。lz4の採用
より好ましいデータの圧縮率と展開速度のバランスを提供するため、「lz4」圧縮アルゴリズムの採用が検討されています。すでに試してみることも可能
以下のコマンドを実行することで、上記の仕組みを試してみることも可能です。sudo -i
echo lz4 >> /etc/initramfs-tools/modules
echo z3fold >> /etc/initramfs-tools/modules
update-initramfs -u
exit
sudo sed -i -e 's/$/ zswap.compressor=lz4/' /boot/firmware/cmdline.txt
sudo sed -i -e 's/$/ zswap.zpool=z3fold/' /boot/firmware/cmdline.txt
echo lz4 >> /etc/initramfs-tools/modules
echo z3fold >> /etc/initramfs-tools/modules
update-initramfs -u
exit
sudo sed -i -e 's/$/ zswap.compressor=lz4/' /boot/firmware/cmdline.txt
sudo sed -i -e 's/$/ zswap.zpool=z3fold/' /boot/firmware/cmdline.txt
後は「reboot」コマンド等でデバイスを再起動すれば、これらの設定が有効になります。
現在の設定を確認するには
現在の設定は、以下のコマンドを実行すれば確認できます。grep -R . /sys/module/zswap/parameters
上記の設定が正しく行われていれば、以下のような出力が得られます。
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lz4
/sys/module/zswap/parameters/zpool:z3fold
/sys/module/zswap/parameters/accept_threshold_percent:90
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lz4
/sys/module/zswap/parameters/zpool:z3fold
/sys/module/zswap/parameters/accept_threshold_percent:90
Ubuntu Desktop 22.04 LTSではデフォルトで有効になる
今回の取り組みで得られた改善内容やその成果は、「Ubuntu Desktop 22.04 LTS」でデフォルトで有効化されます。つまりユーザーは「Ubuntu Desktop 22.04 LTS」をインストールするだけで、これらの利点を得られます。