大页(Huge Page)简单介绍
?
x86(包括x86-32和x86-64)架構(gòu)的CPU默認(rèn)使用4KB大小的內(nèi)存頁面(getconf PAGESIZE),但是它們也支持較大的內(nèi)存頁,如x86-64系統(tǒng)就支持2MB大小的大頁(huge page)。
Linux 2.6及以上的內(nèi)核都支持huge page
如果在系統(tǒng)中使用了huge page,則內(nèi)存頁的數(shù)量會減少,從而需要更少的頁表(page table),節(jié)約了頁表所占用的內(nèi)存數(shù)量,并且所需的地址轉(zhuǎn)換也減少了,TLB緩存失效的次數(shù)就減少了,從而提高了內(nèi)存訪問的性能。
另外,由于地址轉(zhuǎn)換所需的信息一般保存在CPU的緩存中,huge page的使用讓地址轉(zhuǎn)換信息減少,從而減少了CPU緩存的使用,減輕了CPU緩存的壓力,讓CPU緩存能更多地用于應(yīng)用程序的數(shù)據(jù)緩存,也能夠在整體上提升系統(tǒng)的性能。
?
在KVM中,也可以將huge page的特性應(yīng)用到客戶機(jī)中:
qemu-kvm 就提供了"-mempath FILE"參數(shù)選項用于使用huge page
另外,還有一個參數(shù)"-mem-prealloc"可以讓宿主機(jī)在啟動客戶機(jī)時就全部分配好客戶機(jī)的內(nèi)存,而不是在客戶機(jī)實際用到更多內(nèi)存時才按需分配。
-mem-prealloc 必須在有"-mem-path" 參數(shù)時才能使用
提前分配好內(nèi)存的好處是客戶機(jī)的內(nèi)存訪問速度更快,缺點是客戶機(jī)啟動時就得到了所有的內(nèi)存,從而讓宿主機(jī)的內(nèi)存很快減少(而不是根據(jù)客戶機(jī)的需求而動態(tài)調(diào)整內(nèi)存分配)。
?
通過在宿主機(jī)中的如下幾個操作讓客戶機(jī)使用huge page
(1)檢查宿主機(jī)目前狀態(tài),檢查默認(rèn)的內(nèi)存大小和內(nèi)存使用情況,如下:
getconf ?PAGESIZE
cat ?/proc/meminfo
?
?
(2)(在宿主機(jī)中)掛載hugetlbfs文件系統(tǒng),命令為:
"mount ?-t hugetlbfs ?hugetlbfs ?/dev/hugepages",
如下:
mount ?-t hugetlbfs ?hugetlbfs ?/dev/hugepages
mount|grep? huge
( 3 )設(shè)置(在宿主機(jī)中設(shè)置允許虛擬機(jī)使用的)hugepage的數(shù)量,命令為"sysctl vm.nr_hugepages=num", 如下:
?
?
?
( 4 )啟動客戶機(jī)讓其使用hugepage的內(nèi)存,使用"-mem-path" 參數(shù),如下:
qemu-system-x86_64 ?-m 1024 ?-smp 2? /opt/cs-01.img ?-mem-path /dev/hugepages
( 5 )查看宿主機(jī)中huge page的使用情況,可以看到"HugePages_Free"數(shù)值減少,因為客戶機(jī)使用了一定數(shù)最的hugepage。
在如下的輸出中,"HugePages_Free"數(shù)值的減少沒有512(512*2MB=1024MB)那么多,這是因為啟動客戶機(jī)時并沒有實際分配1024MB內(nèi)存,qemu-kvm命令行中加上前面提到的"-mem-prealloc"參數(shù)就會讓meminfo文件中"HugePages_Free"的數(shù)量減少和分配給客戶機(jī)的一致
?
?
至此,如果在客戶機(jī)中運行的應(yīng)用程序(典型的應(yīng)用為oracle數(shù)據(jù)庫)具備使用huge page的能力,那么就可以在客戶機(jī)中使用huge page帶來性能的提升。
總的來說,對于內(nèi)存訪問密集型的應(yīng)用,在KVM客戶機(jī)中使用huge page是可以較明顯地提高客戶機(jī)性能的,不過,它也有一個缺點,使用huge page的內(nèi)存不能被換出(swap out),也不能使用ballooning方式自動增長。
轉(zhuǎn)載于:https://www.cnblogs.com/wyzhou/p/9596575.html
總結(jié)
以上是生活随笔為你收集整理的大页(Huge Page)简单介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue+ElementUI实现文件的下载
- 下一篇: U3D GPU蒙皮