経過時間 (コードの任意のセクションを実行するのにかかる時間) を使用して、Linux OS に搭載されているプロセッサの量を推測するにはどうすればよいですか。コードの特定のセクションを実行するのにかかったクロック ティックがあります。そこからマシン上のコア
2 に答える
を使用して、CPUに関する情報(プロセッサの数とコアの数など)を取得できます
cat /proc/cpuinfo
.
しかし、linux-kernel 内で特定のコードを実行する際にかかるクロックティックを計算しようとしている場合は、試すことができます。
#include <sys/time.h>
unsigned long ini,end;
preempt_disable();
rdtscl(ini);
...your code....
rdtscl(end);
preempt_enable();
printk("time lapse in cpu clics: %lu\n",(end-ini));
詳細については、http://www.xml.com/ldd/chapter/book/ch06.htmlまたはdownload.intel.com/embedded/software/IA/324264.pdfを参照してください。コードに時間がかかる場合は、次のこともできます。 jiffies を効果的に使用します。
また、ユーザー空間アプリケーションの場合、さまざまなタイミング関数を使用して、時間をナノ秒単位で提供するか、oprofile( http://oprofile.sourceforge.net/about/ ) を参照し、タイマー関数を参照して、C++ を使用してナノ秒単位で時間を提供できます。
次のようなことができると思います。
素数を見つけるための単純なメソッドなど、並列で実行できる重い数学作業を行うコードを記述します。次に、それを複数のスレッドで実行し、1 つから始めて上に向かっていきます。ある時点で、N 個の最初の素数を計算するのにかかる時間は、スレッドの数が (使用可能な) プロセッサ コアの数と同じになります。
しかし、プロセッサの数を見つけるのは非常に不器用な方法であり、負荷の高いシステムや仮想マシンで実行されているシステムなどではほぼ確実に機能しません。