医者も
テストするには、サーバーのCPUアーキテクチャに関する情報をシミュレートする必要があります。これを達成する唯一の方法はlscpuコマンド(lscpu | grep Architecture
模擬スキーマを返す必要があります。)。 lscpuが/proc/cpuinfo
データを取得することを知っていますが、sysf
見つかりませんでした。正確には何ですか?lscpuが他のアーキテクチャを返すように変更する必要がありますか?
コンテキスト
ユーザーが使用しているCPUアーキテクチャを簡単に確認しています。私はこれを確認することでこれをしますif 'arm' =~ (lscpu | grep Architecture | awk '{print $2}')
。私が紹介したいマイナーなチェックです。しかし、問題は、さまざまなタイプのスキーマに対してさまざまなチェックを実行する方法がわからないことです。
私が試したこと:
- mockを使用してlscpuファイルを事前に準備し、
echo Architecture: <Different architecture>
$ PATHに追加します。テスト中のアプリケーションは別の$ PATHを使用するため、機能しません。 - エミュレーションを使用してlscpuファイルを事前に準備し、
lscpu | sed -r <expression to change Architecture>
それを元のlscpuにバインドします。sudo mount --bind <mockedlscpu> /usr/bin/lscpu
この場合、すべてのlscpu
呼び出しがシステムを停止します。 - lscpuとは異なるコマンドを使用する - テストされたアプリケーションは明示的にlscpuを使用します。
これが唯一の方法は/proc/cpuinfoのデータをシミュレートすることです(以下のサンプル出力:「CPUアーキテクチャ」フィールドはありません)。
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アーキテクチャデータが変更される特定の場所が見つかりません。可能ですか?では、このデータは正確にどこに保存され、どのようにシミュレートできますか?すべてのアイデアを高く評価します!