OpenStack Kilo新特性解讀和分析(1)

  1. hyper-v支持增強
    支持第二代虛擬機(通過提供新的固件),通過定義在OpenStack中的屬性(hw_machine_type={hyper-gen1,hyper-gen2})來決定是創建一代虛擬機,還是二代虛擬機,默認爲一代,另外,虛擬機的格式要求是VHDX,而且二代虛擬機不再允許掛在IDE設備,只能掛在SCSI設備。
    目前只有以下操作系統支持創建二代虛擬機:
    (1)Windows Server 2012/Windows 8 and above
    (2)Newer Linux Kernel
    二代虛擬機的主要優勢: a) 支持安全引導 b) 減少啓動時間 c) 支持跟分區的在線擴展(live resize) d) 使用UEFI代替BIOS
    另外一個比較游泳的特性就是:下電hyper-v的主機的時候,先關閉運行在上面的虛擬機的功能
    1. NFV相關功能的增強(目前全部在Nova實現)
      OpenStack社區專門成立了TelcoWorkingGroup用來負責NFV相關功能的定義,需求提出,代碼review和patch,開發進度跟蹤等等職責。
      2.1 NUMA感知的調度(NUMA based scheduling)
      主要用來解決帶有PCI 設備綁定的虛擬機儘量從同一個NUMA node分配CPU和內存資源,來提高虛擬機的性能。典型的應用場景就是NFV,比如pci網卡passthrough等
      2.2 綁定guest vCPU到物理機的CPU(spinning vCPU to host pCPU)
      這個功能通過flavor的補充屬性來實現的,比如給flavor增加如下屬性:
      hw:cpu_policy=shared|dedicated (shared爲默認策略 )
      hw:cpu_threads_policy=avoid|seperated|isolate|prefer
      默認情況下,所有的vCPU都被虛擬成1core and 1 thread的socket,但是如果有了cpu綁定,物理cpu的拓撲將會影響guest cpu的拓撲,比如一個2 vCPU的guest被綁定到一個2個thread的core上,那麼這個guest cpu的拓撲就是1 socket,1 core和2 threads。
      cpu_threads_policy將會影響的guest的調度,調度的時候會考慮到物理cpu的thread,比如:
      (1)avoid: 調度器將不會將guest調度到帶有超線程特性的物理機上
      (2)separate: 如果物理機的core支持超線程,那麼同一guest的vCPU將會被分到不同的core上
      (3)isolate: 如果物理機的core支持超線程,那麼同一guest的vCPU將會被分到不同的core上,並且其他guest的vCPU不再允許調度到當前的core上
      (4)prefer: 如果物理機支持超線程,那麼同一個guest的vCPU將盡可能的被調度到相同的core上。
      這個功能會引入很多應用場景,管理員希望對host根據不同的特性進行分組,比如dedicated cpu的一組,shared cpu的host一組; 再比如dedicated ram的host一組,share ram的host一組,所以還需要藉助host aggregate的功能。(Dedicated ram相關具體參見:http://www.linux-kvm.org/page/UsingLargePages
  2. 大頁內存支持(Large Page Support)
    這個功能主要是爲了提高Guest OS的性能,通過給Guest OS分配Large Page的內存來實現,原理是:內存頁越大,那麼TLB hit rate將會越高。
    同時由於Large Page本身獨佔的特性,即Large Page不會被swap out,那麼如果某個Large Page被分配給了某個進程,那麼這個進程將獨佔這個Large Page映射的物理內存,即不會再給其他進程使用,也不會被OS使用。基於這些特性,所以Large Page Support的功能非常適合性能要求比較高的場景,在OpenStack環境裏,就非NFV莫屬了。
    在x86體系結構下,page size默認爲4k,large page size可以是2M或者1G,一般採用2M。
    通過flavor的屬性:hw:mem_page_size=large|small|any|2MB|1GB,來決定guest os是否使用large page,以及large page size。
    這裏需要注意,small默認的page size,就是4k,any對於libvirt來說,首先會使用large page,如果不支持,就使用small page.
    ————————————————————
    email: [email protected]
    微博:@Marshal-Liu
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章