Nombre de processeurs dans / proc / cpuinfo

Pendant que j'apprenais sur la charge de processeur, j'ai appris que cela dépend du nombre de cœurs. Si j'ai 2 cœurs, alors la charge 2 donnera 100% d'utilisation de cpu.

J'ai donc essayé de find des coeurs (je sais déjà que le système a 2 coeurs, 4 threads donc 2 coeurs virtuels ici ). Donc j'ai couru cat /proc/cpuinfo Ce qui m'a donné

 processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 69 model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz stepping : 1 microcode : 0x17 cpu MHz : 774.000 cache size : 4096 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid bogomips : 3591.40 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 69 model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz stepping : 1 microcode : 0x17 cpu MHz : 1600.000 cache size : 4096 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid bogomips : 3591.40 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 2 vendor_id : GenuineIntel cpu family : 6 model : 69 model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz stepping : 1 microcode : 0x17 cpu MHz : 800.000 cache size : 4096 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 2 initial apicid : 2 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid bogomips : 3591.40 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 69 model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz stepping : 1 microcode : 0x17 cpu MHz : 774.000 cache size : 4096 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 3 initial apicid : 3 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid bogomips : 3591.40 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: 

Maintenant, je suis totalement confus. Il montre 4 processeurs, avec 2 cœurs de processeur. Quelqu'un peut-il expliquer cette sortie?

Une fois que ma charge de processeur était de 3,70, est-ce que cette charge maximale? Toujours à ce moment cpu était à <50%.

Qu'en est-il du turbo boost? Tous les cœurs sont-ils turbo ou seulement physiques?

Toute méthode dans Ubuntu pour get la fréquence CPU actuelle pour voir si le processeur est sur turbo ou pas?

La charge était de 3,70 à environ 100%. Mais l'utilisation du processeur n'était pas 100% en raison du time de réponse des E / S. Cela ne signifie pas que le périphérique IO sera à la vitesse maximale, mais le périphérique io sera occupé à 100%, ce qui affecte parfois les applications utilisant IO ex: la musique peut se casser.

Les mots "CPU", "processeur" et "kernel" sont utilisés de manière assez confuse. Ils se réfèrent à l'architecture du processeur. Un kernel est la plus petite unité indépendante qui implémente un processeur à usage général; un processeur est un assemblage de kernelx (sur certains systèmes ARM, un processeur est un assemblage de clusters qui sont eux-mêmes des assemblages de kernelx). Une puce peut contenir un ou plusieurs processeurs (les puces x86 contiennent un seul processeur, dans ce sens du traitement de text ).

Hyperthreading signifie que certaines parties d'un core sont dupliquées. Un kernel avec hyperthreading est parfois présenté comme un assemblage de deux «kernelx virtuels», ce qui signifie que chaque kernel n'est pas virtuel mais que le pluriel est virtuel parce que ce ne sont pas réellement des kernelx séparés et ils doivent parfois attendre pendant que l'autre kernel est en utilisant une partie partagée.

En ce qui concerne les logiciels, il n'y a qu'un seul concept utile presque partout: la notion de threads parallèles d'exécution. Ainsi, dans la plupart des manuels de logiciels, les termes processeur et processeur sont utilisés pour désigner n'importe quel matériel qui exécute le code du programme. En termes matériels, cela signifie un kernel, ou un kernel virtuel avec hyperthreading.

Ainsi, top vous montre 4 CPU, car vous pouvez exécuter 4 threads en même time. /proc/cpuinfo a 4 inputs, une pour chaque CPU (dans ce sens). Les numéros de processor (qui sont le nombre d'inputs cpu NUMBER dans /sys/devices/system/cpu ) correspondent à ces 4 threads.

/proc/cpuinfo est l'un des rares endroits où vous obtenez des informations sur ce que le matériel implémente ces threads d'exécution:

 physical id : 0 siblings : 4 core id : 0 cpu cores : 2 

signifie que cpu0 est l'un des 4 threads à l'intérieur du composant physique (processeur) numéro 0, et c'est dans le coeur 0 parmi 2 dans ce processeur.

Juste répondre à votre première question. Dans la sortie de cat /proc/cpuinfo vous pouvez voir les informations suivantes: –

 physical id : 0 siblings : 4 core id : 0 cpu cores : 2 

Vous pouvez voir le nombre de siblings is 4 et siblings is 4 et les cpu cores is 2 . cpu cores étant 2 est ce nombre total de cœurs dans le processeur qui peut être vérifié à partir de la spécification donnée dans l'URL de l'intel que vous avez donné. De même siblings est celui déterminé par le nombre de threads qui est fourni par HTT d'Intel.

De même, pour l'identifiant physique, son 0 qui indique qu'il n'y a qu'une seule puce de processeur et pour les ID de base, vous pouvez voir 0 and 1 c'est-à-dire 2 cœurs dans le processeur.

Mise à jour: Ajout de réponses aux autres questions.

Qu'en est-il du turbo boost? Tous les cœurs sont-ils turbo ou seulement physiques?

Eh bien, je dirais que tous les cœurs actifs sont turbo-boostés. Hey mon pote, tu devrais avoir vérifié les exemples de notre bien-aimé Wikipédia . Expliqué avec des calculs aussi.

 Any method in ubuntu to get current cpu freq. if processor is on turbo boost or not. 

Turbo boost ou pas, vous pouvez les détails de lscpu dans la sortie de lscpu . Et pour un résultat raffiné: –

 lscpu | grep Hz 

Vous pouvez essayer ceci dans le terminal:

sudo lscpu

Cela vous donnera un aperçu de votre trait physique de processeur. En ce qui concerne le turbo boost ou non, il s'agit d'un contrôle purement matériel par rapport au operating system lui-même. Donc, à less d'avoir des pilotes spécifiques pour Linux qui permettent d'ajuster la vitesse de votre processeur, il n'y a pas de piste solide pour vérifier l'état du turbo boost Vérifiez d'autres forums s'il y a des indices concernant votre question).

Quant à moi, c'est ce que je reçois quand je tape la command ci-dessus. Mon AMD a dit qu'il est quad core, mais mon kernel physique répertorié ici est seulement 2, avec 2 threads par core (ajoute jusqu'à 4 cœurs). J'utilise le processeur AMD A10 APU 5750m.

 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: AuthenticAMD CPU family: 21 Model: 19 Stepping: 1 CPU MHz: 2500.000 BogoMIPS: 4990.51 Virtualization: AMD-V L1d cache: 16K L1i cache: 64K L2 cache: 2048K NUMA node0 CPU(s): 0-3 

La charge du système et le% cpu sont deux façons différentes de mesurer la consommation de votre processeur.

  • charge du système: combien de process par processeur ont été en état "prêt" – moyenné sur une certaine période. Jusqu'à 1 * CPU (dans votre cas jusqu'à 4), le système est considéré comme presque inactif (comparer avec un supermarché où en moyenne un seul client attend à chaque caisse). Vous ne remarquerez probablement aucun retard jusqu'à 2 * cpu (dans votre cas 8).
  • cpu%: combien de time le cpus fonctionne réellement en exécutant un process. C'est comme le sharepoint vue des caissiers – ou plutôt celui de leur superviseur – ils veulent qu'ils soient occupés tout le time.

Les deux mesures sont liées, mais nullement identiques.