1. 程式人生 > >ios獲取系統資訊的詳細api

ios獲取系統資訊的詳細api

MacOS X下檢視CPU資訊大致有3個方法:
用系統自帶的System Information,它給出的資訊比較少,比如無法知道CPU的執行緒數
用第三方軟體CPU-X,它和著名的CPU-Z軟體非常類似,很容易上手
用命令列工具
用名令行工具可以得到最詳盡的CPU資訊。以下命令可以把CPU相關的資訊一網打盡:

sysctl -N -a | grep cpu | xargs sysctl -e  
hw.ncpu=4
hw.cpufrequency_compat=1400000000
hw.activecpu=4
hw.physicalcpu=2
hw.physicalcpu_max=2
hw.logicalcpu
=4 hw.logicalcpu_max=4 hw.cputype=7 hw.cpusubtype=8 hw.cpu64bit_capable=1 hw.cpufamily=280134364 hw.cpufrequency=1400000000 hw.cpufrequency_min=1400000000 hw.cpufrequency_max=1400000000 hw.cputhreadtype=1 machdep.cpu.max_basic=13 machdep.cpu.max_ext=2147483656 machdep.cpu.vendor=GenuineIntel machdep.cpu.brand_string=Intel(R) Core(TM) i5-4260
U CPU @ 1.40GHz machdep.cpu.family=6 machdep.cpu.model=69 machdep.cpu.extmodel=4 machdep.cpu.extfamily=0 machdep.cpu.stepping=1 machdep.cpu.feature_bits=9221959987971750911 machdep.cpu.leaf7_feature_bits=10155 machdep.cpu.extfeature_bits=142473169152 machdep.cpu.signature=263761 machdep.cpu.brand=0 machdep.cpu
.features=FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C machdep.cpu.leaf7_features=SMEP ERMS RDWRFSGS TSC_THREAD_OFFSET BMI1 AVX2 BMI2 INVPCID FPU_CSDS machdep.cpu.extfeatures=SYSCALL XD 1GBPAGE EM64T LAHF LZCNT RDTSCP TSCI machdep.cpu.logical_per_package=16 machdep.cpu.cores_per_package=8 machdep.cpu.microcode_version=23 machdep.cpu.processor_flag=6 machdep.cpu.mwait.linesize_min=64 machdep.cpu.mwait.linesize_max=64 machdep.cpu.mwait.extensions=3 machdep.cpu.mwait.sub_Cstates=286531872 machdep.cpu.thermal.sensor=1 machdep.cpu.thermal.dynamic_acceleration=1 machdep.cpu.thermal.invariant_APIC_timer=1 machdep.cpu.thermal.thresholds=2 machdep.cpu.thermal.ACNT_MCNT=1 machdep.cpu.thermal.core_power_limits=1 machdep.cpu.thermal.fine_grain_clock_mod=1 machdep.cpu.thermal.package_thermal_intr=1 machdep.cpu.thermal.hardware_feedback=0 machdep.cpu.thermal.energy_policy=1 machdep.cpu.xsave.extended_state=7 832 832 0 machdep.cpu.xsave.extended_state1=1 0 0 0 machdep.cpu.arch_perf.version=3 machdep.cpu.arch_perf.number=4 machdep.cpu.arch_perf.width=48 machdep.cpu.arch_perf.events_number=7 machdep.cpu.arch_perf.events=0 machdep.cpu.arch_perf.fixed_number=3 machdep.cpu.arch_perf.fixed_width=48 machdep.cpu.cache.linesize=64 machdep.cpu.cache.L2_associativity=8 machdep.cpu.cache.size=256 machdep.cpu.tlb.inst.large=8 machdep.cpu.tlb.data.small=64 machdep.cpu.tlb.data.small_level1=64 machdep.cpu.tlb.shared=1024 machdep.cpu.address_bits.physical=39 machdep.cpu.address_bits.virtual=48 machdep.cpu.core_count=2 machdep.cpu.thread_count=4 machdep.cpu.tsc_ccc.numerator=0 machdep.cpu.tsc_ccc.denominator=0 machdep.xcpm.cpu_thermal_level=0

可以看見
machdep.cpu.brand_string=Intel(R) Core(TM) i5-4260U CPU @ 1.40GHz
夠詳細吧,具體什麼鬼,一個一個的我也不是全都明白。自己谷歌吧!

在程式碼中可以這樣輸出

    unsigned int ncpu;
    size_t len = sizeof(ncpu);
    sysctlbyname("hw.activecpu", &ncpu, &len, NULL, 0);

    return (int)ncpu;

*
* hw.memsize -系統中的實體記憶體的位元組數。
*
* hw.ncpu -處理器,這個引導可用的最大數量。
*使用此值對每個處理器陣列的靜態大小進行調整,即處理器負載統計。
*
* hw.activecpu的處理器數量目前可供執行的執行緒。
*使用這個數字來確定在SMP感知應用程式中建立的數字執行緒。
*當電源管理模式發生改變時,這個號碼可以改變。
*
* hw.physicalcpu -物理處理器的電源管理模式可數。
* hw.physicalcpu_max -物理處理器,這會引導可用的最大數量
*
* hw.logicalcpu -邏輯處理器在當前的電源管理模式可數。
* hw.logicalcpu_max -邏輯處理器,這會引導可用的最大數量
*
* hw.tbfrequency -這給了由作業系統使用的時間頻率是所有定時服務的基礎。
*一般來說是更好地使用馬赫或更高級別的計時服務,但這個值
*需要將PPC的時基暫存器轉換為實時。
*
* hw.cpufrequency -這些值提供電流,最大和最小的CPU頻率。最小值和最大值分別為
* hw.cpufrequency_max所有電源管理模式。電流頻率是電流模式中的最大頻率。
* hw.cpufrequency_min所有頻率Hz。
*
* hw.busfrequency -這些值提供電流,最大和最小的匯流排頻率。最小值和最大值分別為
* hw.busfrequency_max所有電源管理模式。電流頻率是電流模式中的最大頻率。
* hw.busfrequency_min所有頻率Hz。
*
* hw.cputype -這些值提供Mach-O CPU型別和亞型。完整的列表在<馬赫/機器> >
* hw.cpusubtype -這些值應該被用來確定哪些處理器系列的CPU執行的是這樣
*最佳二進位制可以被選擇,或最好的動態程式碼生成。他們不應該被使用
*以確定給定的處理器功能是否可用。
* hw.cputhreadtype -這個值將出現如果處理器支援執行緒。像hw.cpusubtype這個選擇器
*不應該用來推斷特徵,只能用來命名處理器執行緒結構。
*值定義在<馬赫/機器> >
*
* hw.byteorder給處理器的位元組順序。4321大頭,1234小。
*
* hw.pagesize -給在由處理器和虛擬機器系統採用頁面位元組大小。
*
* hw.cachelinesize -給在處理器的快取記憶體行的位元組大小。
*這個值應該用來控制使用快取控制指令的迴圈的步幅
*喜歡dcbz,債或之間。
*
* hw.l1dcachesize -這些值提供在L1位元組大小,L2和L3快取。如果快取不存在
* hw.l1icachesize -然後選擇將返回錯誤。
* hw.l2cachesize—
* hw.l3cachesize—
*
* hw.packages給處理器的包數。
*
*這些是特定處理器可選處理器功能的選擇器。返回錯誤的選擇器不支援
*系統上。支援的功能將返回1,如果他們建議或0,如果他們支援,但預計不會幫助。
*效能。這些選擇器的將來版本可能需要返回更大的值,所以最好對非零進行測試。
*
* PowerPC:
*
* hw.optional.floatingpoint -浮點指令
* hw.optional.altivec - AltiVec指示
* hw.optional.graphicsops圖形操作
* hw.optional.64bitops - 64位指令
* hw.optional.fsqrt硬體浮點平方根指令
* hw.optional.stfiwx店浮點整數索引指示詞
* hw.optional.dcba資料快取塊分配指令
* hw.optional.datastreams -資料流指令
* hw.optional.dcbtstreams資料快取塊觸蒸指令形式
*
*x86架構:
*
* hw.optional.floatingpoint -浮點指令
* hw.optional.mmx原MMX向量指令
* hw.optional.sse -流SIMD擴充套件
* hw.optional.sse2 - Streaming SIMD Extens