私はちょうど素晴らしいMBA 13 "Core i7を購入しました。私は、CPU速度が自動的に変化し、かなり激しく変化していると言います。任意のココアまたはCは、実際にそれに影響を与えずに、現在のクロック速度を見つけるためにそこに呼び出して現在のCPUクロック速度をプログラム上でOS Xで検出しますか?
編集:?私は、プログラムだけでなく、端末の呼び出しを使用しての答えとOKだ
おかげ
私はちょうど素晴らしいMBA 13 "Core i7を購入しました。私は、CPU速度が自動的に変化し、かなり激しく変化していると言います。任意のココアまたはCは、実際にそれに影響を与えずに、現在のクロック速度を見つけるためにそこに呼び出して現在のCPUクロック速度をプログラム上でOS Xで検出しますか?
編集:?私は、プログラムだけでなく、端末の呼び出しを使用しての答えとOKだ
おかげ
"インテルパワーガジェット" と呼ばれるこのツールを試してみてください。 IA周波数とIAパワーをリアルタイムで表示します。
http://software.intel.com/sites/default/files/article/184535/intel-power-gadget-2.zip
これは私が欲しかったものです。それは、サンプルの目的を含むも - ...完璧! – Tim
+1:非常に便利です! –
以来。!それはIntelのプロセッサーです。あなたはいつもRDTSCを使用することができます。これは、curreを返すアセンブラー命令ですntサイクルカウンタ - 各サイクルをインクリメントする64ビットカウンタ。それは少し近似しますが、たとえば
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
uint64_t rdtsc(void)
{
uint32_t ret0[2];
__asm__ __volatile__("rdtsc" : "=a"(ret0[0]), "=d"(ret0[1]));
return ((uint64_t)ret0[1] << 32) | ret0[0];
}
int main(int argc, const char * argv[])
{
uint64_t startCount = rdtsc();
sleep(1);
uint64_t endCount = rdtsc();
printf("Clocks per second: %llu", endCount - startCount);
return 0;
}
出力 '秒あたりの時計:2002120630' 私の2GHzのMacBook Proに。
"flAked"によって書き込まれたカーネル拡張で、CPUのp-stateをカーネルログに記録します。 http://www.insanelymac.com/forum/index.php?showtopic=258612
多分あなたはコードのために彼に連絡することができます。
あなたはsysctl
を経由して簡単にCPUの速度を照会し、いずれかのコマンドラインですることができます
sysctl hw.cpufrequency
またはC経由:
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
int main() {
int mib[2];
unsigned int freq;
size_t len;
mib[0] = CTL_HW;
mib[1] = HW_CPU_FREQ;
len = sizeof(freq);
sysctl(mib, 2, &freq, &len, NULL, 0);
printf("%u\n", freq);
return 0;
}
これはOSX上で正しく動作するようです。 しかし、Linuxではsysctlが廃止され、KERN_CLOCKRATEは未定義です。
#include <sys/sysctl.h>
#include <sys/time.h>
int mib[2];
size_t len;
mib[0] = CTL_KERN;
mib[1] = KERN_CLOCKRATE;
struct clockinfo clockinfo;
len = sizeof(clockinfo);
int result = sysctl(mib, 2, &clockinfo, &len, NULL, 0);
assert(result != -1);
log_trace("clockinfo.hz: %d\n", clockinfo.hz);
log_trace("clockinfo.tick: %d\n", clockinfo.tick);
コマンドラインで 'sysctl kern.clockrate'を実行すると、インテルCPUプロファイラがさまざまな変化を見せている安定した' kern.clockrate:{hz = 100、tick = 10000、tickadj = 2、profhz = 100、stathz = 100}私はこれがスピードステップ調整では機能しないと思っています。 – Tim
特にosxに詳しいことはありませんが、その情報を持つ/ procタイプのファイルシステムはありませんか?例えばLinuxの場合は/ proc/cpuinfo –
私が知る限り、 '/ proc /'はありません。ボックスに記載されているCPU速度を与える 'system_profiler'コマンドがありますが、ライブ更新クロック速度では変更されません – Tim
[この質問を見る](http://stackoverflow.com/questions/8351944/finding-outプロセッサあたりのコアあたりのCPUクロック周波数)が非常に難しい理由について説明します。 – Mysticial