目次: Android
半年くらい前(2017年9月30日の日記参照)にCMAを調べたときはわからなかった問題が一つ解決しました。
悩みはこの3つで、1つ目はほぼ解決(THPを使わない)していて、2つ目は未だに良くわからないままです。今回は3つ目の問題が解消しました。
前回の調査では/proc/meminfoを調べていて、CmaFreeの項目がなかったため、誰もCMAを使っていないのではないかと思っていました。
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には出てくるの??
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ではないことに注意です。
さて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管理外の領域を使っているんだろうなーと思います。
どうして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
ピクセラの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であってテレビは一切関係ないことも、頭ではわかっていますが、ついつい「テレビ」にリモコンを向けて操作してしまうのは、オールドタイプの悲しい性です……。
メディア再生機器としても優秀です。H.265/4K60pは余裕です。H.264/4K60pはデコード性能が足りず、スローになり音と同期がズレていきます。
あえて意地悪な動画を再生しましたが、H.264で4K60pは珍しい部類でしょう。もしお持ちの方はH.265に再エンコードした方が良いかもしれません。サイズも半分で済みますし。
まあ、我が家のテレビは4Kに対応していないので、4K動画の再生ができても映すテレビが無いんですけど…。
Chromecast built-inが搭載されていますが、スピナー(クルクルするアイコン)が出たまま固まってしまい、イマイチです。何度かやり直せば動くのですが、固まることも多いです。
最近、調子の悪い初代Google Chromecastを(2018年1月26日の日記参照)置き換えようと思っていたので、ちょっと残念ですね。
購入以来(2014年6月26日の日記参照)我が家で活躍している、第一世代Chromecastですが、最近YouTubeの動画再生でカクつきが目立つようになってきました。
特にひどいのは再生開始直後で、画はガクガクで、音も途切れブツブツなっています。ネットワークのせいかもしれませんが、スマホで見ると別に問題ないですし、デコード性能不足もありそうです。
第二世代4K対応のChromecast Ultraが出て久しいですし、むしろ5,000円程度の機器が4年以上も頑張れることに、逆に驚きを感じます。
< | 2018 | > | ||||
<< | < | 01 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | - | - | - |
合計:
本日: