“夏前にすぐに痩せるRAM Diet!” もしくは 「老頭児組込みエンジニアの苦悩」

101 Views

June 16, 12

スライド概要

“夏前にすぐに痩せるRAM Diet!” もしくは
「老頭児組込みエンジニアの苦悩」
パート1
2012.6.16@横浜Android PF部

profile-image

とりあえず登録。 数年後、Slideshareからデータ移行。 ただし、一部ファイルは移行できず。無念。

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

“夏前にすぐに痩せるRAM Diet!” もしくは 「老頭児組込みエンジニアの苦悩」 パート1 2012.6.16@横浜Android PF部 kinneko@gmail.com (公開版につき若干改定)

2.

自己紹介

3.

n kinneko n 某青い周辺機器メーカー勤務 n twitter: @kinneko n 日記:http://d.hatena.ne.jp/kinneko/ n 資料:http://www.slideshare.net/kinneko

4.

転職先 募集中〜 n kinneko n 某青い周辺機器メーカー勤務 n twitter: @kinneko n 日記:http://d.hatena.ne.jp/kinneko/ n 資料:http://www.slideshare.net/kinneko

5.

最近の活動 チーム監修 チーム監修 『徹底解剖 Android 2.3&3.0』 Android-x86のご意見番 Androidアプリケーション開発環境構築法 きんねこ氏にハニカム版について Androidのフルシステムビルド環境を作る 聞いてみた!

6.

最近の活動 n n n Pandaboardで UbuntuTVしてみたり... まごろく先生に そそのかされて ADKしてみたり... Androidは最近 飽き気味かも...

7.

最近の活動 n kindle fireを日本語対応 可能にしてみたり... n lenovo K800にSimeji 入れてみたり...

8.

こんにちは。 PF部では、パート1やって、 パート2やらないキンネコです。 前科いっぱいあります。 んで、今回もパート1だけ、 かもしれません(^^;。

9.

PF部はやさいしいです(^^;。 だれも「パート2はどうなった」 と、言いません(^^;。 んなとこ興味ないとも言う(^^;。

10.

本題

11.

コストベースで ハード仕様が縮退することって よくありますよね?

12.

登場人物 ハード屋:H ソフト屋:S

13.

H「$3下がるのでDRAM 256MBにしたいけど、いい?」 S「無理無理ムリムリ無理! Androidは動かないですよ。」 H「そっか動かないか。」

14.

これで済んだと思ったら...

15.

H「協議の末、コスト優先で 256MBになりました。」 S「え"? 無理って言ってんじゃ ん。責任持てないからね。」 H「え? 無理なの? ソフトでなんとかなるんじゃ ない?まぁ決まったし。」

16.

ハード屋はソフトの都合なんか 考えません... ソフトなんて、イニシャルコストの 1つくらいとしか思ってないです。

17.

$3のために、 多くのリスクを背負い込み、 開発期間はのびて、 開発コストも上がります。 そういうことは見えない アホーです。 システムのコストは トータルで考えましょう!

18.

でも、Android知らないので、 ソフト屋も うまく見積もれません。 NASやSTBと同じように 思ってます。

19.

普段木造二階建てやってる大工に 10F建ての鉄筋コンクリートの ビルを建てさせるようなものです。 基礎は同じでも、 上は全然違うものなのに...

20.

こういうときには... ・プロジェクトに近寄らない ・有給休暇を使って様子を見る ・やめてマシな会社を探す という処方箋があります。 うまく逃げましょう...

21.

しかし、 妻子はいるし、 住宅ローンはあるし、 なかなか身軽にはいきません(^^;。 しょうがなくプロジェクトに 付き合いつつ、 妥協点をさぐります。

22.

とりあえず、今回のターゲットは Gingerbread まだメモリ的にはなんとか... ICSとかでは考えないように!

23.

似てるものとしては... IS01も256MB。 でも、あれって、公式ROMで Froyo/Gingerbreadには ならなかったです。 非公式ROMでは動いてますが。

24.

IS01のOSアップデートなのです が、検討を重ねていましたが、 ハードウェア設計値、操作性、 パフォーマンス等を考慮した結 果、実現は不可能という結論にな りました。ご期待に応えられず申 し訳ありません・・・(佐) http://twitter.com/#!/kddipr/status/4422761896218624

25.

・ハードウェア設計値 メモリ足りないってことね ・操作性 カクカクになるってことね ・パフォーマンス 快適には動かないってことね ・等

26.

実現は不可能

27.

実現は不可能

28.

んな、天下のSHARPに できないものを、 やれるわけないじゃないですか...

29.

H「そこはホレ、いつもの魔法が 使えるんでしょ?」 わたしは魔法使いでは ありません... orz それにプログラマでさえ ないのですが...

30.

GingerbreadのGoogleの推奨値 起動に256MB 動作には512MB そもそも、256M以下は、 まともに動くような レベルではないです。

31.

ここからの作業は、 オススメしません... DRAMの削減には 強く反対しましょう(^^;。

32.

次回、乞うご期待!

33.

まぁ、さすがに、 これで終わりとか、 そこまでひどくないです

34.

256MBは全部使えるわけでは ありません。 いろんな都合でメモリマップには 予約領域がたくさん... orz

35.

とりあえず動かしてみる。 評価用に専用ハード作るの? kernelの起動オプション "mem="でメモリ容量を 制限できます。

36.

起動してみる。 一見動いてはいるけどね。 なんかね、 もう全然足りてない。

37.

使えるのは、200MB強 kernel動くと180MB強の残り Android起動すると 40MBくらいのフリーエリア 動画再生すると残り3MB...

38.

動作に必要なサービスまで 殺されています。 起動直後のロック スクリーン画面状態でも サービス殺されるログが... dhcpcdがいないです... これはヤバい。

39.

メモリの使用状況を見る。 # ps # cat /proc/meminfo # procrank そもそもプリインの ツールが少ない

40.

Vss (virtual set size)…… プロセスが必要とするメモリ の量 - 仮想的な割り当て

41.

Rss (Resident set size)…… 物理メモリ上の使用量 メモリ確保要求されたもの

42.

Rssの合計は 総メモリより多い。 共有メモリを含むから。 重複計算になっている。

43.

Pss (proportional set size) プロセスが実質的に 所有しているメモリ 共有されていないprivateメモリ + 共有されてるメモリ 共有しているプロセス

44.

Uss (unique set size) …… プロセスが占有しているメモリ

45.

目安はPssで

46.

さて、どう減らすか?

47.

某EMのように、フレームワー クに手をいれちゃうと、 もうそれはAndroidじゃない。

48.

某PM談 「あんな地獄のような作業はも う勘弁してもらいたい!」

49.

入れた手の 影響範囲が見えない。 最悪、Webkit捨てるとか、 そういう解決もあるけどね...

50.

今回はROMフットプリントは 問題になっていないので、 フレームワークに手を入れるのは あまりポジティブな結果が 得られないと思う。

51.

とりあえず、使わないサービス や起動アプリを落とすかな。 IMとかいらないよね。 system.ui落とすのも ありかな? 影響はどのくらいに なるんだろう。

52.

もう同じ悩みを 解決した人が いるかもしれない... ググりますかね...

53.

TIで面白いドキュメントを 出していた。 Android gingerbread usecase 128MB boot http://processors.wiki.ti.com/index.php/ Android̲gingerbread̲usecase̲128MB̲boot

54.

AM37xevm用で、Android 2.3.1ベース。 AOSP/SGXベースだと、 199MBが必要だと書いてある。

55.

いえ、手元ではそれでは 動いてませんが... さらに71MB削除できる ってことか。 これは期待。

56.

以下の機能を削る指針 phone, contacts, wallpaper, 3D Gallery (2D gallery will be supported) mms, email, deskclock, alarmprovider, calculator, calendar camera まぁ、想定通りだな。

57.

パッチは4つ。 なんか異様に短い。 中を見るのは次回(^^;。

58.

最悪、ビデオアクセラレーショ ン捨てろと書いてある... Froyoはともかく、 Gingerbreadでそれはないか まぁ、次回でな

59.

つらつら設定眺めていると、 こんなのもあった。

60.

dalvik.vm.heapsize=128m なんでだ? 「特に理由はない」 理由なく初期値を 変更しないよね... これ、デモ用チューンだろ。

61.

Gingerbreadの1080pには 48Mくらいでいいと思う。 設定してみたけど 問題なさそう。

62.

影響少なく、 お手軽な手としては、 こういうのもある。

63.

ZygoteでのJavaのクラスの preloadingをやめる。 frameworks/base/preloaded-classes frameworks/base/tools/preload/

64.

何もプリロードしなくても 起動はできるはず。 Google developers say you can adjust this as much as you like Android can boot without preloading any classes

65.

ただし、あとでアプリの起動が 遅くなりメモリ要求も増える。 いっぺんに止めるには、 frameworks/base/core/java/com/ android/internal/os/ZygoteInit.java からpreloadClasses()を コメントアウト。

66.

というわけで、 次回パート2実装編に続く ほんとにあるのか?