0

多くの低構成のコンピューターで実行する必要がある C++ コードを作成しました。今、私のPCは非常に高度な構成です。Ubuntu 10.04 を使用していますが、一部のリソース、つまりメモリと仮想メモリにハード制限を設定しています。今私の質問は:

1) キャッシュ サイズとキャッシュ ライン サイズに制限を設定する方法 2) コードが問題ないかどうかを確認するために、他にどのような制限を設定する必要がありますか?

私はコマンドを使用しています:

ulimit -H -m 1000000
ulimit -H -v 500000
4

2 に答える 2

1

ローエンド マシンでの実行を適切にシミュレートするには (キャッシュ制限が低いわけではありません)、マシンの実際のハードウェアではなく、仮想マシンでコードを実行できます。ulimitこれは、アプリケーションが取得するものをulimit単純に制限するため、使用を制限する場合よりも、メモリが小さいマシンで何が起こるかを示します。したがって、特定の一連のテストを実行するときに、アプリケーションがメモリ不足にならないことがわかります。しかし、そもそも大量のメモリがない場合に、アプリケーションとシステムがどのように連携して動作するかは示されていません。

物理メモリの量が少ないマシンは、たとえばスワッピングの動作やファイルシステムのキャッシュに関しては、まったく異なる動作をします。「メモリが大きいが、アプリケーションは制限されている」と「メモリが小さい」の間で変化するいくつかのことを言及するだけです。最初の場所」。

Ubuntu に仮想マシンのセットアップのフレーバーが付属しているかどうかはわかりませんが、たとえば VirtualBox は、任意の Linux/Windows マシンで簡単に構成およびセットアップできます。ハードウェア仮想化命令を実行するのに十分な最新のプロセッサがある限り。

まったく役に立たないと言われているように、キャッシュメモリが「不足」したり、他の方法で障害を引き起こしたりすることはありません。実行速度は少し遅くなりますが、大量ではありません (任意の操作で約 10 倍ですが、ほとんどの場合、これは他の多数の命令に対して平均化されます。非常に大きな行列乗算)。

ヒントの 1 つは、古いハードウェアを探すことかもしれません。通常、「コンピュータ リサイクル ショップ」などでは、数年前のコンピュータがほとんど何もない状態で販売されています。このようなシステムをセットアップし、選択した OS をインストールして、何が起こるかを確認してください。

于 2013-08-09T12:37:11.973 に答える