目次: Android
Twitterでボヤきまくっていたけど、流れて消えちゃうのでメモ。Linuxのメモリ管理がさっぱりわかりません。CMA(Contiguous Memory Allocator)とTHP(Transparent Huge Pages)の動きが謎過ぎます。
CMAとは、ある領域を特別な領域として定めて、普段はユーザプロセス用のメモリとして使い、ドライバが要求するなどここぞというときにユーザプロセス用のメモリを強制立ち退き(Page Migration)させてDMA用のメモリとして使う技術です。
私が思いつく利点としては、
THPは仮想連続の4KBのページを512枚集めてきて、2MB(ARMの場合)のHuge Pageに置き換えてしまう技術。のはずです。あまり調べてないので、違ってたらゴメンなさい。
私が思いつく利点としては、
これらの技術のコンセプトは素晴らしいので、ぜひ使いたいと思って使っていますが、動きが謎過ぎて困っています。困っている問題は3つ。
THPはkhugepagedというカーネルスレッドが裏でひっそりと活動してページを置き換えます。こいつが使うメモリページはPageCompoundという属性になっていて、なぜかPage Migrationできません。なぜなのか理由はわかりません。
それでいてTHPはCMA領域をガンガン消費します。なぜかはあまり調べていませんが、おそらく、
辺りがCMAから大きいサイズの領域を取りやすい理由だと思います。
しばらく放っておくとCMA領域がTHPで埋まってしまうため、ドライバのdma_alloc() がENOMEMとかで失敗するようになって、ドライバが動かなくなってしまいます。
解決方法を知りたくて、頑張ってBuddy Allocatorまでコード読んでみましたが、khugepagedも結局alloc_pages() でHuge Pageを取っているだけでした。つまり他の用途のメモリの取り方と何ら変わりません。当然ながらCMA領域を避けて取るとか、そんな機構があるようには見えなかったので、この問題を回避する方法はわからないままです。
THPはGFP(Get Free Pages)フラグが少し特殊ですので、Buddy Allocatorでフラグを見てTHPをCMA領域に割り当てないように改造することは出来ましたが、本当にこんな改造が要るんでしょうか?
私が見た範囲では、フラグをチェックしてメモリの割り当て処理を変えている個所は見当たりませんでしたから、何か別の方法が隠れているかもしれません。
誰も困っていないのでしょうか。それとも私の設定がマズいだけでしょうか?
Buddy Allocatorの詳細な仕組みはここでは説明しきれませんが、メモリはゾーンという大きな括りで分けられており、各ゾーンには5つのリストがあります。アロケータはこの5つのリストのどれかからページを割り当てます。/proc/pagetypeinfoで各リストの残量を見ることができます。
カーネルにメモリページの取得リクエストが来ると、基本的には上4つのリストのどれかからページが取得されます。どのリストになるのかはGFP(Get Free Pages)フラグに何を指定したか?によって決まります。ユーザプロセス用のメモリであればMIGRATE_MOVABLEから取られます。
ではMIGRATE_CMAはいつ使われるのか?というと、これが良くわからないんです。
実機でメモリを使いまくるプロセスを立ち上げ(yes | sortとか)/proc/meminfoの様子を見ていると、
こんな動きになります。3番目のページキャッシュ減少が起きると、システムが遅すぎて使い物になりませんので、もっと早めにCMA領域を利用していただきたいのですが、なぜかそうなりません。
Buddy Allocatorのコードを見るとMIGRATE_MOVABLEが枯渇というか、ページ割り当てに失敗したときに初めてMIGRATE_CMAからのページ割り当てに挑戦するようになっているように見えます。
個人的にはMIGRATE_CMA → MIGRATE_MOVABLEの順に割り当てた方が良かったのではないか?と思いました。ドライバがCMA領域を使う時はPage Migrationがあるわけですから。
MIGRATE_MOVABLE → MIGRATE_CMAの順に割り当てMIGRATE_MOVABLEを先に使い果たしてしまうと、CMA領域からユーザプロセス用のページをMigrationしようにも移動させる先がありません。これではPage Migrationが役に立ちません。
どうもイマイチです。設定か何かが間違っているのでしょうか。
あまりに訳の分からない動きをしているので、CMAが正常に動いている例が見たかったのですが、手元のAndroidデバイスでCMAを使っているシステムが全くありませんでした。ショック。
CMAは組み込みのように制約の多いハードウェア、かつ、メモリ容量に制限のあるシステム向けの機能です。AndroidであればION Carveout Heapだとメモリ占有が多すぎて耐えられないボンクラハードウェアや、メモリの搭載量が非常に少ないシステム向けの最終兵器のはずです。
GoogleもAOSPで紹介している(Low RAM Configuration | Android Open Source Project のCarveouts, Ion and Contiguous Memory Allocation (CMA) の節)ほどなのになあ。
でも身の回りの製品では誰も使っていません。CMAって誰が使ってるんだろう??
目次: Android
昨日(2017年9月29日の日記参照)の続きです。各問題への所感です。
THPを諦める、すなわちCONFIG_TRANSPARENT_HUGEPAGEをLinuxのconfigで無効にしてしまえば回避できます。
私の場合THPは無くてもそんなに困らないですから、仮にTHPかCMAの排他的二択がLinuxの現状の仕様だったとしても構いません。
今のところ調整方法もへったくれも見つけられず、本当にどうしようもなくて困っています。
Buddy Allocatorを書き換えてMIGRATE_CMAから先にページ割り当てするように改造したところ、ユーザプロセスもドライバもそれなりにご機嫌に動いていますが、魔改造なことこの上ないでしょう。
このデバイスはCMA使ってる、とか、お前の確認方法は間違っているとか、何か知っている人が居たら愚かな私に教えてほしいです……。
Androidデバイスならadbで繋いで /proc/meminfo見たときにCmaFreeって項目があればCMAを使っているはずです。
もしくは古いカーネルだと /proc/buddyinfoにCMAという項目があるかもしれません。
スマホ(ASUS Zenfone 3 Deluxe ZS550KL)を家の床に落としたら、電源ボタンが凹んでしまって、押せなくなってしまった。困った。
スリープからの復帰は、背面の指紋認証があるから問題ないけれど、スリープへの移行が出来ない。
画面が粉々なら諦めて買い換えるけど、電源ボタン以外は全く問題ないので、買い換えるほどでもない…でも不便……。
メモ: 技術系の話はFacebookから転記しておくことにした。後日、写真を追加した。
目次: 車
軽の黄色がこれほど不人気とは…白地の五輪ナンバー人気: 朝日新聞デジタル を読んで。
「黄色が車の色と合わなくて嫌」ならわかるけど「軽だとすぐわかって格好悪いから嫌」って意味分かりません。なんで軽が格好悪いんでしょう?百歩譲って主張の通りだとしても、ナンバー白くして何か解決するのか?
コメントにて「トヨタをレクサスに張り替えるような、エンブレム張り替えと同じではないか?」という突っ込みをいただきました。
なるほど、高い車に乗っている気分を出したいんでしょうか?個人的には軽自動車とコンパクトカー(普通自動車)はあまり値段が変わらないから、見栄になっていないように思いましたが、乗っている本人の気持ち次第ですね……。
メモ: 技術系の話はFacebookから転記しておくことにした。後半の節は追記した。
目次: Kindle
第七世代Kindle Fire HD 10を買いました。
使って5分ですので、後日感想が変わるかもしれませんけど、
今のところ、普通のAndroidタブレットにKindleアプリ入れた方がよっぽどマシだと感じています。
ロック画面の全面広告は、
をOFFにすれば、出なくなりました。何の嫌がらせですかね、これ?
目次: Kindle
昨日(2017年10月12日の日記参照)の続きです。
第七世代Kindle Fire HD 10の画面は字形やフォントに一切こだわりがないらしく、すごく変テコです。フォントや字形がなぜか「言語設定」によって変わってしまいます。
英語に設定するとフォントは角ゴシックに統一されますが、一部の漢字が中国語の字形になります。
下記の写真で言えば、雑誌の「雑」の字が変な字形になっています。
日本語に設定すると下記の写真のようになり、字形は日本語ですが、丸ゴシックと角ゴシックの混合になります。
またフォントが選択される基準もよくわかりません。下記の写真だと「画」角ゴシック、「面」は丸ゴシックになります。第一水準とかそういう区分でもなさそうです。
どうやったらこんな変な画面にできる?逆に難しくない?とすら思う変な画面です。アプリも表示がおかしいし、どう見ても日本でデバッグしてないですよね、これ…。
アイスの記録が45種類(前回比 +10)になりました(リンク)。今回はロッテのアイスが結構増えました。
画質にこだわりはないので、スマホで撮っていますが、Wikiに載せる手間を軽減するため、最低限の写真(2枚)で全情報を表現できるものしか載せていません。そのため、
しか載せていませんが、それでも意外と種類が揃うものです。アイス業界の努力には感謝しかありません。
カップアイスのような立体的な容器だと2枚の写真で全面を撮るのは恐らく不可能なので、諦めて4枚とか8枚とか載せるしかないかなあ。
スペイン政府、カタルーニャ州の自治権を停止へ - BBCニュースを読んで。
これは悪手だったのでは…。追い詰めたらカタルーニャは独立宣言して完全対立するしかありません。
年間7000万人が訪れる世界2位の(3位のときもある)観光国家スペインですが、そのほぼ半分の3000万人近くをバルセロナが担っています。
カタルーニャからすると、スペイン中央政府がドル箱のバルセロナから金を巻き上げて、ロクに返してくれない!ように感じるみたいです。実際にはそう単純では無いでしょうけど…。
スコットランドも北海油田の権益をイングランドに巻き上げられていると感じているらしく、独立運動へと繋がりました。構図は似ているかもしれません。
スペインやイギリスの独立運動はざっくり言えば「独立した方が良い暮らしになる」という経済的な理由が大きいように見えます。
欧州&独立紛争で思い出されるのはユーゴスラビアですが、西欧とは事情が違うんですね。マケドニア、コソボのように独立後に最貧国となった国があり、少なくとも経済的な理由ではありません。
全部の紛争を調べたわけじゃないですが、原因は民族間の対立みたいです。私には民族対立の気持ちはイマイチわかりませんが…、生まれは変えられませんし(=原因が解決不可能)、対立する異民族を追い出すためにお互い殴り合うので、紛争の結果は悲惨です。
コソボ紛争では、コソボはNATOを仲間に付け2008年独立し100以上の国に独立国と認められた一方、対立するセルビアはNATO軍に首都を空爆される憂き目に会っています。
スペインはコソボの独立を認めていないようですね。カタルーニャが脳裏に浮かんだ?のかもしれません…。
Windows 10の大型アップデートFall Creators Updateをインストールしたところ、インターネットの共有サービス(Internet Connection Sharing)が暴走していて、常にCPU 1コアを占有しており、ノートPCが大変熱くなる上に、CPUファンが回り続けてやかましいです。
ついでにCompatTelRunner.exeも復活していてノートPCのHDDを痛めつけていた(2017年1月29日の日記参照)ので、タスクスケジューラから無効化しました。無効だって言ってるのに、アップデートの度に有効にするのやめてくれ…HDD壊れる。
Windows 10はネットワークの設定画面がかなり変わっていました。暴走しているネットワークの共有をどうやって止めるのかわかりません。
おそらく [スタートメニュー] - [Windowsの設定] - [ネットワークとインターネット] - [アダプターのオプションを変更する] から変更できるはずですが、選択しても悲しいメッセージが出るだけです。
仕方ないので [コントロールパネル] - [ネットワークと共有センター] - [アダプターの設定の変更] と辿って解除しました。
しかしExplorerがハングします。再び有効にしようとすると、こんなメッセージが出ます。ダメだこれ。もうWindows 10嫌だ……。
インターネット接続の共有を有効にしようとしても、無効にしようとしても、Explorerがハングします。なんで??
Explorerを何度か再起動していたところICSサービスの暴走が収まり、キタコレ直った!!と思いましたが、ぬか喜びでした。単に設定エラーが起きたために、ネットワークの共有が無効のままだっただけでした。有効にするとやっぱり暴走します。
VirtualBox用にインターネット接続の共有機能を使っていたので、暴走されると困ります。Fall Creators Updateをアンインストールすべきか…。
我が家では802.11ac対応Wi-Fiルータを使っているのですが、一部802.11n対応の機械が混在していて、イマイチ802.11acの恩恵を受けられていない気がします。
いつもなら壊れた機械しか入れ替えませんが、今回は奮発して全てのネットワーク機器を802.11acしかもMU-MIMO対応機器に入れ替えることにしました。
家のネットワークは下記のような感じです。
ノートPC <--(Wi-Fi)--> 親機 <-+-(Wi-Fi)--> 子機1 <--(ギガビットイーサ)--> ファイルサーバ `-(Wi-Fi)--> 子機2 <--(ギガビットイーサ)--> サブマシンなど
現在、使用中の機材は、
ですから、ネットワーク構成と通信手段は下記のようになります。
ノートPC <--(11ac)--> 親機 <-+-(11n)--> 子機1 <--(ギガビットイーサ)--> ファイルサーバ `-(11n)--> 子機2 <--(ギガビットイーサ)--> サブマシンなど
この構成から、
に置き換えます。AmazonでWG2200HPは13,000円くらい、WG1200HP2は10,000円くらいです。
写真に子機が2つ写っている理由は2部屋に設置するためです。親機4x4で、子機が2x2の製品を選んで性能差を付けている理由も同じで、親機 : 子機の台数比が1 : 2となるからです。
ノートPCのWiFiアダプタをどうするかだなあ…。
家のWi-Fiルータ、中継機を下記のように入れ替え、ノートPCからファイルサーバへのファイルコピーの速度を計測してみました。
ノートPC <--(11ac)--> 親機 <-+-(11ac 2x2 MU-MIMO)--> 子機1 <--(ギガビットイーサ)--> ファイルサーバ `-(11ac 2x2 MU-MIMO)--> 子機2 <--(ギガビットイーサ)--> サブマシンなど
今までは90〜100Mbpsだったのが150〜160Mbpsに改善しました。正直言うと802.11acはもっと速いと思っていたのですが…、1.5倍程度の改善していますから、贅沢は言わないことにします。
集合住宅ですので、単に5GHz帯が込み合っているだけの可能性もありますけども。次の機会にノートPCのWi-Fiドングルも更新して、再計測してみようと思います。
少し前にアニメ化されて盛り上がって(おそらく負の方向に…)いた「異世界はスマートフォンとともに」ですが、いわゆる異世界転生物かつ最強系という作品です。
異世界転生物は現代社会において事故で死亡、もしくは強制的に転送されるなどして、現代社会ではない世界、仮想世界などに転生するところから始まる作品です。
最強系は転生前は平凡だった主人公が、異世界に行くだけで突如強くなって、異世界で良い思いしたり、トントン拍子に上手く行く作品です。もう一つの特徴として、男性1人が主人公です。見た目ではなく価値観や行動基準が青年〜中年男性です。
私の購入履歴からざっと拾ってみたら20作品ほどありました。独断と偏見で分類しています。
注意としては、全て漫画版の話です。原作小説がある作品がほとんどですが、一切読んでいませんし、内容も知りません。
「無敵」と「最強」の違いはざっくりいうと、こんな感じで分類しています。
今のところ判別できそうなシーンが無い(1巻しか発売されていないなど)場合もありますが、周りと異様にかけ離れて強いかどうかでとりあえず分類しています。ただ、いずれの作品も連載中ですから、お話が進むにつれてこの分類とは違う展開になるかもしれません。
異世界&最強系の特徴として、主人公の価値観や行動基準が青年〜中年男性です。気持ち悪い言い方をすると、主人公が男でも女でも怪物でも必ず「心にオジサンがインストール」されています。先ほど挙げた20作品の中でこの点を外している作品は「私、能力は平均値で〜」だけです。
主人公を褒めたたえる周りのキャラクター達には、若い美女か地位の高い人が多いです。これは主人公(の中のオジサン)の願望がほぼ「ハーレム」か「成り上がり」に集約されるためだと思われます。
ちなみに先ほど「無敵」と「最強」に作品を分類しましたが、これは「ハーレム」と「成り上がり」傾向とそれなりに一致します。つまり「無敵」なら「ハーレム」傾向、「最強」なら「成り上がり」傾向が強いです。不思議ですね。
ハーレムの傾向が強い作品は好みが分かれると思いますから、私のお勧めは「最強」の作品、特に「最強、努力も継続」に挙げた作品です。
表現上、努力と書きましたが、何も悩むことはありません。全戦、全勝、とにかく楽勝。成り上がりはトントン拍子、全てが上手く行きます。気分爽快ですよね!
ちなみに私は普段からこんな面倒くさいことを考えて読んでいる訳じゃありません。こんなん考えていたら集中できませんし、作品が全く面白くなくなります……。
目次: Kindle
Kindleは書籍をAmazonから本体にダウンロードしてから読みます。漫画や雑誌のように図画の多い書籍は1冊100MB近いサイズとなるため、ダウンロードに時間がかかります。
時間帯やネットワーク環境にもよりますが、DTIに乗り換えてからはネットワーク環境が改善したので、早くて2, 3分、遅くても10分程度の短いものですが、ただボーっと待っているには長い時間です。
幸いにもKindle Fireはダウンロードしながら読むことができる機能があります。
しかし、この機能はまともに動かなくて、本当は何か書いてあるはずのページなのに、真っ白なページが表示されることが多いです。一度ページが白くなってしまうと、何度見ても白いままです。
ページが白くなってしまった場合は、書籍を本体から削除し、ダウンロードしなおすと直ります。元から白いページもあるのでややこしいですけど、その辺は本を読んでいる人ならわかりますよね。
きちんと動作すれば便利な機能だと思うのですが、今は使い物にならないです。それどころか、間違えてこの機能を発動させると本が歯抜けになってしまって迷惑なので、ダウンロード中は絶対に本を開かないようにしています。
Kindle Fireは色々残念なところが多いですね……。
< | 2017 | > | ||||
<< | < | 09 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 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 |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.3.8.
using GD bundled (2.1.0 compatible)(png support.)