1

私はそれらに対して多くの線形回帰と診断を実行しようとしており、速度を上げるためにR プログラミング言語でdoParallelパッケージを使用しています。

興味深い問題に遭遇しました。予想どおりパフォーマンスの向上が見られましたが、CPU の使用率は一貫していません

たとえば、コードを実行すると、すべてのコアで CPU 使用率が30 ~ 40%になることがあります。

コードを再度実行すると、その間何も変更しなくても CPU 使用率が90%まで上昇する可能性があります。

どちらの場合も、同時に他に何も実行していません。

何も変更せずにコアが 30% 使用され、別の時間に 90% 使用される理由はありますか?

Windows XP、4GB または RAM を実行しており、Inter(R) Xeon(R) CPU X5650 @ 3.67GHz を使用しています。

私のコードは次のようになります。

results <- foreach(i=seq(1:regressions), .combine='rbind', .export=c('lmResults','lmCSig', 'lmCVar')) %dopar%
{model <- lm(as.formula(as.character(dat[i])), data=df) lmResults(model)     }
4

1 に答える 1

1

システムは、R 自体内で、またはメモリ リソースを消費する他のプログラムによって、メモリの制約を受けています。これが発生すると、Windows はハード ドライブを仮想メモリとして使用します。これには、より多くの操作ができるという利点がありますが、遅くなるという欠点があります。R のメモリを仮想 RAM ではなく物理 RAM にロックする方法を見つけるのに苦労しましたが、並列タスクを起動すると R が新しいプロセスを起動するため、メインの R インスタンスのメモリをロックできたとしても、それは役に立たないことに気付きました。新しいプロセスが仮想メモリに置かれているため、物理メモリと他の実行中のプログラムに仮想メモリを使用させることは役に立ちません。

Microsoft が2014 年 4 月 8 日に XP のサポートを終了したため、企業環境で Windows XP を実行しているのは興味深いことです。もちろん、Windows XPには4GBの制限があるため、OSをアップグレードせずにRAMを追加することはできません。

于 2015-07-24T14:27:38.963 に答える