2

ここ(v2フル)からHTC One X(QuadCore、実際にはPentaCore)のchroot環境にUbuntu 12.04をインストールしました:http://linuxonandroid.blogspot.de/p/downloads.html

Ubuntuで単純なJavaターミナルアプリケーションを起動し、を使用してプロセッサカウントを出力するRuntime.getRuntime().availableProcessors()と、一貫性のない結果が得られることに気付きました。常に4つすべてが表示されるのではなく、1〜4コアのどこかに戻ります。

ネイティブのAndroidカーネルがオンデマンドで4つのコアを使用していることは知っていますが、htopUbuntuでプロセスビューアーを実行すると、常に4つのCPUが表示されます。UbuntuのJVMがさまざまな数のコアを報告しているのにhtop、Ubuntuカーネルは4つすべてを一貫して認識できるのはなぜですか?

4

1 に答える 1

1

私の知る限り、これがJVMの動作方法です。ノートのドキュメントavailableProcessors()(強調私のもの):

public int availableProcessors()

Java仮想マシンで使用可能なプロセッサの数を返します。

この値は、仮想マシンの特定の呼び出し中に変更される場合があります。したがって、使用可能なプロセッサの数に敏感なアプリケーションは、このプロパティをポーリングして、リソースの使用量を適切に調整する必要があります。

私の想定では、OSが現在実行中のプロセスの数とシステムへの負荷に基づいてコアを割り当てる必要がある方法を決定するときに、変動が発生します。常にJVMに4つのコアすべてを提供するとは限りませんが、UbuntuとAndroidはどちらも正常に機能しているようです。これは、UbuntuがAndroid環境で実行されているという事実とは実際には関係がないと思います。

于 2012-06-07T17:28:24.927 に答える