2011-01-17 11 views
4

デュアルコアの1.8GHzプロセッサを搭載したノートPCで開発していますが、多くの弱いシステム(例:300MHzのARMなど)で頻繁にプログラムを実行します。どのように特定のプログラムに与えられる処理能力を制限できますか?

私は自分のラップトップでこのような弱い環境をシミュレートしたいので、自分のプログラムの動作を観察できます。これはインタラクティブなアプリケーションです。

私はqemuを見ましたが、私は環境を設定する方法を知っていますが、少し痛いので、私はqemuを弱いCPUをシミュレートするために必要なスイッチの正確な呪文を見ませんでした。

私はVirtualBoxの持っているが、私は1つの完全なホストCPUよりも少ないを仮想化することができますようにそれはいないようです。

私は約sigstopとsigcontを使ってプロセスに与えられたCPUを制限しようとしていますが、これは弱いCPUの正確な描写ではないかと心配しています。

アイデア?

+0

プロセスを刷新するのはどうですか?または「右クリックしてプロセスの優先度を設定する」か、それともあなたのOSで何が呼び出されてもかまいませんか? –

+0

は実際には意図した効果がありません。それは、プロセスを300mhzより速い方法を意味する可能性がある任意の時点で、マシン上で最も遅いプロセスにするだけです。 – jonr

+0

これはどの言語とプラットフォームですか? –

答えて

1

あなたのCPUは、1800 MHzのであり、あなたの目標は300 MHzであり、そして、あなたのコードは次のようである場合:

while(1) { /*...*/ } 

あなたが好きそれを書き換えることができます。

gettimestamp()は、お使いのOSの ある
long last=gettimestamp(); 
while(1) 
{ 
    long curr=gettimestamp(); 
    if(curr-last>1000)     // out of every second... 
    { 
     long target=curr+833;   // ...waste 5/6 of it 
     while(gettimestamp()<target); 
     last=target; 
    } 

    // your original code 
} 

を高周波タイマー。

あなたはスムーズな経験のために小さい値で動作するように選択することができます

、その上のすべての100ミリ秒のうち83ms、または速度8ms 10ms毎のうち、と言います。より正確な損失があなたの数学を台無しにするけれども、あなたが低くなる。


編集:これはどうですか?最初のプロセスを開始し、それ自体をデバッガとしてアタッチした後、それを定期的に一時停止し、上記のアルゴリズムに従って再開する2番目のプロセスを作成します。

+0

それは、a)プログラムのインタラクティブ部分のみを扱う点を除いて、妥当なアプローチです。ローディングリソースは引き続き通常の速度で発生します。 b)コードの周りに散らばったこれらのループがいくつかあります(それらを統一することはほとんど不可能です)。しかし、他の解決策が出てこない場合は、私はまだこれを使うかもしれません。 – jonr

+0

@jonr:OK新しいアイデア! – Blindy

+0

これは本質的にcpulimit.sf.netの機能ですが、シグナルを使用しています。もし私がそのルートに行くなら、私はcpulimitをよく使うように使うでしょう。 – jonr

0

このために構築されたエミュレータを調べるとよいでしょう。たとえば、マイクロソフトからは、このテクニカルノートhttp://www.nsbasic.com/ce/info/technotes/TN23.htmが見つかります。

使用している言語、およびプラットフォームの詳細を知らなくても、より具体的には難しいですが、私は、テスト環境を提供するには良い仕事をするためのエミュレータプログラムを信頼します。

0

私はどこかPIIMMX-266ラップトップを選んだ、その上にmininalのDebianをインストールしました。それは数週間前に死ぬまで完全な解決策でした。これはパナソニックモデルで、標準以外のIDEコネクタ(40ピンでも44ピンでもない)を使用しているため、HDDをCFに置き換えることができませんでした(CF- 。また、そのようなマシンの価格はUSD50/EUR40です。

(私はこれを使用して、家庭用の低速ARMベースのマシンをシミュレートしました。これは、最速のLinuxシステムですが、私たちは家庭向けの小型で低速なコンピュータを選択しました.GuruPlugは1.2GBの高速CPUを搭載しています)

(私はQEMUに精通していませんが、あなたはネイティブスピードでプログラムを実行するために、KVM(カーネル仮想化)を使用することができると述べている;。私はそれが余分な機能だ場合、それはオフにすることができると仮定し、そう、奇妙なしかし本当、それは、x86上のx86をエミュレートすることができます)

関連する問題