虛擬化KVM之優化(三)

 

 KVM的優化

1.1 cpu的優化

  • inter的cpu的運行級別,(Ring2和Ring1暫時沒什麼用)Ring3爲用戶態,Ring0爲內核態 

Ring3的用戶態是沒有權限管理硬件的,須要切換到內核態Ring0,這樣的切換(系統調用)稱之爲上下文切換,物理機到虛擬機屢次的上下文切換,勢必會致使性能出現問題。node

對於全虛擬化,inter實現了技術VT-x,在cpu硬件上實現了加速轉換,CentOS7默認是不須要開啓的linux

  • cpu的緩存綁定cpu的優化
[root@linux-node1 qemu]# lscpu|grep cache
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K

L1是靜態緩存,造價高,L2,L3是動態緩存,經過脈衝的方式寫入0和1,造價較低。cache解決了cpu處理快,內存處理慢的問題,相似於memcaced和數據庫。若是cpu調度器把進程隨便調度到其餘cpu上,而不是當前L1,L2,L3的緩存cpu上,緩存就不生效了,就會產生miss,爲了減小cache miss,須要把KVM進程綁定到固定的cpu上,可使用taskset把某一個進程綁定(cpu親和力綁定,能夠提升20%的性能)在某一個cpu上,例如:taskset -cp 1 25718(1指的是cpu1,也能夠綁定到多個cpu上,25718是指的pid). 
cpu綁定的優勢:提升性能,20%以上 
cpu綁定的缺點:不方便遷移,靈活性差web

 1.2 內存優化

內存尋址:算法

宿主機虛擬內存 -> 宿主機物理內存 
虛擬機的虛擬內存 -> 虛擬機的物理內存 數據庫

之前VMM經過採用影子列表解決內存轉換的問題,影子頁表是一種比較成熟的純軟件的內存虛擬化方式,但影子頁表固有的侷限性,影響了VMM的性能,例如,客戶機中有多個CPU,多個虛擬CPU之間同步頁面數據將致使影子頁表更新次數幅度增長,測試頁表將帶來異常嚴重的性能損失。vim

在此之際,Inter在最新的Core I7系列處理器上集成了EPT技術(對應AMD的爲RVI技術),以硬件輔助的方式完成客戶物理內存到機器物理內存的轉換,完成內存虛擬化,並以有效的方式彌補了影子頁表的缺陷,該技術默認是開啓的centos

 

  • KSM內存合併 

宿主機上默認會開啓ksmd進程,該進程做爲內核中的守護進程存在,它按期執行頁面掃描,識別副本頁面併合並副本,釋放這些頁面以供它用,CentOS7默認是開啓的緩存

[root@linux-node1 qemu]# ps aux|grep ksmd|grep -v grep
root         31  0.0  0.0      0     0 ?        SN   07:07   0:00 [ksmd]
  • 大頁內存,CentOS7默認開啓的
[root@linux-node1 qemu]# cat /sys/kernel/mm/transparent_hugepage/enabled 
[always] madvise never

1.3 I/O優化

IO調度算法,也叫電梯算法,詳情請看http://www.unixhot.com/article/4
① Noop Scheduler:簡單的FIFO隊列,最簡單的調度算法,因爲會產生讀IO的阻塞,通常使用在SSD硬盤,此時不須要調度,IO效果很是好 
② Anticipatory IO Scheduler(as scheduler)適合大數據順序順序存儲的文件服務器,如ftp server和web server,不適合數據庫環境,DB服務器不要使用這種算法。 
③ Deadline Schedler:按照截止時間的調度算法,爲了防止出現讀取被餓死的現象,按照截止時間進行調整,默認的是讀期限短於寫期限,就不會產生餓死的情況,通常應用在數據庫 
④ Complete Fair Queueing Schedule:徹底公平的排隊的IO調度算法,保證每一個進程相對特別公平的使用IO服務器

2.6 內核: Noop CFQ AS Deadline 默認:CFQ
3.10內核: Noop CFQ Deadline 默認:Deadlineoop

 

[root@linux-node1 qemu]# dmesg|grep -i "scheduler"  #查看本機Centos7默認所支持的調度算法
[    1.207359] io scheduler noop registered
[    1.207362] io scheduler deadline registered (default)
[    1.207404] io scheduler cfq registered
[root@linux-node1 qemu]# cat /sys/block/sda/queue/scheduler  #centos 7 默認是deadline
noop [deadline] cfq 

 

虛擬磁盤及鏡像

一開始建立的虛擬磁盤就是鏡像

[root@linux-node1 data]# ls centos-7-x86_64
centos-7-x86_64

鏡像製做原則

  • 分區的時候,只分一個/根分區,並不須要swap分區,因爲虛擬機的磁盤性能就很差,若是設置了swap分區,當swap工做的時候,性能會更差。例如阿里雲主機,就沒有交換分區。
  • 鏡像製做須要刪除網卡(eth0)中的UUID,若是有udev(/etc/udev/rules.d/70-persistent-ipoib.rules)的規則也要刪除
  • 關閉selinux,關閉iptables
  • 安裝基礎軟件的包:net-tools lrzsz screen tree vim wget
相關文章
相關標籤/搜索