スワップパーティション/ファイルはシステムにどのように影響しますか?


20

一部の友人は、OSや一部の殺せないサービスがほとんどのRAMを使用するため、Androidスマートフォンには通常のアプリで使用できるメモリがほとんどない(100 MB未満)と言っています。たとえば、512MBの1台の電話では90MBのメモリしか使用できないため、同時に実行できるアプリは2〜3個だけです。

スワップパーティション/ファイルの作成が役立つかどうか疑問に思っていますが、Web全体でさまざまな意見があり、何をすべきかわかりません。私の質問は次のとおりです。

(1)特にOSおよびそれらの殺せないサービスでは、スワップアウトするために頻繁に使用されないメモリページが多くありますか?

(2)小さなメモリページをスワップアウトすると、フラッシュメモリの寿命がどのように損なわれますか?フラッシュ(またはSDカード?)は自動的にウェアレベリングを行いますか?

(3)複数のアプリを実行する場合、スワッピングは本当にパフォーマンスを向上させますか?(1)への答えがイエスなら、そうだと思います。

(4)フラッシュへの書き込みが遅すぎるため、スワッピングが発生した場合の応答性が損なわれますか?

(5)AndroidがLinuxカーネルからスワッピングメカニズムを保持しているのは本当ですか?

読んでくれてありがとう。

回答:


8

Androidのアプリケーションライフサイクルはスワッピングのはるかに高度な形式であるため、Androidのスワッピングには大きな利点はないと思います。

(1)特にOSおよびそれらの殺せないサービスでは、スワップアウトするために頻繁に使用されないメモリページが多くありますか?

デスクトップLinuxでもOSカーネルを交換することはできず、Androidはより多くのRAMを必要とするときにすでにサービスを停止しています。デバイスベンダーが、役に立たないサービスを常に実行する必要があると主張する場合は、デバイスをルート化します。

(2)小さなメモリページをスワップアウトすると、フラッシュメモリの寿命がどのように損なわれますか?フラッシュ(またはSDカード?)は自動的にウェアレベリングを行いますか?

SDカードがウェアレベリングを行っていても、スワッピングは非常に大きなダメージを与えます。

(3)複数のアプリを実行する場合、スワッピングは本当にパフォーマンスを向上させますか?(1)への答えがイエスなら、そうだと思います。

Androidのコンテキストではありません。ユーザーが要求したとおりにプロセスを続けようとする従来のOSとは異なり、Androidは古い未使用のプロセスを強制終了し、メモリを再利用します。タスクの切り替え時にアプリケーションがすでに状態を保存しているため、この強制終了は高速です。

(4)フラッシュへの書き込みが遅すぎるため、スワッピングが発生した場合の応答性が損なわれますか?

おそらく、そうではないでしょう。そのためのベンチマークが必要になります。

(5)AndroidがLinuxカーネルからスワッピングメカニズムを保持しているのは本当ですか?

Androidがスワッピングメカニズムを保持するかどうかはわかりませんが、保持する場合(または独自のカーネルをコンパイルする場合)でも、いくつかの構成が必要になります。通常はfstab、スワップファイルを指すファイルがあり、実行していswapon -aます。

実際、スワッピングが実際にパフォーマンスを損なう理由があります。これは、Androidのメモリ管理スキームであるアプリケーションライフサイクルが正しく動作することを妨げます。


答えてくれてありがとう。まだ質問があります。Samsung Fascinateでは、10個の殺せないサービスが約110Mのメモリを占有します。実行中の他の22の強制終了可能なサービスがありますが、「Running Application」には実行中のアプリケーションは表示されません。それは私の友人の電話であり、私は彼女が以前何をしたのか正確には知りませんでしたが、多くのサービス/アプリが同時に実行される可能性は十分にあるようです。これらすべてのバックグラウンドサービス/アプリが、起動時に必要なすべてのページを使用しているとは思いません。また、アプリの状態の保存+アプリの再読み込みと再起動+状態の復元も遅くなります。
エバーグリーン

この問題を考える別の方法はこれです:フラッシュの寿命は問題ではないと仮定します、Androidはスワッピングをすべきですか?そうでない場合、Androidアプリとデスクトップアプリの主な違いは何ですか?Androidライフサイクルがデスクトップ/サーバーアプリケーションで機能するとは思わない。
エバーグリーン

@evergreen:アプリケーションがバックグラウンドになったとき(たとえば、ユーザーがホームを押してタスクを切り替えたとき)、アプリケーションの状態が保存されます。後で、他のアプリケーションがメモリを必要とする場合、古いアプリケーションまたはバックグラウンドサービスは強制終了されます(FKは実質的に時間がかかりません)。これは、アプリケーションの状態がかなり前に既に保存されているため、タスクの強制終了が即座に行われることを意味します。すでにメモリ内にあるアプリケーションをリロードすると、最速のリロード時間が得られます。しかし、アプリケーションが既にアンロードされている場合、アプリケーションは完全なリロードを実行する必要があります(これはスワッピングと同じ状況です)
Lie Ryan

@evergreen:タスクキラーを使用すると、アプリケーションを強制的にアンロードします。アプリケーションがメモリに残っている場合、高速リロードではなく、常に完全なリロードを行う必要があります。スワップファイル/パーティションを使用すると、(古い)アプリケーションがスワップアウトされ、復元にはフルリロードとほぼ同じ量の作業が必要になります。例外:完全リロードでは、アプリケーション開発者は永続データと一時データを分離し、保存するものと保存しないものを最適化できます。スワップを復元している間、アプリケーション開発者は言うまでもなく、すべてをスワップアウトします。
ライライアン

@evergreen:フラッシュの寿命が問題ではないと仮定しても、Androidはスワッピングを行うべきではありません。アプリケーションライフサイクルの方が優れているからです。Androidライフサイクルは、デスクトップおよびサーバー環境のメモリに制約のある環境向けに設計されています。膨大な量のメモリがあり、ユーザーはより多くのマルチタスクを実行し、バックグラウンドプログラムがOSによって殺されることを期待していません。Androidライフサイクルの弱点は、アプリケーションのサポートが必要なことです。アプリケーションはいつでも強制終了する準備ができており、事前定義された時点で状態を保存する必要があります。このような複雑さは、デスクトップアプリには無関係です。
ライライアン

5

インターネット上の誰もがあなたに言っていることにもかかわらず、スワッピングには間違いなく利点があります。試してみて、自分で確かめてください。経験的に、G1またはメモリの少ない他の電話機では、スワップにより電話機の動作が改善され、高速になります。

はい、Androidにはライフサイクルの「タスク管理」が組み込まれていますが、あまり良くありません。これは、日常のプロセスを殺すことは、メモリが不足すると、そしてアプリケーションを「使用して、その状態を保存することが期待されているバンドルをあなたがそれらを再起動すると、彼らが最後にあった同じ状態で再起動するように」。

プロセスを削除する必要があるとAndroidが判断すると、それを単純に強制終了します。カーネルは、そのアプリケーションが適切に作成され、丁寧な終了要求に応答することに依存することなく、プロセスに必要なすべてのリソースをすぐに再利用できます。カーネルがアプリケーションリソースをすぐに再利用できるようにすると、深刻なメモリ不足の状況を回避するのがはるかに簡単になります。

これは実際に機能していれば素晴らしいことであり、無差別のスワップよりも優れているでしょう。しかし、アプリは実際には状態を保存しません。最小限の情報保存するだけで、その状態に戻ります。(そして、これを行うことさえ気にしないアプリもあります。)その状態に戻るには時間がかかります。スワップは実際にはアプリの状態全体を保存するため、リロードするだけでよいため、アプリ間の切り替えがはるかに高速になります。

たとえば、ブラウザーから別のアプリに切り替えると、ブラウザーはほとんど常に強制終了されます。ブラウザーに切り替えると、ブラウザーはインターネットからページ全体を再読み込みする必要があります。これは、スワップから状態をリロードするよりも時間がかかり、データプランを使用している場合はお金を無駄にし、Webページが動的な場合に状態の問題を引き起こします。

多くのアプリは、必要以上に起動に時間がかかるか、再起動時に実際に同じ状態に戻らないため、スワップアウトの方がうまく機能します。

ストックシステムに満足している人は、携帯電話の使い方が違うと思います。

Cyanogenmodでスワップパーティションを使用する必要がありますか?


ライフサイクルに任せた場合、パフォーマンスを向上させるために追加のデータをキャッシュするかどうかはアプリケーションの決定になります(ロードされたWebページなど)。スワップを使用する場合、OSが決定しますが、パフォーマンスを最適化するために保存するものと保存しないものを決定するのにOSは最適な位置にないため、すべてを保存および復元する必要があります。あなたがタスクを切り替えると、ブラウザはインターネットからページを再ダウンロードしません。私はしばしばブラウザを開き、たくさんの重いゲームや他のアクティビティに切り替えて、ブラウザに戻ります。
ライライアン

右。どちらのシステムも最適ではありませんが、ほとんどのアプリではスワップが優れています。ブラウザは、ページを再度開く前に強制終了された場合にのみページをリロードします。メモリが少ない携帯電話では、ほとんどの場合殺されます。
エンドリス

@LieRyan-「すべての場所が即座にロードされた最後のページでブラウザに戻る」ブラウザは、リロード後に開かれたページのスクロール位置を復元しますか?それは、Chromeが(このブラウザーは非常に気に入っていますが)しません。これは、電話に切り替える前に、むしろログWebページの途中で読み上げを停止したときに非常に残念です...
kerim

2

RAMが340MしかないSpice mi-435(インドでのみ販売)があります。ああ、スワップファイルは大いに役立ちます。私の携帯電話はそのような低RAMでICSを実行し、間違いなく多くのメモリ不足状態に入りましたが、スワップファイルは非常に役立ちます。すべてのアプリケーションの状態は、アクティブに使用されていないときにスワップに転送されます。これにより、以前よりもはるかに少ないラグで、より多くのアプリケーションとRAMを必要とするアプリをスムーズに実行するための電話室が確保されます。以前使用していたアプリを開くと問題が発生しますが。SDはボード上の高速RAMよりもはるかに遅いため、状態をロードするのに時間がかかります。しかし、スワップオプションはRAMが少ないほど優れています。512M未満のRAMのパーティションをスワップすることをお勧めしますが、512Mを超えないようにしてください。

お役に立てば幸いです。


1

スワップファイルは、RAMが大きいシステムでも役立ちます。私のクアッドコア1GB RAM 7インチタブレットは、UHS-1マイクロSDカードで、2GBのスワップをチャッキングすることで、マルチタスクを大幅に強化します。そしてもちろん、メモリの価格は急速に低下し、一定の書き込みであっても、nandフラッシュは長年続くはずです。

パフォーマンスの違いは非常に急進的であるため、基本的に意見のとおりです。おそらく、RAMの量が本当に少ない人はこれを行うべきです。実際、Androidの標準オプションとして(おそらく、より大きなアプリキャッシュ、および適切なサイズのインターネットキャッシュとともに)提供されるはずです。

つまり、64-128gbのマイクロsd(uhs-1)、または今年出てきたuhs-2に加えて、16-64gbの内部ナンド(多くの場合「高速」ナンド)があります。 Windowsスレートで使用されているSSDでさえも、高速スペースをすべて満たすわけではありません。速度は、実際にはビデオの使用、またはメモリへのアプリのロードのみに使用されます-これはまさにここで使用されます。

もちろん、理想的には、メーカーは解像度や追加のコアよりもRAMに重点を置くでしょう。これは明らかに、システム速度が高いRAMから多くの利点を得るためです。また、おそらく内部ストレージの速度も上げる必要がありますただし、高解像度はすべてのデバイスで一種のRAM不足を引き起こす傾向がありますが、スワップファイル、および合理的なスナップの外部sdへのキャッシュは多くの意味を持ちます。

実際、一部のブラウザもキャッシュをフルに保つことができれば嬉しいです。ほとんどのブラウザは低速または低機能で、めったに高速でフル機能ではありません。これは、内部ドライブのアプリキャッシュのスペースが小さいためです。それらは、低メモリおよびストレージ環境内で動作するように設計されており、そのストーリー全体が変化しています。ラムが必要以上にチョップしていなくても、ストレージは確かにあり、UHS-1規格(または今年リリースされたuhs-2)でかなり速くなる可能性があります。高速」またはssd。

外部メモリのコストは、大容量のuhs-1であっても、本当に落花生です。少なくとも64 GBのuhs-1は完全に手頃な価格で(私がいる場所では50ドルですが、USDが低くなります)、デバイスよりもはるかに安く、32 GB以下は基本的に数人のテナーです。

デスクトップから実際に多くの教訓を学ぶ必要があります。特に現在は仕様が高くなっています。パフォーマンスが最も遅いリンクがストレージからRAMにロードされています。それを軽減するためにできることは多ければ多いほど良いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.