3

bogoMIPS 値を取得するために、Samsung Galaxy (sgh-i897) の cpuinfo ファイルを読み込んでいます。そして今、そのような情報を解釈する方法を学んでいます。

最初は、ロード スレッドのメイン アクティビティの下でこれを実行しましたが、常に 997.59 の値が得られました。とにかくずっと後になるまでUIでそれを必要としなかったので、ファイル読み取りメソッドをサービスに移動しました。これを行うと、読み取った値はまったく異なり、アプリケーションの起動ごとに変化するように見え、300 から 500 の範囲のように、常にはるかに遅くなります。

私の質問は次のとおりです。

  1. Android OS / Linux では、bogoMIPS 値が測定され、cpuinfo ファイルが定期的に変更されますか?

  2. もしそうなら、それを強制するプログラム的な方法はありますか?

  3. サービスとメイン アクティビティ スレッドからファイルを読み取っているかどうかによって異なるのはなぜですか?

  4. 最終的に、最も正確な数が必要な場合は、必要なときに自分で取得するために独自のタイミング ループを作成するのが最善でしょうか? (とにかく、CPU負荷のために常に変化していると仮定しますか?)

4

2 に答える 2

6

簡単な答え: カーネルをハッキングしていないのであれば、BogoMIPS を気にしないでください。

この BogoMIPS とは何ですか?

オペレーティング システム カーネルによって実行されるほとんどのタスクには、ハードウェア、または最近では他のプロセッサ コアで実行されているプロセスの待機が含まれます。カーネルには、さまざまな時間スケールで待機するためのさまざまな方法があります。ごく短い時間では、多くの場合、単に「ぐるぐる回る」だけで、技術的には「ビジー待機ループ」として知られています。

BogoMIPS ベンチマークは、忙しい待機ループです。カーネルはそのようなループを実行し、かなり信頼できる壁時計を使用して時間を計り、特定の時間待機するためにビジー待機ループを実行する必要がある時間を決定します。

BogoMIPS 値が変化するのはなぜですか?

コンピュータ (この場合はスマートフォン) が多くの作業を実行していない場合、非常に高速なプロセッサが必要になることはめったにありません。オペレーティング システムは、最大周波数よりも低い周波数で実行できることに気付くと、プロセッサをより低い周波数に調整する場合があります。これは、OS がエネルギー使用量 (バッテリ駆動のコンピューターに関連) と熱生成 (ほとんどすべてに関連) を削減できる方法の 1 つです。

もちろん、最大周波数を下げると、BogoMIPS ベンチマークの結果は意味をなさなくなります。これは、ビジー待機ループの各反復に時間がかかるためです。カーネルはベンチマークを再実行し、BogoMIPS 値を更新します。これにより、ビジー待機が短時間の信頼できる待機方法のままになります。

処理の必要性が高まり、プロセッサを再びスロットルする必要がある場合にも、同様のことが当てはまります。

この BogoMIPS 値をどのように使用すればよいですか?

タイミングを処理するカーネルの一部をハッキングしている場合を除き、BogoMIPS 値に悩まされることはありません。実際、BogoMIPS 値以外のものを使用する必要があります。/sysAndroid SDK を使用するか、ファイルシステムによって提供される情報を使用して、現在の CPU 周波数を特定する方法があるかもしれません。

于 2012-07-13T03:18:16.320 に答える
2

bogoMIP を強制的に変更することはできません。Android ではさまざまな要因の下で、最初は (他の Linux カーネルと同じように)jiffies最初の起動時に (arch/arm/boot/smp.cおよびarch/arm/boot/vmlinux.lds.Sカーネル ソース内で) 使用されるさまざまな要因の下でかなり気まぐれです。 bogoMIPS (当然のことと考えるべきではありません。それ自体が「偽物」である理由の一部です)。

bogoMIPS のゆがみに影響を与える要因は次のとおりです。

  • 実行中のサービス/ウィジェット/アプリの数は?
  • CPU がアンダー/オーバークロックされていませんか? どの周波数?
  • どのような種類のスケジューラーが配置されているか (デッドライン/オンデマンド/インタラクティブなど、いくつかありますが、いくつかあります)
  • カーネルはどのように構築されますか? 最適化されていますか?それを構築するために使用された構成は何ですか?

CPUの情報の値を「保存」するために使用されるデータは、/procファイルシステム内の起動時に作成された仮想ディレクトリに保存されます。そこにあり、そこにあり、すべてではないにしてもほとんどのファイルはゼロバイトですが、そこから読み取ることができます. ブート時に動的に作成されます。

于 2012-07-13T03:12:59.330 に答える