欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

應(yīng)用PMDK修改WAL操作使之適配持久化內(nèi)存

應(yīng)用PMDK修改WAL操作使之適配持久化內(nèi)存

這幾個(gè)補(bǔ)丁能夠通過使用PMDK對(duì)存儲(chǔ)在持久化內(nèi)存PMEM上的WAL日志進(jìn)行讀寫。PMEM是下一代存儲(chǔ)介質(zhì),具有一系列特性:快速、字節(jié)尋址、非易失。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的浮山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Pgbench是PG的通用benchmark,使用benchmark進(jìn)行測(cè)試,這些補(bǔ)丁修改后的PG比原生PG性能提升5%。使用我們的insert benchmark,能夠比原生PG快90%。下面進(jìn)行詳細(xì)描述。

這個(gè)e-mail包括以下幾部分:

A)PMDK

B)補(bǔ)丁

C)測(cè)試方法及結(jié)果

PMDK

PMDK提供函數(shù)使應(yīng)用能夠直接訪問PMEM,無需通過內(nèi)核作為內(nèi)存。API包括:

1)open PMEM文件的API、create PMEM文件的API、map PMEM文件到虛擬地址的API

????PMDK利用DAX文件系統(tǒng)特性提供這些API函數(shù)。DAX文件系統(tǒng)對(duì)PMEM敏感,允許直接訪問PMEM,而不使用內(nèi)核的page cache??梢允褂脴?biāo)準(zhǔn)的mmap函數(shù)將DAX文件系統(tǒng)中的文件映射到內(nèi)存。更進(jìn)一步說,通過將PMEM中的文件映射到虛擬地址,應(yīng)用可以使用CPU的 load/store指令替代read/write訪問PMEM。

2)讀寫 PMEM文件的API

PMDK提供API:類似memcpy()函數(shù),通過single instruction、multiple data instruction、NT storage instruction 將數(shù)據(jù)拷貝到PMEM。這些指令能夠提升拷貝性能。因此這些API比read/write更快。API參考:

[1] http://pmem.io/pmdk/

[2]https://www.usenix.org/system/files/login/articles/login_summer17_07_rudoff.pdf

[3] SIMD: 對(duì)加載數(shù)據(jù)進(jìn)行操作的單指令。如果SIMD系統(tǒng)一次加載8字節(jié)數(shù)據(jù)到寄存器,那么到PMEM的存儲(chǔ)操作會(huì)同時(shí)對(duì)所有8字節(jié)值進(jìn)行。

[4] NT store instructions: 該指令跳過CPU cache,因此使用該指令不需要flush。

補(bǔ)丁

補(bǔ)丁修改:

0001-Add-configure-option-for-PMDK.patch:添加--with-libpmem配置,通過pmdk庫執(zhí)行IO

0002-Read-write-WAL-files-using-PMDK.patch:

使用PMDK函數(shù)對(duì)WAL進(jìn)行IO操作

wal_sync_method參數(shù)增加pmem-drain,用于標(biāo)明PMEM上wal sync方式。

0003-Walreceiver-WAL-IO-using-PMDK.patch:

????對(duì)于備機(jī)的walreciver進(jìn)程,使用PMDK寫日志。

執(zhí)行方式及結(jié)果

???環(huán)境:

? Server: HP ProLiant DL360 Gen9

CPU: ???Xeon E5-2667 v4 (3.20GHz); 2 processors(without HT)

DRAM: ??DDR4-2400; 32 GiB/processor

????????(8GiB/socket x 4 sockets/processor) x 2 processors

NVDIMM: DDR4-2133; 32 GiB/processor

????????(8GiB/socket x 4 sockets/processor) x 2 processors

HDD: ???Seagate Constellation2 2.5inch SATA 3.0. 6Gb/s 1TB 7200rpm x 1

OS: ????Ubuntu 16.04, linux-4.12

DAX FS: ext4

NVML: ??master(at)Aug 30, 2017

PostgreSQL: master

Note: I bound the postgres processes to one NUMA node, and the benchmarks to other NUMA node.

?

1)配置pmem,將之作為一個(gè)塊設(shè)備

????# ndctl list

# ndctl create-namespace -f -e namespace0.0 --mode=memory -M dev

2)在pmem上創(chuàng)建一個(gè)文件系統(tǒng),以DAX方式掛載

????# mkfs.ext4 /dev/pmem0

# mount -t ext4 -o dax /dev/pmem0 /mnt/pmem0

3)設(shè)置PMEM_IS_PMEM_FORCE,表示W(wǎng)AL文件存放在PMEM上

???注意,沒有設(shè)置這個(gè)環(huán)境變量,PG的進(jìn)程啟動(dòng)不起來

???# export PMEM_IS_PMEM_FORCE=1

4)安裝PG

???安裝Pg時(shí)有3個(gè)重要注意事項(xiàng):

a. Configure時(shí)添加--with-libpmem:"./configure --with-libpmem"

b. 將WAL目錄存放到PMEM上

c. 將wal_sync_method參數(shù)由fdatasync改為pmem_drain

???具體操作:

# cd /path/to/[PG_source dir]

# ./configure --with-libpmem

# make && make install

# initdb /path/to/PG_DATA -X /mnt/pmem0/path/to/[PG_WAL dir]

# cat /path/to/PG_DATA/postgresql.conf | sed -e s/#wal_sync_method\ =\

fsync/wal_sync_method\ =\ pmem_drain/ > /path/to/PG_DATA/postgresql.conf.

tmp

# mv /path/to/PG_DATA/postgresql.conf.tmp /path/to/PG_DATA/postgresql.conf

# pg_ctl start -D /path/to/PG_DATA

# created [DB_NAME]

5)執(zhí)行2個(gè)benchmark,一個(gè)是pgbench,一個(gè)是my insert benchmark

??Pgbench:

??????# numactl -N 1 pgbech -c 32 -j 8 -T 120 -M prepared [DB_NAME]

??????執(zhí)行pgbench三次的平均值:

??????wal_sync_method=fdatasync: ??tps = 43,179

wal_sync_method=pmem_drain: ?tps = 45,254

??pclinet_thread:my insert benchmark

??????準(zhǔn)備:

??????CREATE TABLE [TABLE_NAME] (id int8, value text);

ALTER TABLE [TABLE_NAME] ALTER value SET STORAGE external;

PREPARE insert_sql (int8) AS INSERT INTO %s (id, value) values ($1, '

[1K_data]');

執(zhí)行:

BEGIN; EXECUTE insert_sql(%lld); COMMIT;

Note: I ran this quer 5M times with 32 threads.

?

# ./pclient_thread

Invalid Arguments:

Usage: ./pclient_thread [The number of threads] [The number to insert

tuples] [data size(KB)]

# numactl -N 1 ./pclient_thread 32 5242880 1

?

測(cè)試三次的平均值:

wal_sync_method=fdatasync: ??tps = ?67,780

wal_sync_method=pmem_drain: ?tps = 131,962

?

Attachment

Content-Type

Size

0001-Add-configure-option-for-PMDK.patch

application/octet-stream

5.1?KB

0002-Read-write-WAL-files-using-PMDK.patch

application/octet-stream

46.9?KB

0003-Walreceiver-WAL-IO-using-PMDK.patch

application/octet-stream

4.8?KB

?

?

?

?

?

?

原文

https://www.postgresql.org/message-id/C20D38E97BCB33DAD59E3A1%40lab.ntt.co.jp

網(wǎng)頁題目:應(yīng)用PMDK修改WAL操作使之適配持久化內(nèi)存
標(biāo)題網(wǎng)址:http://www.aaarwkj.com/article16/goojdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、虛擬主機(jī)、網(wǎng)站策劃品牌網(wǎng)站建設(shè)、微信小程序網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
不卡一区二区福利日本| 日本一区两区三区不卡视频| 免费高清日本一区二区三区视频| 97久久精品人妻一区二区三区| 国产精品一区二区久久| 91久久一区二区秋霞免费| 日韩精品专区在线影院重磅| 在线观看视频免费午夜| 日韩在线视频一区二区三| av中文字幕一二三区| 97免费公开在线观看| 国语对白刺激真实精品| 亚洲一区二区精品999| 欧美日韩在线不卡成人| 国产91日韩欧美在线观看| 国产成人久久久精品一区| 精品不卡一区二区三区| 日日淫夜夜操熟女视频| 亚洲一区二区三区日韩精品| 日本激情精品在线观看| 国产亚洲成人精品久久| 欧美亚洲另类日韩综合网| 人妻中文字幕视频在线| 香港精品国产三级国产av| 国产97成人亚洲综合在线| 日本加勒比一道本东京热| av免费在线不卡一区| 亚洲精品乱码精品乱码不卡| 九九免费在线视频观看| 久久青青草原一区二区| 调教亚洲另类唯美第二页| 久久亚洲中文字幕乱码| 久久午夜视频在线观看| 亚洲一区二区在线视频在线观看| 色婷婷精品一区二区三区| 上海老熟女啪啪露脸高潮| 欧美中日韩精品免费在线| 黄片免费视频大全在线观看| 亚洲精品一区二区99| 动漫美女视频在线看黄| 在线看日本十八禁网站|