太;博士

太;博士

太;博士

我需要在服务器上模拟有关 CPU 架构的信息以进行测试。我可以实现它的唯一方法是更改​​有关 CPU 架构的信息源,该信息源由 lscpu 命令使用(lscpu | grep Architecture必须返回模拟架构)。我知道 lscpu 从/proc/cpuinfo和获取数据sysf,但我找不到到底是什么我需要更改,让 lscpu 返回不同的体系结构?

语境

我正在对用户使用的 CPU 架构进行简单的检查。我是通过检查来做到这一点的if 'arm' =~ (lscpu | grep Architecture | awk '{print $2}')。这是我想介绍的琐碎检查。然而,问题是,我不知道如何对不同类型的架构执行不同的检查。

我尝试做的事情:

  1. 使用模拟预先准备 lscpu 文件echo Architecture: <Different architecture> 并将其添加到 $PATH - 测试的应用程序使用不同的 $PATH,因此它无效。
  2. 预先准备带有模拟的 lscpu 文件lscpu | sed -r <expression to change Architecture>,并将其绑定到原始 lscpu 上sudo mount --bind <mockedlscpu> /usr/bin/lscpu- 在这种情况下,每个lscpu调用都会挂起机器。
  3. 使用与 lscpu 不同的命令 - 测试的应用程序明确使用 lscpu。

这就是我假设唯一的方法是模拟 /proc/cpuinfo 中的数据(下面的示例输出:没有“CPU Architecture”字段):

processor   : 31
vendor_id   : AuthenticAMD
cpu family  : 25
model       : 33
model name  : AMD Ryzen 9 5950X 16-Core Processor
stepping    : 0
microcode   : 0xa201025
cpu MHz     : 4065.719
cache size  : 512 KB
physical id : 0
siblings    : 32
core id     : 15
cpu cores   : 16
apicid      : 31
initial apicid  : 31
fpu     : yes
fpu_exception   : yes
cpuid level : 16
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca fsrm
bugs        : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips    : 6787.39
TLB size    : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]

或 sysfs,让 lscpu 正常运行并输出模拟数据。但是我找不到这个CPU架构数据改变的具体位置——有可能吗?如果是,这些数据存储的确切位置是什么,以及如何模拟它?每个想法都会受到赞赏!

相关内容