it-swarm-fr.com

Que signifient les drapeaux dans / proc / cpuinfo?

Comment savoir si mon processeur a une fonction particulière? (Jeu d'instructions 64 bits, virtualisation assistée par matériel, accélérateurs cryptographiques, etc.) Je sais que le fichier /proc/cpuinfo contient ces informations, dans la ligne flags, mais que signifient toutes ces abréviations cryptiques?

Par exemple, étant donné l'extrait suivant de /proc/cpuinfo, ai-je un processeur 64 bits? Ai-je une virtualisation matérielle?

model name      : Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
…
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 lm constant_tsc Arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm tpr_shadow vnmi flexpriority

x86

(32 bits alias i386 – i686 et 64 bits alias AMD64. En d'autres termes, votre poste de travail, ordinateur portable ou serveur.)

FAQ: Dois-je…

  • 64 bits (x86_64/AMD64/Intel64)? lm
  • Virtualisation matérielle (VMX/AMD-V)? vmx (Intel), svm (AMD)
  • AES accéléré (AES-NI)? aes
  • TXT (TPM)? smx
  • un hyperviseur (annoncé comme tel)? hypervisor

La plupart des autres fonctionnalités ne sont intéressantes que pour les auteurs de compilateurs ou de noyaux.

Tous les drapeaux

La liste complète se trouve dans la source du noyau, dans le fichier Arch/x86/include/asm/cpufeatures.h .

Fonctionnalités CPU définies par Intel, niveau CPUID 0x00000001 (edx)

Voir aussi Wikipedia et le tableau 2-27 dans Intel Advanced Vector Extensions Programming Reference

Fonctionnalités CPU définies par AMD, niveau CPUID 0x80000001

Voir aussi Wikipedia et le tableau 2-23 dans Intel Advanced Vector Extensions Programming Reference

Fonctionnalités CPU définies par Transmeta, niveau CPUID 0x80860001

  • recovery: CPU en mode de récupération
  • longrun: Contrôle de puissance longue durée
  • lrti: interface de table LongRun

Autres fonctionnalités, mappage défini par Linux

  • cxmmx: extensions Cyrix MMX
  • k6_mtrr: AMD K6 non standard MTRR
  • cyrix_arr: Cyrix ARR (= MTRR)
  • centaur_mcr: Centaur MCRs (= MTRRs)
  • constant_tsc: TSC se déclenche à un taux constant
  • up: noyau SMP fonctionnant sur UP
  • art: Minuterie toujours active
  • Arch_perfmon: Intel Architectural PerfMon
  • pebs: échantillonnage basé sur des événements précis
  • bts: Branch Trace Store
  • rep_good: le microcode rep fonctionne bien
  • acc_power: mécanisme de puissance accumulée AMD
  • nopl: Les instructions NOPL (0F 1F)
  • xtopology: extensions d'énumération de topologie cpu
  • tsc_reliable: TSC est connu pour être fiable
  • nonstop_tsc: TSC ne s'arrête pas dans les états C
  • cpuid: le CPU a lui-même une instruction CPUID
  • extd_apicid: a étendu APICID (8 bits)
  • AMD_dcm: processeur multi-nœuds
  • aperfmperf: APERFMPERF
  • eagerfpu: restauration FPU non paresseuse
  • nonstop_tsc_s3: TSC ne s'arrête pas dans l'état S3
  • tsc_known_freq: TSC a une fréquence connue
  • mce_recovery: Le processeur a des vérifications de machine récupérables

Fonctionnalités CPU définies par Intel, niveau CPUID 0x00000001 (ecx)

Voir aussi Wikipedia et le tableau 2-26 dans Intel Advanced Vector Extensions Programming Reference

Fonctionnalités CPU définies par VIA/Cyrix/Centaur, niveau CPUID 0xC0000001

Drapeaux AMD plus étendus: niveau CPUID 0x80000001, ecx

  • lahf_lm: Charger AH depuis les drapeaux (LAHF) et stocker AH dans les drapeaux (SAHF) en mode long
  • cmp_legacy: Si oui HyperThreading non valide
  • svm: “Machine virtuelle sécurisée”: AMD-V
  • extapic: Espace APIC étendu
  • cr8_legacy: CR8 en mode 32 bits
  • abm: Manipulation avancée des bits
  • sse4a: SSE-4A
  • misalignsse: indique si une exception de protection générale (#GP) est générée lorsque certaines instructions héritées SSE fonctionnent sur des données non alignées. Dépend également de CR0 et du bit de vérification d'alignement
  • 3dnowprefetch: Instructions de prélecture 3DNow
  • osvw: indique Contournement visible du système d'exploitation , ce qui permet au système d'exploitation de contourner les erreurs de processeur.
  • ibs: échantillonnage basé sur les instructions
  • xop: instructions AVX étendues
  • skinit: instructions SKINIT/STGI
  • wdt: horloge de surveillance
  • lwp: profilage léger
  • fma4: 4 instructions opérandes MAC
  • tce: extension du cache de traduction
  • nodeid_msr: NodeId MSR
  • tbm: Manipulation des bits de fin
  • topoext: Extensions de topologie feuilles CPUID
  • perfctr_core: Extensions du compteur de performances de base
  • perfctr_nb: NB Extensions du compteur de performances
  • bpext: extension du point d'arrêt des données
  • ptsc: compteur d'horodatage des performances
  • perfctr_l2: Extensions du compteur de performances L2
  • mwaitx: MWAIT extension (MONITORX/MWAITX)

Drapeaux auxiliaires: définis par Linux - Pour les fonctionnalités dispersées dans différents niveaux CPUID

  • ring3mwait: Bague 3 MONITOR/MWAIT
  • cpuid_fault: Intel CPUID défaillant
  • cpb: AMD Core Performance Boost
  • epb: prise en charge IA32_ENERGY_PERF_BIAS
  • cat_l3: Technologie d'allocation de cache L3
  • cat_l2: Technologie d'allocation de cache L2
  • cdp_l3: Code et hiérarchisation des données L3
  • invpcid_single: effectivement invpcid et CR4.PCIDE=1
  • hw_pstate: AMD HW-PState
  • proc_feedback: AMD ProcFeedbackInterface
  • sme: AMD Secure Memory Encryption
  • pti: Isolation de la table des pages du noya (Kaiser)
  • retpoline: Retpoline atténuation pour Spectre variante 2 (branches indirectes)
  • retpoline_AMD: Atténuation AMD Retpoline
  • intel_ppin: Numéro d'inventaire du processeur Intel
  • avx512_4vnniw: Instructions pour le réseau neuronal AVX-512
  • avx512_4fmaps: AVX-512 Multiply Accumulation Simple précision
  • mba: Allocation de bande passante mémoire
  • rsb_ctxsw: Remplir RSB sur les commutateurs de contexte

Indicateurs de virtualisation: définis par Linux

  • tpr_shadow: Intel TPR Shadow
  • vnmi: Intel Virtual NMI
  • flexpriority: Intel FlexPriority
  • ept: Intel Extended Page Table
  • vpid: ID du processeur virtuel Intel
  • vmmcall: préférez VMMCALL à VMCALL

Fonctionnalités CPU définies par Intel, niveau CPUID 0x00000007: 0 (ebx)

Fonctionnalités d'état étendues, niveau CPUID 0x0000000d: 1 (eax)

  • xsaveopt: optimisé XSAVE
  • xsavec: XSAVEC
  • xgetbv1: XGETBV avec ECX = 1
  • xsaves: XSAVES/XRSTORS

Sous-feuille CPU QoS définie par Intel, niveau CPUID 0x0000000F: 0 (edx)

  • cqm_llc: LLC QoS

Sous-feuille CPU QoS définie par Intel, niveau CPUID 0x0000000F: 1 (edx)

  • cqm_occup_llc: Surveillance de l'occupation LLC
  • cqm_mbm_total: LLC surveillance totale de MBM
  • cqm_mbm_local: Surveillance MBM locale LLC

Fonctionnalités CPU définies par AMD, niveau CPUID 0x80000008 (ebx)

  • clzero: CLZERO instruction
  • irperf: compteur de performances retiré des instructions
  • xsaveerptr: toujours enregistrer/restaurer FP pointeurs d'erreur

Feuille Thermal and Power Management, CPUID level 0x00000006 (eax)

  • dtherm (anciennement dts): capteur thermique numérique
  • ida: Intel Dynamic Acceleration
  • arat: Toujours exécuter la minuterie APIC
  • pln: Notification Intel Power Limit
  • pts: État thermique du package Intel
  • hwp: états P du matériel Intel
  • hwp_notify: Notification HWP
  • hwp_act_window: Fenêtre d'activité HWP
  • hwp_epp: Préférence de performance énergétique HWP
  • hwp_pkg_req: Demande au niveau du package HWP

Identification des fonctionnalités AMD SVM, niveau CPUID 0x8000000a (edx)

  • npt: Prise en charge des tables de pages imbriquées AMD
  • lbrv: Prise en charge de la virtualisation AMD LBR
  • svm_lock: AMD SVM verrouillage MSR
  • nrip_save: Sauvegarde AMD SVM next_rip
  • tsc_scale: Prise en charge de la mise à l'échelle AMD TSC
  • vmcb_clean: Prise en charge des bits propres AMD VMCB
  • flushbyasid: Prise en charge AMD flush-by-ASID
  • decodeassists: AMD Decode Assists prend en charge
  • pausefilter: Interception de pause filtrée AMD
  • pfthreshold: seuil de filtre de pause AMD
  • avic: Virtual Interrupt Controller
  • vmsave_vmload: Virtual VMSAVE VMLOAD
  • vgif: GIF virtuel

Fonctionnalités CPU définies par Intel, niveau CPUID 0x00000007: 0 (ecx)

  • avx512vbmi: Instructions de manipulation des bits vectoriels AVX512
  • umip: Protection des instructions du mode utilisateur
  • pku: Clés de protection pour l'espace utilisateur
  • ospke: Activer les clés de protection du système d'exploitation
  • avx512_vbmi2: Instructions supplémentaires de manipulation des bits vectoriels AVX512
  • gfni: Nouvelles instructions du champ Galois
  • vaes: vecteur AES
  • vpclmulqdq: double mot de multiplication sans portage
  • avx512_vnni: Instructions pour le réseau neuronal vectoriel
  • avx512_bitalg: Instructions VPOPCNT [B, W] et VPSHUF-BITQMB
  • avx512_vpopcntdq: POPCNT pour les vecteurs de DW/QW
  • la57: Tableaux de pages à 5 niveaux
  • rdpid: instruction RDPID

Fonctionnalités CPU définies par AMD, niveau CPUID 0x80000007 (ebx)

  • overflow_recov: Prise en charge de la récupération de débordement MCA
  • succor: confinement et récupération des erreurs non corrigibles
  • smca: MCA évolutif

Bugs CPU détectés (définis par Linux)

  • f00f: Intel F00F
  • fdiv: CPU FDIV
  • coma: coma Cyrix 6x86
  • AMD_tlb_mmatch: tlb_mmatch AMD Erratum 383
  • AMD_apic_c1e: apic_c1e AMD Erratum 400
  • 11ap: Mauvais APIC local aka 11AP
  • fxsave_leak: FXSAVE fuit FOP/FIP/FOP
  • clflush_monitor: AAI65, CLFLUSH requis avant MONITOR
  • sysret_ss_attrs: SYSRET ne corrige pas les attr SS
  • espfix: "" IRET à SS 16 bits corrompt les bits hauts ESP/RSP
  • null_seg: Annuler un sélecteur préserve la base
  • swapgs_fence: SWAPGS sans entrée dep sur GS
  • monitor: IPI requis pour réveiller le CPU distant
  • AMD_e400: Le CPU est parmi les affectés par Erratum 400
  • cpu_meltdown: Le processeur est affecté par attaque de fusion et a besoin de l'isolement de la table des pages du noyau
  • spectre_v1: Le CPU est affecté par Spectre attaque variante 1 avec branches conditionnelles
  • spectre_v2: Le CPU est affecté par Spectre attaque variante 2 avec branches indirectes
  • spec_store_bypass: Le CPU est affecté par la vulnérabilité Speculative Store Bypass (Spectre variante 4).

P.S. Cette liste est dérivée de Arch/x86/include/asm/cpufeatures.h dans la source du noyau. Les drapeaux sont répertoriés dans le même ordre que le code source. Aidez-nous en ajoutant des liens vers les descriptions des fonctionnalités lorsqu'elles sont manquantes, en écrivant une courte description des fonctionnalités qui ont des noms inexpressifs et en mettant à jour la liste des nouvelles versions du noyau. La liste actuelle est de Linux 4.15 plus quelques ajouts ultérieurs.

ARM

Sur les processeurs ARM, quelques fonctionnalités sont mentionnées dans la ligne features:. Seules les fonctionnalités directement liées à l'architecture ARM) y sont mentionnées, pas fonctionnalités spécifiques à un fabricant de silicium ou système sur puce.

Les fonctionnalités sont obtenues en recherchant l'ID du processeur avec read_cpuid() et en le recherchant dans les définitions de type de processeur connues au moment de la compilation où les fonctionnalités sont exprimées comme un masque de HWCAP_xxx drapeaux. Les chaînes correspondantes sont en hwcap_str Etc. en setup.c .

Dans la liste ci-dessous, ARMv6 a présenté les instructions et les types de données SIMD. ARMv7 a fourni des instructions SIMD avancées et des types de données. Sur les machines 32 bits ARM, neon signale Advanced SIMD; tandis que asimd signale Advanced SIMD sur les machines à bras 64 bits.

Au-delà, la ligne Hardware: Indique le modèle de processeur. Selon le modèle, il peut y avoir d'autres informations dans d'autres fichiers sous /proc Ou /sys, Ou dans les messages du journal du noyau au démarrage. Malheureusement, chaque fabricant de CPU ARM possède sa propre méthode pour signaler les fonctionnalités du processeur, le cas échéant).

x86

Trouvez-le vous-même dans 4.1.3 x86 et le manuel d'Intel

Arch/x86/include/asm/cpufeature.h contient la liste complète.

Les valeurs définies sont de type:

X*32 + Y

Par exemple.:

#define X86_FEATURE_FPU     ( 0*32+ 0) /* Onboard FPU */

Les indicateurs de fonctionnalités, extraits de CPUID, sont stockés dans:

  • Champ __u32 x86_capability[NCAPINTS + NBUGINTS];
  • de struct cpuinfo_x86 boot_cpu_data
  • défini à x86/kernel/setup.c

qui est initialisé par les fonctions __init.

D'où vient chaque élément de tableau x86_capability:

| index | eax      | ecx | output | file        |
|-------|----------|-----|--------|-------------|
|     0 |        1 |   0 | edx    | common.c    |
|     1 | 80000001 |     | edx    | common.c    |
|     2 | 80860001 |     | edx    | transmeta.c |
|     3 |          |     |        |             |
|     4 |        1 |   0 | ecx    | common.c    |
|     5 | C0000001 |     | edx    | centaur.c   |
|     6 | 80000001 |     | ecx    | common.c    |
|     7 |          |     |        | scattered.c |
|     8 |          |     |        |             |
|     9 |        7 |   0 | ebx    | common.c    |
|    10 |        D |   1 | eax    | common.c    |
|    11 |        F |   0 | edx    | common.c    |
|    12 |        F |   1 | edx    | common.c    |

Remarques:

Conclusions:

  • la plupart des entrées proviennent directement des registres de sortie CPUID et sont définies dans common.c par quelque chose comme:

    c->x86_capability[0] = edx;
    

    Celles-ci sont faciles à trouver en lot sur le manuel Intel pour CPUID.

  • les autres sont dispersés dans la source et sont définis bit à bit avec set_cpu_cap.

    Pour les trouver, utilisez git grep X86_FEATURE_XXX À l'intérieur de Arch/x86.

    Vous pouvez généralement déduire à quel bit CPUID ils correspondent du code environnant.

Autres faits amusants

  • Les drapeaux sont en fait imprimés à Arch/x86/kernel/cpu/proc.c Avec le code:

    seq_puts(m, "flags\t\t:");
    for (i = 0; i < 32*NCAPINTS; i++)
        if (cpu_has(c, i) && x86_cap_flags[i] != NULL)
            seq_printf(m, " %s", x86_cap_flags[i]);
    

    Où:

    • cpu_has Effectue la vérification principale de la fonctionnalité.
    • x86_cap_flags[i] Contient des chaînes qui correspondent à chaque indicateur.

    Ceci est passé en tant que rappel à la configuration système proc. Le point d'entrée est à fs/proc/cpuinfo.c.

  • Les chaînes x86_cap_flags Sont générées par Arch/x86/kernel/cpu/mkcapflags.h Directement à partir de Arch/x86/include/asm/cpufeature.h En les "analysant" avec sed...

    La sortie va à Arch/x86/kernel/cpu/capflags.c Du répertoire de construction, et le tableau résultant ressemble à:

    const char * const x86_cap_flags[NCAPINTS*32] = {
        [X86_FEATURE_FPU]        = "fpu",
        [X86_FEATURE_VME]        = "vme",
    

    ainsi, par exemple, X86_FEATURE_FPU correspond à la chaîne "fpu" et ainsi de suite.

  • cpu_has Se décompose en deux cas avec le code:

    #define cpu_has(c, bit)                         \
        (__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 :  \
        test_cpu_cap(c, bit))
    

    Elles sont:

    • __builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit): l'indicateur est requis pour que le noyau s'exécute.

      Ceci est déterminé par les données contenues dans required-features.h, Qui commentent:

      Define minimum CPUID feature set for kernel These bits are checked
      really early to actually display a visible error message before the
      kernel dies.  Make sure to assign features to the proper mask!
      

      Comme ceux-ci sont connus au moment de la compilation (exigences du noyau), ont déjà été vérifiés au démarrage, le contrôle peut être résolu au moment de la compilation si bit est connu au moment de la compilation.

      Ainsi la __builtin_constant_p(bit) qui vérifie si bit est une constante de temps de compilation.

    • test_cpu_cap: Cela utilise CPUID les données du global struct cpuinfo_x86 boot_cpu_data

Ou bien vous pouvez utiliser le programme cpuid, il doit être dans le dépôt debian. Il affiche toutes les informations possibles sur votre processeur avec quelques explications, de sorte que vous n'obtenez pas ces drapeaux obscurs.

10
hurufu

La meilleure réponse est la meilleure "La liste complète est dans la source du noyau, dans le fichier Arch/x86/include/asm/cpufeatures.h ." Utilisez-le et les manuels Internet/processeur pour comprendre la signification de chaque indicateur.

Ajout d'une réponse pour compléter les réponses existantes avec un exemple spécifique du serveur HP Proliant G8 Intel Xeon pour afficher la sortie lscpu et comparer lscpu/flags de cette machine en tant que VM Host et VM fonctionnant dessus. Openstack qemu-kvm est le serveur de virtualisation qui s'exécute ici.

  • Processeur (s): 24 vs 22

    2 CPU épinglés pour le contrôleur openstack sur VM Host. 24 CPU au total. Dans VM peut voir 22 CPU disponibles).

  • Les fils/noyaux/supports/NUMA montrent différents. (voir ci-dessous)

  • Le modèle, le nom du modèle, le pas à pas, le processeur MHz, la taille du cache L2 sont différents. (voir plus ci-dessous)

    sur l'hôte: modèle: 45 nom du modèle: processeur Intel (R) Xeon (R) E5-2640 0 à 2,50 GHz

    sur VM: Modèle: 42 Nom du modèle: Intel Xeon E312xx (Sandy Bridge, mise à jour IBRS)

  • DRAPEAUX

    • 2 drapeaux supplémentaires sur VM:

    • 31 drapeaux manquants sur la VM:

      • dts: Debug Store (tampon pour les instructions de débogage et de profilage)
      • acpi: ACPI via MSR (surveillance de la température et modulation de la vitesse d'horloge) https://wiki.osdev.org/ACPI ACPI (Configuration avancée et interface d'alimentation) est une norme de gestion et de configuration de l'alimentation pour le PC
      • ht: Hyper-Threading et/ou multi-core
      • tm: Contrôle automatique de l'horloge (moniteur thermique)
      • pbe: Prise en charge du réveil en attente d'activation de pause (broche PBE #)
      • Arch_perfmon: Intel Architectural PerfMon
      • pebs: échantillonnage basé sur des événements précis
      • bts: Branch Trace Store
      • nonstop_tsc: TSC ne s'arrête pas dans les états C TSC = Timestamp Counter (un registre Intel) https://wiki.osdev.org/TSC
      • aperfmperf: APERF et MPERF sont des registres MSR "APERF et MPERF sont des registres MSR qui peuvent fournir des informations sur la fréquence actuelle du processeur."
      • dtes64: magasin de débogage 64 bits
      • moniteur: prise en charge de Monitor/Mwait (suppléments Intel SSE3)
      • ds_cpl: CPL Qual. Debug Store - CPL est le niveau de privilège actuel (bits dans le registre CS)
      • vmx: Virtualisation matérielle: Intel VMX
      • smx: Mode plus sûr: TXT (Trusted Execution Technology) (prise en charge TPM (Trusted Platform Module))
      • est: Enhanced SpeedStep
      • tm2: Thermal Monitor 2
      • xtpr: envoyer des messages de priorité de tâche
      • pdcm: capacités de performance
      • dca: accès direct au cache
      • epb: prise en charge IA32_ENERGY_PERF_BIAS
      • tpr_shadow: Intel TPR Shadow TPR = Registre de priorité des tâches
      • vnmi: Intel Virtual NMI https://wiki.osdev.org/NMI (Interruption non masquable)
      • flexpriority: Intel FlexPriority Intel Virtualization Technology
      • ept: Intel Extended Page Table
      • vpid: ID de processeur virtuel Intel
      • dtherm: (anciennement dts) capteur thermique numérique
      • ida: Intel Dynamic Acceleration
      • pln: Intel Power Limit Notification
      • pts: État thermique du package Intel
      • flush_l1d: Vider le cache L1 (niveau 1) D (données)

sortie complète lscpu:

[[email protected] ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 24
On-line CPU(s) list: 0-23
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 45
Model name: Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz
Stepping: 7
CPU MHz: 2375.000
CPU max MHz: 2500.0000
CPU min MHz: 1200.0000
BogoMIPS: 4987.53
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 15360K
NUMA node0 CPU(s): 0-5,12-17
NUMA node1 CPU(s): 6-11,18-23
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 smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts spec_ctrl intel_stibp flush_l1d    openstack compute-node VM

[[email protected] ~]$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                22 
On-line CPU(s) list:   0-21
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             22
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 42
Model name:            Intel Xeon E312xx (Sandy Bridge, IBRS update)
Stepping:              1
CPU MHz:               2493.748
BogoMIPS:              4987.49
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
L3 cache:              16384K
NUMA node0 CPU(s):     0-21
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm ssbd ibrs ibpb stibp tsc_adjust xsaveopt arat spec_ctrl intel_stibp
1
gaoithe