0

私は Android dalvik について調べていて、Dalvik のストレス テストを行ってその安定性を評価する方法に興味がありました。Dalvik は、プロセッサに制約のあるデバイスのメモリを対象としていることを理解しています。では、多くのメモリを割り当てたり、一部の CPU コアの周波数を上げたりしてから、複数のアプリケーションを起動して安定性をテストする方法はありますか?

また、各独立したプロセスが Dalvik の独自のインスタンスを取得することも理解しています。したがって、Dalvik にストレスを与えるもう 1 つの可能性は、Dalvik の単一のプロセスと単一のインスタンスを共有する複数のアプリケーションを起動し、Dalvik がどれほど安定しているかを確認することです。

これらのいずれかが Dalvik の安定性を測定する良い方法であるかどうかを知りたいです。両方とも良い方法である場合、どちらがより良いテストになりますか?

ありがとう!

4

1 に答える 1

3

VM のすべての部分に一度に負荷をかけることは困難です。

ヒープとガベージ コレクターを実行するメモリ ストレス テスト、同期ストレス テスト (JSR-166 java.util.concurrent テスト スイートなど)、さまざまなコアで同時に多数の整数計算と浮動小数点計算を行う CPU ストレス テストを作成できます。 . 等々。

秘訣は、あなたが思っていることを実行するテストを書くことです -- 驚くべき数の「マルチコア」テストが、予期しない依存関係のためにシングルスレッドになってしまいます -- そして、その結果が正しいかどうか評価されます。不安定性を正常に引き起こすテストは、その事実が何らかの方法でユーザーに伝えられない限り役に立ちません。VM をクラッシュさせることは非常に良い方法です。:-)

同じプロセスで複数のアプリやサービスを実行することは、理論的には可能ですが、実際にはほとんどありません。一度にフォアグラウンドにあるアプリは 1 つだけであり、サービスのリクエストを行っている場合、1 つのスレッドが応答を待機するため、この方法で実際にシステムにストレスをかけることはできないと思います。もう一方が実行されている間。複数のスレッドを備えた 1 つのアプリだけを使用する方がよいので、それぞれが何を行い、どのように相互作用するかを正確に制御できます。

これを行う前に、「安定性」の範囲を定義する必要があります。単純に多くのアプリを実行するだけでは、何の効果もありません。数億のデバイスが数十億の Dalvik インスタンスを実行しており、VM 自体による障害は本質的にありません (ただし、アプリ、フレームワーク、3rd のバグによる障害はいくつもあります)。 -パーティーライブラリなど)。Dalvik は、Android 4.0 (Ice Cream Sandwich) が 2 年前に出荷されて以来、あまり変わっていません。

于 2013-07-05T14:42:21.537 に答える