tokita.shinichi
2023年4月27日 18時25分
お世話になります。
Armadillo Base OSにおいてfreeコマンドを使用した際に、認識されるメモリサイズが2GBよりも少ないですがなぜでしょうか。
以下にfreeコマンドの結果を記載します。
armadillo:~# free total used free shared buff/cache available Mem: 1703768 352616 1303724 956 47428 1293180 Swap: 1048572 0 1048572
また、/proc/iomemを確認すると、DRAM領域においてはOP-TEEで使用される領域以外はマップされているように見えるため、上記の認識されているメモリサイズとは矛盾が生じると思うのですがどうでしょうか。
40000000-55ffffff : System RAM 40600000-41d7ffff : Kernel code 41d80000-41ffffff : reserved 42000000-4220ffff : Kernel data 52bbf000-52bd2fff : reserved 58000000-923fffff : System RAM 62000000-91ffffff : reserved 92400000-a43fffff : reserved a4400000-bfffffff : System RAM bd8f4000-bdbf4fff : reserved bdbf5000-bdc4cfff : reserved bdc4f000-bdc4ffff : reserved bdc50000-be1d0fff : reserved be250000-bfc50fff : reserved bfc51000-bfffffff : reserved
以上、宜しくお願い申し上げます。
コメント
tokita.shinichi
at_dominique.m…
2023年4月28日 11時19分
tokita.shinichiさん
お世話になっています、
アットマークテクノのマルティネです。
> Armadillo Base OSにおいてfreeコマンドを使用した際に、認識されるメモリサイズが2GBよりも少ないですがなぜでしょうか。
そうですね、0x40000000 ~ 0xbfffffff まででみたら 2GB のメモリありますが、お気遣いのとおりに色々 reserved されています。
具体的に(3桁を省略します):
56000-57fff: OPTEE (32MB)
92400-a43ff: 確認したところ、arch/arm64/boot/dts/freescale/imx8mp.dtsi の dsp_reserved から isp0_reserved までの 300MB です。
最後のisp0_reserved の上に「used only by tuning tool, can be removed for normal case」のコメントがあって、isp0 が無効のままなので予約されてないと考えていましたが、どうやら間違っていました…
5月のリリースで修正しますが、以下のパッチで 256MB を取り戻せます:
その確認:
大変申し訳ございません、連絡助かりました!
残りの dsp の領域(32MB)も実際に使われているかどうかを確認して、取り戻せそうでしたら取り戻します。
最後に大きい領域のは「 62000000-91ffffff : reserved」で 768MB がありますが、linux,cma の VPU で使える領域で「reusable」になっていて、reserved されても普通のメモリとして使えます。
他の小さい reserved 領域を一つ一つ確認するに少し時間かかりますが、これから確認致します。カーネルの領域を引いたら後は 40MB ぐらいの予約領域はどこかにありますね。(1924+TEE(32)+dsp(上記の残り32MB)+kernel(~20)= 2008MB)
よろしくお願いします。