저는 Proxmox와 일부 VM을 실행하고 있습니다. 모든 서비스에 대한 SSL 오프로딩을 처리하는 nginx 프록시를 설정하고 싶습니다. VM 중 하나에서 실행하면 호스트에서 직접 실행하는 것과 달리 하드웨어 기반 암호화가 없어 성능에 심각한 영향을 미치는지 궁금합니다. 호스트를
보면 다음 항목이 표시됩니다./proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 113
model name : AMD Ryzen 5 3600 6-Core Processor
stepping : 0
microcode : 0x8701021
cpu MHz : 3352.873
cache size : 512 KB
physical id : 0
siblings : 12
core id : 6
cpu cores : 6
apicid : 13
initial apicid : 13
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 pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 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 sme ssbd mba sev ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 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 wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips : 7187.19
TLB size : 3072 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]
/proc/cpuinfo
VM에는 훨씬 적은 수의 플래그가 표시됩니다. 즉, 플래그 aes
도 누락되었습니다.
processor : 5
vendor_id : AuthenticAMD
cpu family : 15
model : 6
model name : Common KVM processor
stepping : 1
microcode : 0x1000065
cpu MHz : 3593.248
cache size : 512 KB
physical id : 0
siblings : 6
core id : 5
cpu cores : 6
apicid : 5
initial apicid : 5
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 mmx fxsr sse sse2 ht syscall nx lm rep_good nopl cpuid extd_apicid tsc_known_freq pni cx16 x2apic hypervisor cmp_legacy 3dnowprefetch vmmcall
bugs : fxsave_leak sysret_ss_attrs swapgs_fence spectre_v1 spectre_v2
bogomips : 7186.49
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
답변1
몇 가지 테스트를 수행한 후 내 질문에 답합니다. 내 설정: 일부 VM 및 LXC 컨테이너가 포함된 proxmox 상자입니다. 처음에는 VM 중 하나 내에 프록시를 설정했습니다. 가상화된 프로세서로 인해 성능이 크게 저하되었습니다. 프록시를 proxmox의 LXC 컨테이너에 넣고 가상화의 KVM 계층을 제거한 후 proxmox에 7GB iso를 업로드해 보았습니다. nginx 작업자 프로세스는 코어 하나의 50%를 사용하는 반면, VM에서는 nginx 작업자 프로세스가 몇 배 더 느린 속도로 전체 코어를 차지하는 동안 속도가 엄청나게 빨랐습니다.
편집:
이는 proxmox 기본 CPU 유형을 선택할 때만 해당됩니다 kvm64
. 추가로 조사한 결과, CPU 유형이 다를 수 있는 다른 호스트로 실시간 VM 마이그레이션을 활성화하기 위해 이 작업이 기본적으로 수행된다는 사실을 알게 되었습니다. KVM 에뮬레이트 CPU에는 플래그가 적지만 어디에서나 작동이 보장됩니다. 모든 CPU 플래그를 VM에 전달하는
CPU 유형을 변경하여 host
무엇보다도 하드웨어 기반 암호화를 활성화할 수 있습니다.
원천