1. 程式人生 > >kvm 虛擬機的性能調優

kvm 虛擬機的性能調優

中間 intel 虛擬化 sched 虛擬 app 內核 centos ans

性能優化說明

性能優化有兩個方面:1、linux 系統自帶 2、kvm 自帶優化。大多數的優化都是默認配置的,只是通過了解這些優化項來進一步了解linux 及kvm 虛擬化

CPU優化

場景1:

上下文切換:
宿主機
ring 0
ring 3

虛擬機
ring 0
ring 3
解決:vmware 虛擬機編輯處理器--虛擬化引擎--勾選 “虛擬化Intel VT-X/EPT 或AMD-V/RVI(V)”

場景2

緩存(分為三級):
cache miss 進程在一個cpu 上運行時,cpu 會產生該進程相關的緩存(數據、指令),當此進程跳轉到其他的cpu 運行時原cpu 的就會存在cache miss 現象,

所以通過cpu 綁定可以提高緩存命中率進而提高cpu性能

解決:
綁定在一個固定的物理cpu 核上(因為同一cpu物理核虛擬出來的邏輯cpu 內存是共享的)
taskset -cp 1 25718

缺點:失去靈活性。

內存優化

優化方式:

1、空間優化
2、尋址

尋址優化

EPT技術(vmware 虛擬機編輯處理器--虛擬化引擎--勾選 “虛擬化Intel VT-X/EPT 或AMD-V/RVI(V)”):

虛擬機:虛擬內存
虛擬機:物理內存
宿主機:虛擬內存
宿主機:物理內存

大頁內存(默認開啟)

[root@linux-node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

空間優化(默認開啟)

KSM內存合並
[ksmd]

I/O優化

virtio(默認開啟)

kvm 采用半虛擬化技術實現網絡、磁盤等io 調度算法
ps aux | grep virtio (lcentos 一般內核默認內置了此服務)

kvm I/O優化:

正常磁盤數據IO 流程:
虛擬機:application->OS pagecache-disk ->宿主機:virtual disk images->Host os pagecache->物理磁盤緩存->物理磁盤

可以根據需求直接跳過中間的步驟直接從某一步驟到後面的區域,這樣避免了斷電造成緩存數據丟失,但是犧牲了性能,畢竟數據先經過緩存比直接從磁盤讀取要快很多。

調度算法(linux 內核自帶)

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

算法用途:
Noop 先後順序,無其他算法。適用於ssd接口的硬盤(SSD很快,使用算法反而慢了)
CFG 公平算法
Deadline 讀的時間要短於寫,防止寫操作餓死,最早應用於數據庫服務器上,現在3.10 已經默認采用了
AS 3.10 已經棄用

查看當前系統存在的調度算法
[root@linux-node1 ~]# dmesg | grep -i scheduler
[ 1.945474] io scheduler noop registered
[ 1.945476] io scheduler deadline registered (default)
[ 1.945495] io scheduler cfq registered

查看當前使用的調度算法
[root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq

kvm 虛擬機的性能調優