link もっと前
   2018年 1月 28日 -
      2018年 1月 19日  
link もっと後

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

日々

link permalink

Linux の CMA と THP その 3

その 1その 2その 3その 4

半年くらい前(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

[編集者: すずき]
[更新: 2018年 4月 11日 01:23]
link 編集する

コメント一覧

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



link permalink

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年 2月 4日 03:15]
link 編集する

コメント一覧

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



link permalink

不調の Chromecast

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

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

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

[編集者: すずき]
[更新: 2018年 2月 4日 02:58]
link 編集する

コメント一覧

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



link もっと前
   2018年 1月 28日 -
      2018年 1月 19日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 12/10 12:33

カレンダー

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

最近のコメント 5件

  • link 18年11月28日
    すずき 「Linux に contribute す...」
    (更新:12/10 12:33)
  • link 18年11月28日
    T4 「やっぱり貴方でしたか、ご苦労さまでした。...」
    (更新:12/05 09:20)
  • link 18年11月28日
    すずき 「RK3228 じゃなくて RK3288 ...」
    (更新:12/05 02:19)
  • link 18年11月28日
    すずき 「ありがとうございます。Linux のコミ...」
    (更新:12/05 02:04)
  • link 18年12月01日
    すずき 「私も最初、HDD, SSD は使いまわそ...」
    (更新:12/04 12:49)

最近の記事 3件

link もっとみる
  • link 18年11月29日
    すずき 「[ROCK64 のアナログオーディオが動いた] 先日(2018年 ...」
    (更新:12/03 10:21)
  • link 18年12月01日
    すずき 「[PC パワーアップ計画] 普段、家の PC のパワー不足を感じる...」
    (更新:12/02 18:32)
  • link 18年11月28日
    すずき 「[ROCK64 の I2S1 が動いた] 先日(2018年 11月...」
    (更新:12/02 16:34)

こんてんつ

open/close wiki
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 過去日記について

その他の情報

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