ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가상화를 지원하는 CPU인가요?
    2014. 6. 16. 0 comments

    linux에서 시스템 cpu의 스펙과 특성을 확인할 수 있는 방법이 있다.

    직관적이고 매우 간단하다. cat /proc/cpuinfo 명령으로 정보를 확인할 수 있다.


    morenice@ubuntu-morenice:~$ cat /proc/cpuinfo


    processor       : 0

    vendor_id       : AuthenticAMD

    cpu family      : 16

    model           : 4

    model name      : AMD Phenom(tm) II X4 925 Processor

    stepping        : 2

    cpu MHz         : 2731.284

    cache size      : 512 KB

    physical id     : 0

    siblings        : 2

    core id         : 0

    cpu cores       : 2

    apicid          : 0

    initial apicid  : 0

    fpu             : yes

    fpu_exception   : yes

    cpuid level     : 5

    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 fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni lahf_lm cmp_legacy cr8_legacy

    bogomips        : 5462.56

    TLB size        : 1024 4K pages

    clflush size    : 64

    cache_alignment : 64

    address sizes   : 48 bits physical, 48 bits virtual

    power management:


    processor       : 1

    vendor_id       : AuthenticAMD

    cpu family      : 16

    model           : 4

    model name      : AMD Phenom(tm) II X4 925 Processor

    stepping        : 2

    cpu MHz         : 2731.284

    cache size      : 512 KB

    physical id     : 0

    siblings        : 2

    core id         : 1

    cpu cores       : 2

    apicid          : 1

    initial apicid  : 1

    fpu             : yes

    fpu_exception   : yes

    cpuid level     : 5

    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 fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni lahf_lm cmp_legacy cr8_legacy

    bogomips        : 5468.60

    TLB size        : 1024 4K pages

    clflush size    : 64

    cache_alignment : 64

    address sizes   : 48 bits physical, 48 bits virtual

    power management:



    여기서 오늘은 flags를 살펴볼 것이다. flags는 cpu에서 어떤 기능을 지원하는지를 표시해주는 것이다.


    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 fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni lahf_lm cmp_legacy cr8_legacy


    제목과 같이 "가상화를 지원하는 CPU인가요?" 의 답을 내기 위해서는 cpuinfo에서 Hardware virtualization에 대한 flags를 찾아봐야 한다.

    • intel : vmx(Hardware virtualization)
    • AM : svm(Secure virtual machine)


    즉, vmx와 svm 키워드로 가상화를 지원하는 CPU인지를 확인할 수 있다.


    egrep '(vmx|svm)' --color=always /proc/cpuinfo


    위의 예시에서는 hardware virtualization은 지원하지 않기 때문에 flags에 vmx와 svm이 없다.




    Virtualization Guest OS?

    그렇다면 CPU flags 정보를 통해서 가상화의 Guest OS인것도 알아낼수 있을까??

    hypervisor(Running on a hypervisor)라는 flags로써 구분할 수 있다는 카더라 통신을 확인하고  알고 있는 환경들을 통하여 확인을 해보았다.


    egrep 'hypervisor' --color=always /proc/cpuinfo 


    Linux Xen, Linux Rhev(or KVM), Windows Hyper-V, vSPhere, Virtualbox 5가지 환경에 대해서 Guest VM에 접근하여 확인을 하였다. 이 중에서 virtualbox를 제외하고 모두 hypervisor라는 cpu를 찾을 수 있었다. Virtualbox에서는 설정에서 VT-X/AMV-V 가속을 사용하는 걸로 되어 있는데 hypervisor flag가 왜 없을까라는 의문점을 남긴 채 확인을 마무리 하였다. hypervisor라는 키워드만으로는 VM으로 동작 중임을 모두 확인할 수 없다. 




    See also



    반응형

    댓글 0

Designed by Tistory.