日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php7hugepage,HugePage简介和KVM中使用HugePage

發(fā)布時間:2023/12/20 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php7hugepage,HugePage简介和KVM中使用HugePage 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在KVM的測試中,有一項是要測試huge page的使用,所以對Huge Page(巨頁)做了一些了解,結(jié)合網(wǎng)上的一些資料進(jìn)行總結(jié)一下。

現(xiàn)在,有許多的處理器架構(gòu)都支持多種的內(nèi)存頁大小,其中就包括比一般的page size大很多的huge page。就目前來說,盡管在個人電腦中基本都實現(xiàn)了對huge page的支持,然而,huge page的使用主要還是在一些大型服務(wù)器和計算機集群中使用。

1.查看huge page的size是多大? Linux中,可以通過 cat /pro/meminfo | grep Hugepagesize 來查看。

通常情況下,是2048kB即2MB (不同的處理器架構(gòu),可能不一樣) 注:較新的硬件平臺已經(jīng)支持1GB page了。

另外,一般的內(nèi)存頁大小為4kB,可以通過命令:getconf PAGE_SIZE 來查看,一般是4096Byte

也可以通過C程序調(diào)用sysconf()函數(shù)來查詢,示例代碼如下

C

#include

#include /* sysconf(3) */

int main(void) {

printf("The page size for this system is %ld bytes.\n",

sysconf(_SC_PAGESIZE)); /* _SC_PAGE_SIZE is OK too. */

return 0;

}

1

2

3

4

5

6

7

8

9

#include

#include /* sysconf(3) */

intmain(void){

printf("The page size for this system is %ld bytes.\n",

sysconf(_SC_PAGESIZE));/* _SC_PAGE_SIZE is OK too. */

return0;

}

2.huge page的相關(guān)信息:

Shell

cat /proc/meminfo | grep Huge

HugePages_Total: 1024

HugePages_Free: 1024

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB

1

2

3

4

5

6

cat/proc/meminfo|grepHuge

HugePages_Total:1024

HugePages_Free:1024

HugePages_Rsvd:0

HugePages_Surp:0

Hugepagesize:2048kB

解釋一下顯示輸出中的幾個參數(shù)的意義吧。

HugePages_Total: Hugepage的頁面數(shù)量

HugePages_Free: 剩余的頁面數(shù)量

HugePages_Rsvd: 被分配預(yù)留但是還沒有使用的page數(shù)目

HugePages_Surp:HugePages_Total減去/proc/sys/vm/nr_hugepages中的值(我對這個理解也不很清楚)。

Hugepagesize: 每單位數(shù)量大小

3.設(shè)置了多少的huge page,free內(nèi)存就會被使用多少。

比如:我使用sysctl vm.nr_hugepages=1024 之后,free命令可以看到free的內(nèi)存會減少2048MB。(這也和Hugepagesize的大小有關(guān))

4.使用Hugepages的內(nèi)存頁是不會被交換出去到磁盤的,永遠(yuǎn)常駐在內(nèi)存中,所以也減少了內(nèi)存頁交換的額外開銷。使用hurgepage的內(nèi)存不能被其他的進(jìn)程使用,所以,一定要合理設(shè)置這個值,避免造成浪費。使用超過8G物理內(nèi)存的系統(tǒng),有人推薦使用HugePage。

HugePages_Free - HugePages_Rsvd部分的內(nèi)存是浪費的,且不能被其他程序使用。在實際應(yīng)用中,盡可能讓HugePages_Free - HugePages_Rsvd=0

5.HugePage的好處:

大大提高了CPU cache中存放的page table所覆蓋的內(nèi)存大小,從而提高了TLB命中率。進(jìn)程的虛擬內(nèi)存地址段先連接到page tables然后再連接到物理內(nèi)存。所以在訪問內(nèi)存時需要先訪問page tables得到虛擬內(nèi)存和物理內(nèi)存的映射關(guān)系,然后再訪問物理內(nèi)存。CPU cache中有一部分TLB(Translation Lookaside Buffer)用來存放部分page table以提高這種裝換的速度。因為page size變大了,所以同樣大小的TLB,所覆蓋的內(nèi)存大小也變大了。提高了TBL命中率,也就是提高了地址轉(zhuǎn)換的速度。

系統(tǒng)進(jìn)程是通過虛擬地址訪問內(nèi)存,但是CPU必須把它轉(zhuǎn)換程物理內(nèi)存地址才能真正訪問內(nèi)存。為了提高這個轉(zhuǎn)換效率,CPU會緩存最近的虛擬內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系,并保存在一個由CPU維護(hù)的映射表中。為了盡量提高內(nèi)存的訪問速度,需要在映射表中保存盡量多的映射關(guān)系。

6.Linux kernel 2.6.X 通過hugetlbfs文件系統(tǒng)對Huge pages進(jìn)行了支持。當(dāng)然Windows也有相應(yīng)的支持,此處暫不詳述。

7.如何設(shè)置huge pages?

首先mount一個hugetlbfs文件系統(tǒng): mount -t hugetlbfs hugetlbfs /dev/hugepages

然后為huge pages保留一定數(shù)量的內(nèi)存:sysctl vm.nr_hugepages=1024

(另一個操作方法,在/etc/sysctl.conf加入如下配置就可以:vm.nr_hugepages=1024 修改后,用命令sysctl -p 使得設(shè)置生效)

(或者,改動linux啟動的grub參數(shù)也是可以的,加上 hugepages=1024 這樣的參數(shù))

8.KVM如何讓guest使用huge pages ?

首先,讓host開啟huge pages(像上面那樣設(shè)置)

在qemu啟動時加上參數(shù),示例:qemu-system-x86_64 -m 2048 -hda /mnt/rhel6.img -mem-path /dev/hugepages

如果是用libvirt來啟動KVM的,那么需要在啟動guest的XML配置文件中添加如下的參數(shù):

XHTML

1

2

3

(啟動guest后,可以發(fā)現(xiàn),在host中的cat /pro/meminfo看到的HugePages_Free數(shù)量有所減少)

9.很多Oracle DBA對hugepages比較關(guān)心的,他們也寫了些關(guān)于huge pages的東西,可以看看后面的參考資料,有DBA建議將huge pages的大小設(shè)置為SGA的大小。關(guān)于Oracle的SGA這些細(xì)節(jié),我也不甚了解:TheSGA(System Global Area) is an area of memory (RAM) allocated when an Oracle Instance starts up. The SGA's size and function are controlled by initialization (INIT.ORA or SPFILE) parameters.

一些參考資料:

http://en.wikipedia.org/wiki/Huge_pages

http://www.mjmwired.net/kernel/Documentation/vm/hugetlbpage.txt

http://space.itpub.net/231499/viewspace-366360

http://space.itpub.net/23650854/viewspace-689545

http://fedoraproject.org/wiki/Features/KVM_Huge_Page_Backed_Memory

總結(jié)

以上是生活随笔為你收集整理的php7hugepage,HugePage简介和KVM中使用HugePage的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。