コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2018年1月28日 >>> 2018年1月15日
link もっと後

2018年1月28日

LinuxのCMAとTHPその3

目次: Android

半年くらい前(2017年9月30日の日記参照)にCMAを調べたときはわからなかった問題が一つ解決しました。

  • THPがCMAを使い切っちゃう問題
  • ユーザプロセスがCMA全然使わない問題
  • 誰が使ってるのこれ?問題

悩みはこの3つで、1つ目はほぼ解決(THPを使わない)していて、2つ目は未だに良くわからないままです。今回は3つ目の問題が解消しました。

実はみんな使ってたCMA

前回の調査では/proc/meminfoを調べていて、CmaFreeの項目がなかったため、誰もCMAを使っていないのではないかと思っていました。

ZenFone 3 Deluxeの /proc/meminfo
MemTotal:        3687912 kB
MemFree:          380032 kB
MemAvailable:    1527068 kB
Buffers:           51344 kB
Cached:          1137352 kB
SwapCached:         5848 kB
Active:          1483616 kB
Inactive:         784324 kB
Active(anon):     897704 kB
Inactive(anon):   203852 kB
Active(file):     585912 kB
Inactive(file):   580472 kB
Unevictable:        3632 kB
Mlocked:            3632 kB
SwapTotal:        524284 kB
SwapFree:          70164 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:       1080040 kB
Mapped:           587568 kB
Shmem:             22300 kB
Slab:             210492 kB
SReclaimable:      79676 kB
SUnreclaim:       130816 kB
KernelStack:       39184 kB
PageTables:        43764 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2368240 kB
Committed_AS:   71185752 kB
VmallocTotal:   258998208 kB
VmallocUsed:      157168 kB
VmallocChunk:   258691972 kB
★★CmaTotalやCmaFreeが無いのに…★★

ふと/proc/pagetypeinfoを見たところCMAの項目が出ました。meminfoには出ないのにpagetypeinfoには出てくるの??

ZenFone 3 Deluxeの /proc/pagetypeinfo
Page block order: 10
Pages per block:  1024

Free pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10
Node    0, zone      DMA, type    Unmovable  53146  18233    851      1      0      0      0      0      0      0      0
Node    0, zone      DMA, type  Reclaimable   1938    120      9      3      0      0      0      0      0      0      0
Node    0, zone      DMA, type      Movable    195     17     12      3      0      0      0      0      0      0      0
Node    0, zone      DMA, type          CMA      0      0      0      0      0      0      0      0      0      0      0
Node    0, zone      DMA, type      Reserve      0      1     16      0      0      0      0      0      0      0      0
Node    0, zone      DMA, type      Isolate      0      0      0      0      0      0      0      0      0      0      0

Number of blocks type     Unmovable  Reclaimable      Movable          CMA      Reserve      Isolate
Node 0, zone      DMA          539           35          298           51            2            0
★★MIGRATE_CMAがカウントされている★★

他の機種を見てもmeminfoにはCMAの項目はなくpagetypeinfoにCMAの項目が出ていました。なぜmeminfoに表示されないのかわかりませんが、理由は後で考えるとして、一番下に出てくるNumber of blocksが知りたかった情報です。

行がZoneを表します。ZenFoneはZone DMAしかありません。機種によってはZone DMAとZone Normalの2本立てになっていることもあります。

列がMIGRATE_TYPEです。数値の単位はページでは無くブロックです。ブロックはpagetypeinfoの先頭に「Pages per block: 1024」とある通り、1ブロック=1024ページです。ARMは1ページ4KBなので1ブロックは4MBになります。1ブロックのページ数はカーネルコンフィグによって変わりますので、どの機種でも常に4MBではないことに注意です。

CMAの利用量

さてZenFone 3 Deluxe ZS550KLというかQualcomm Snapdragon 625のシステム構成という方が近いかもしれませんが…、Linuxが管理している全体のブロック数は925ブロック(3788800KB)で、CMAは51ブロック(208896KB)のようです。

物理的に搭載されているRAMが4GBらしいのでLinuxの管理外となっている領域は、4194304 - 3788800 = 405504KBだと思われます。かなり大きいです。もしかするとデコード/エンコード用の領域はこちらから取っているのかもしれません。

またmeminfoによればMemTotalが3687912KBですので、Linux管理内だけど使うことができないReserved領域は、3788800 - 3687912 = 100888KBだと思われます。内訳はわかりませんが、多くも少なくもないと思います。たぶん。

1. 物理搭載メモリ 4194304KB
2. Linux管理内 3788800KB
3. Linux管理外(1. - 2.) 405504KB
4. MemTotal 3687912KB
5. Reserved領域(2. - 4.) 100888KB

私の推測としてはCMA領域(204MB)では4K動画をデコード/エンコードするには足りなさそうなので、Linux管理外の領域を使っているんだろうなーと思います。

meminfoとCMAの謎

どうしてpagetypeinfoにはCMAの項目があって、meminfoにはCMAの項目がないのか?カーネルのコードを見る限りCONFIG_CMAが有効になっていたら必ずmeminfoに項目が出るはずなのに、出てこない理由が良くわかりません。

手持ちのAndroid機器を見ていたら、カーネルバージョンがやたら古いことに気づきました。Android機器ってほとんどLinux 3.18とか3.10とか…、とかく3.x系のバージョンが多くないですか?

ああ、これまさか、古いバージョンのカーネルだとmeminfoにCMAの項目が出ないのか??と思って、3.x系のカーネルのコードを見ると、meminfoにCMAが表示されるようになったのが3.19以降であることがわかりました。

道理でmeminfoにCMAの項目が出ない訳ですよ。こんな単純なことに気づかなかったとは……orz

編集者:すずき(2023/09/24 08:50)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2018年1月27日

Android TV

ピクセラの4K対応Android TV KSTB5043(メーカーのサイト)を買いました。Amazonで13,000円くらいです。

この製品はAmlogic S905というSoCを採用しているようです。CPUはCortex A53 x 4、メモリは2GBです。AmlogicのSoCはSTB(セットトップボックス)に良く採用されていますね。

Androidのバージョンは7.0(買った時点では)でした。STBはAndroid 6系の製品も多い中、7なんですね。まあ、7だと何が嬉しい?と言われると、特に思いつかないですけど…。

使ってみた

とても素直なAndroid TVという感触です。メニューは恐らく何も改造されていません。Androidのメーカー独自改造って何がどこにあるのかわからなくてあまり好きでは無いので、この点は好感触です。

GoogleストアやPlay(動画サービス)も、動きがスムーズです。ストアだけちょっとスクロールが引っかかりますが、特に支障はありません。

リモコンがBluetooth接続のため、赤外線のリモコンと異なり、本体に向けなくても操作可能です。お行儀は悪いですが布団を肩まで掛けて、手を布団の中に入れたまま、リモコンで操作できます。良い感じ。

リモコンを特定の方向に向ける必要が無いことも、操作すべきはテレビの下にあるSTBであってテレビは一切関係ないことも、頭ではわかっていますが、ついつい「テレビ」にリモコンを向けて操作してしまうのは、オールドタイプの悲しい性です……。

4K対応の実力

メディア再生機器としても優秀です。H.265/4K60pは余裕です。H.264/4K60pはデコード性能が足りず、スローになり音と同期がズレていきます。

あえて意地悪な動画を再生しましたが、H.264で4K60pは珍しい部類でしょう。もしお持ちの方はH.265に再エンコードした方が良いかもしれません。サイズも半分で済みますし。

まあ、我が家のテレビは4Kに対応していないので、4K動画の再生ができても映すテレビが無いんですけど…。

困った点

Chromecast built-inが搭載されていますが、スピナー(クルクルするアイコン)が出たまま固まってしまい、イマイチです。何度かやり直せば動くのですが、固まることも多いです。

最近、調子の悪い初代Google Chromecastを(2018年1月26日の日記参照)置き換えようと思っていたので、ちょっと残念ですね。

編集者:すずき(2018/02/04 03:15)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2018年1月26日

不調のChromecast

購入以来(2014年6月26日の日記参照)我が家で活躍している、第一世代Chromecastですが、最近YouTubeの動画再生でカクつきが目立つようになってきました。

特にひどいのは再生開始直後で、画はガクガクで、音も途切れブツブツなっています。ネットワークのせいかもしれませんが、スマホで見ると別に問題ないですし、デコード性能不足もありそうです。

第二世代4K対応のChromecast Ultraが出て久しいですし、むしろ5,000円程度の機器が4年以上も頑張れることに、逆に驚きを感じます。

編集者:すずき(2018/02/04 02:58)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2018年1月28日 >>> 2018年1月15日
link もっと後

管理用メニュー

link 記事を新規作成

<2018>
<<<01>>>
-123456
78910111213
14151617181920
21222324252627
28293031---

最近のコメント5件

  • link 21年3月13日
    すずきさん (03/05 15:13)
    「あー、このプログラムがまずいんですね。ご...」
  • link 21年3月13日
    emkさん (03/05 12:44)
    「キャストでvolatileを外してアクセ...」
  • link 24年1月24日
    すずきさん (02/19 18:37)
    「簡単にできる方法はPowerShellの...」
  • link 24年1月24日
    KKKさん (02/19 02:30)
    「追伸です。\nネットで調べたらマイクロソ...」
  • link 24年1月24日
    KKKさん (02/19 02:25)
    「私もエラーで困ってます\n手動での回復パ...」

最近の記事3件

  • link 23年4月10日
    すずき (03/19 11:48)
    「[Linux - まとめリンク] 目次: Linuxカーネル、ドライバ関連。Linuxのstruct pageって何?Linu...」
  • link 24年3月18日
    すずき (03/19 11:47)
    「[画面のブランクを無効にする] 目次: LinuxROCK 3 model CのDebian bullseyeイメージは10分...」
  • link 24年3月3日
    すずき (03/19 11:07)
    「[解像度の設定を保存する] 目次: LinuxRaspberry Pi 3 Model B (以降RasPi 3B)のHDMI...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 03/19 11:48