• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于GPU數(shù)據(jù)庫(kù)系統(tǒng)的并發(fā)查詢性能優(yōu)化

    2018-08-15 08:02:30李逸龍何震瀛王曉陽(yáng)1
    關(guān)鍵詞:數(shù)據(jù)庫(kù)系統(tǒng)調(diào)用進(jìn)程

    李逸龍 張 凱 何震瀛 王曉陽(yáng)1,,4

    1(復(fù)旦大學(xué)軟件學(xué)院 上海 201203)2(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 201203)3(上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室 上海 200433)4(上海智能電子與系統(tǒng)研究院 上海 201203)

    0 引 言

    由于物理工藝的限制,近年來CPU的性能已經(jīng)難以得到大幅提升。然而,在大數(shù)據(jù)時(shí)代數(shù)據(jù)量快速增長(zhǎng),這使得CPU越來越難以應(yīng)對(duì)日益增長(zhǎng)的數(shù)據(jù)處理需求。與此同時(shí),利用通用計(jì)算圖形處理器(GPGPU)的并行處理能力來加速計(jì)算任務(wù)成為研究熱點(diǎn)。由于GPU極大地提升了計(jì)算性能,數(shù)據(jù)庫(kù)研究領(lǐng)域也出現(xiàn)了大量用GPU對(duì)查詢計(jì)算任務(wù)進(jìn)行加速的研究。跟傳統(tǒng)的CPU數(shù)據(jù)庫(kù)相比,GPU數(shù)據(jù)庫(kù)在查詢?nèi)蝿?wù)執(zhí)行中展現(xiàn)出非常顯著的加速效果。

    利用GPU加速SQL運(yùn)算符的執(zhí)行速度,YDB系統(tǒng)[1]實(shí)現(xiàn)了一個(gè)基于GPU的數(shù)據(jù)庫(kù)系統(tǒng),跟CPU版本的實(shí)現(xiàn)相比,能夠達(dá)到大約2~6倍的查詢速度提升。為了進(jìn)一步提高GPU的資源利用率,出現(xiàn)了以支持并發(fā)查詢?yōu)槟繕?biāo)的研究成果,其中突出的系統(tǒng)有MultiQx-GPU[2]和Ocelot[3]。以MultiQx-GPU系統(tǒng)為例,該系統(tǒng)實(shí)現(xiàn)了并發(fā)查詢之間分時(shí)共享GPU資源的機(jī)制,提升了GPU的資源利用率和系統(tǒng)性能。

    然而MultiQx-GPU系統(tǒng)的架構(gòu)設(shè)計(jì)仍然導(dǎo)致了一些問題和缺陷。首先,MultiQx-GPU在每個(gè)查詢?nèi)蝿?wù)進(jìn)程中都需要?jiǎng)?chuàng)建CUDAContext以發(fā)起后續(xù)GPU調(diào)用,耗時(shí)較大。其次,該系統(tǒng)雖然能夠讓并發(fā)的查詢?nèi)蝿?wù)之間分時(shí)共享GPU資源,但是在不同查詢?nèi)蝿?wù)中重復(fù)傳輸了數(shù)據(jù)庫(kù)中相同的列存儲(chǔ)數(shù)據(jù),不但浪費(fèi)了PCIe總線帶寬,還大量占用了GPU資源。以上兩點(diǎn)不足會(huì)造成系統(tǒng)對(duì)GPU整體的資源利用率較低。

    針對(duì)以上不足,本文將基于MultiQx-GPU系統(tǒng),提出一種改進(jìn)架構(gòu)的HyperQx-GPU系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。該系統(tǒng)能夠統(tǒng)一管理GPU硬件資源,減少了每個(gè)查詢?nèi)蝿?wù)單獨(dú)管理GPU的開銷,提升了單個(gè)查詢的執(zhí)行效率。同時(shí),該系統(tǒng)能夠根據(jù)系統(tǒng)中實(shí)時(shí)的查詢?nèi)蝿?wù)運(yùn)行情況,實(shí)現(xiàn)跨并發(fā)查詢?nèi)蝿?wù)的數(shù)據(jù)庫(kù)列存儲(chǔ)數(shù)據(jù)共享,減少系統(tǒng)整體的PCIe數(shù)據(jù)傳輸量,進(jìn)一步提升了系統(tǒng)性能。

    系統(tǒng)架構(gòu)方面,該系統(tǒng)采用C/S的架構(gòu)設(shè)計(jì),將數(shù)據(jù)庫(kù)系統(tǒng)分為查詢處理客戶端和數(shù)據(jù)庫(kù)服務(wù)端,兩端用IPC機(jī)制進(jìn)行通信,使得兩個(gè)部分的優(yōu)化可以互不影響地進(jìn)行。跟MultiQx-GPU系統(tǒng)的函數(shù)庫(kù)實(shí)現(xiàn)方式相比,降低了系統(tǒng)組件之間的耦合性,增強(qiáng)了系統(tǒng)功能的可擴(kuò)展性。

    實(shí)驗(yàn)結(jié)果證明,本文實(shí)現(xiàn)的HyperQx-GPU系統(tǒng)能夠大大提升GPU的整體資源利用率。對(duì)比MultiQx-GPU系統(tǒng),HyperQx-GPU系統(tǒng)在執(zhí)行并發(fā)SQL查詢的情況下能達(dá)到平均12倍的性能提升。

    1 背景和相關(guān)工作

    1.1 GPU硬件結(jié)構(gòu)及編程框架

    CPU和GPU的硬件架構(gòu)具有很大差異,具體情況如圖1所示。相比于CPU大量邏輯控制單元和緩存單元的硬件架構(gòu),GPU包含更多計(jì)算核心和高性能內(nèi)存單元,因而更適合被用于處理批量數(shù)據(jù)的密集型并行計(jì)算。以NVIDIAGTX TITAN X型號(hào)GPU為例,該GPU擁有3 584個(gè)計(jì)算核心,并行計(jì)算能力非常強(qiáng)。其還擁有具有5 005 MHz時(shí)鐘頻率和384 bit傳輸位寬的高性能內(nèi)存單元,相比于通常CPU搭配的DDR4內(nèi)存,前者能夠達(dá)到更高的內(nèi)存數(shù)據(jù)訪問速度。

    圖1 GPU內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu)

    在目前的GPGPU領(lǐng)域中,最常用的編程框架為OpenCL和CUDA[4]?;诟鶰ultiQx-GPU對(duì)比的目的,本文設(shè)計(jì)的系統(tǒng)實(shí)現(xiàn)過程中采用了CUDA編程框架,因此此處以CUDA為例進(jìn)行介紹。在CUDA編程模型中,程序代碼會(huì)被編譯為CPU運(yùn)行的宿主程序和GPU運(yùn)行的程序,其中GPU中運(yùn)行的函數(shù)被稱為kernel。GPU作為協(xié)處理器,執(zhí)行計(jì)算任務(wù)時(shí)需要CPU上運(yùn)行的宿主程序通過CUDA提供的API進(jìn)行驅(qū)動(dòng),因此其整體上是一個(gè)異構(gòu)的編程模型。

    CUDA程序運(yùn)行時(shí),其宿主程序調(diào)用的所有CUDAAPI會(huì)被放到一個(gè)stream內(nèi)。CUDA編程中的一個(gè)stream代表一串連續(xù)的CUDA API調(diào)用命令,同一個(gè)stream內(nèi)的CUDAAPI調(diào)用會(huì)被GPU串行地調(diào)度執(zhí)行。宿主程序可以創(chuàng)建多個(gè)stream,在不同的stream里發(fā)起的命令在沒有數(shù)據(jù)依賴的情況下,會(huì)被GPU調(diào)度器并發(fā)執(zhí)行,從而提升GPU的資源利用率。在CUDA編程中,一個(gè)常用的優(yōu)化手段為利用多個(gè)stream同時(shí)發(fā)起互相不存在依賴關(guān)系的PCIe數(shù)據(jù)傳輸和kernel調(diào)用,使兩者可以同時(shí)執(zhí)行,從而有效利用GPU的數(shù)據(jù)帶寬和計(jì)算資源。

    1.2 GPU數(shù)據(jù)庫(kù)系統(tǒng)

    基于GPU的高性能計(jì)算能力,大量研究開始利用GPU加速數(shù)據(jù)庫(kù)的join和sort等SQL操作符[5-8]以及事務(wù)的執(zhí)行[9]。此后,不少研究考慮將GPU作為數(shù)據(jù)庫(kù)查詢執(zhí)行的主要硬件[10-11],如前所述的YDB是典型的設(shè)計(jì)與實(shí)現(xiàn)。相比于CPU數(shù)據(jù)庫(kù)系統(tǒng),YDB系統(tǒng)能顯著地提升查詢?nèi)蝿?wù)執(zhí)行效率。然而其缺點(diǎn)也很明顯,即串行執(zhí)行查詢?nèi)蝿?wù)時(shí),每個(gè)任務(wù)獨(dú)占GPU硬件資源,無法充分利用GPU計(jì)算和PCIe數(shù)據(jù)傳輸帶寬等資源。

    為了提升GPU的資源利用率,需要支持并發(fā)的查詢請(qǐng)求。目前支持并發(fā)查詢請(qǐng)求的GPU數(shù)據(jù)庫(kù)系統(tǒng)主要有MultiQx-GPU和Ocelot。以MultiQx-GPU為例,該系統(tǒng)通過動(dòng)態(tài)鏈接庫(kù)攔截的機(jī)制,在執(zhí)行SQL查詢?nèi)蝿?wù)前通過LD_PRELOAD環(huán)境變量預(yù)加載系統(tǒng)提供的動(dòng)態(tài)鏈接庫(kù),攔截了查詢?nèi)蝿?wù)發(fā)起的CUDARuntimeAPI調(diào)用,實(shí)現(xiàn)了并發(fā)的查詢?nèi)蝿?wù)間協(xié)同管理GPU資源的機(jī)制,使得不同任務(wù)進(jìn)程之間可以共享GPU資源。與YDB相比,MultiQx-GPU在執(zhí)行并發(fā)查詢?nèi)蝿?wù)時(shí)能夠達(dá)到平均55%的系統(tǒng)吞吐量提升。MultiQx-GPU的系統(tǒng)架構(gòu)如圖2所示,虛線上方為系統(tǒng)實(shí)現(xiàn)部分,下方為CUDA提供的運(yùn)行時(shí)環(huán)境。

    圖2 MultiQx-GPU系統(tǒng)架構(gòu)

    盡管MultiQx-GPU系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)得到了實(shí)驗(yàn)結(jié)果的驗(yàn)證,但是該系統(tǒng)所達(dá)到的GPU資源利用率仍然還有很大的提升空間。具體而言,其待改進(jìn)之處主要有以下兩點(diǎn):(1) 在不同查詢?nèi)蝿?wù)中重復(fù)傳輸可共享的只讀的數(shù)據(jù)庫(kù)列存儲(chǔ)數(shù)據(jù),造成PCIe總線的帶寬資源浪費(fèi)。圖3展示了HyperQx-GPU系統(tǒng)中(關(guān)閉列存儲(chǔ)數(shù)據(jù)共享功能)一次查詢?nèi)蝿?wù)的執(zhí)行時(shí)間線。從圖中可看出,在334 ms的查詢?nèi)蝿?wù)執(zhí)行時(shí)間中(不包括創(chuàng)建CUDA Context的時(shí)間),CPU內(nèi)存到GPU內(nèi)存的PCIe數(shù)據(jù)傳輸操作占據(jù)了超過75%的時(shí)間(262 ms)。因?yàn)閿?shù)據(jù)庫(kù)中的計(jì)算任務(wù)通常涉及大量的列數(shù)據(jù)掃描和表之間的連接等操作,在執(zhí)行實(shí)際的SQL操作之前需要傳輸大量的列存儲(chǔ)數(shù)據(jù)到GPU內(nèi)存,計(jì)算結(jié)束之后還需要把結(jié)果數(shù)據(jù)從GPU內(nèi)存?zhèn)鬏敾谻PU內(nèi)存。大量的PCIe數(shù)據(jù)傳輸使得本來就稀缺的PCIe總線帶寬成為了該系統(tǒng)執(zhí)行查詢?nèi)蝿?wù)時(shí)的性能瓶頸。(2)MultiQx-GPU系統(tǒng)中的每個(gè)查詢?nèi)蝿?wù)進(jìn)程獨(dú)立調(diào)用CUDARuntimeAPI來使用GPU資源,使得每個(gè)進(jìn)程均需要?jiǎng)?chuàng)建獨(dú)立的CUDAContext,增加查詢?nèi)蝿?wù)的執(zhí)行時(shí)間,進(jìn)而影響系統(tǒng)的整體性能。

    圖3 MultiQx-GPU系統(tǒng)PCIe數(shù)據(jù)傳輸時(shí)間線

    為了支持高性能的分析型查詢?nèi)蝿?wù),數(shù)據(jù)庫(kù)系統(tǒng)通常采用列存儲(chǔ)的數(shù)據(jù)格式,以減少掃描等查詢操作在單條記錄上的執(zhí)行時(shí)間[11]。比如SQL語句中的where語句,通常會(huì)解析后生成進(jìn)行列掃描的SQL操作,其特點(diǎn)是在某一列的所有數(shù)據(jù)上做同樣的操作,符合向量計(jì)算模型。如果利用GPU的高性能并行計(jì)算能力來執(zhí)行此掃描操作,其執(zhí)行效率能夠得到數(shù)量級(jí)的提升。

    2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    2.1 系統(tǒng)架構(gòu)

    HyperQx-GPU系統(tǒng)整體上采用C/S架構(gòu)的設(shè)計(jì)。在查詢?nèi)蝿?wù)端,利用動(dòng)態(tài)鏈接庫(kù)的設(shè)計(jì)達(dá)到系統(tǒng)對(duì)查詢?nèi)蝿?wù)進(jìn)程透明的效果,不會(huì)侵入查詢?nèi)蝿?wù)的代碼邏輯。查詢進(jìn)程通過動(dòng)態(tài)鏈接庫(kù)與數(shù)據(jù)庫(kù)服務(wù)進(jìn)程直接通過IPC機(jī)制通信,保證了具體查詢?nèi)蝿?wù)進(jìn)程和數(shù)據(jù)庫(kù)服務(wù)進(jìn)程之間的低耦合性,使得系統(tǒng)具有良好的可擴(kuò)展性。HyperQx-GPU的系統(tǒng)架構(gòu)如圖4所示。

    圖4 HyperQx-GPU系統(tǒng)架構(gòu)

    由于CUDA編程框架的異構(gòu)性,HyperQx-GPU系統(tǒng)架構(gòu)從總體上也分為CPU和GPU運(yùn)行的兩部分。其中CPU部分進(jìn)一步分為查詢進(jìn)程和數(shù)據(jù)庫(kù)服務(wù)進(jìn)程;GPU部分主要包括SQL操作符的kernel實(shí)現(xiàn),由數(shù)據(jù)庫(kù)服務(wù)進(jìn)程進(jìn)行加載和調(diào)用。

    ? 查詢進(jìn)程 查詢進(jìn)程包括兩部分。第一部分由SQL查詢語句請(qǐng)求生成,將解析后的SQL語法樹與數(shù)據(jù)庫(kù)schema結(jié)合起來,編譯成控制數(shù)據(jù)讀取和調(diào)用SQL操作符的CPU宿主程序。該宿主程序負(fù)責(zé)根據(jù)SQL查詢語句邏輯,調(diào)用相應(yīng)的CUDARuntimeAPI控制整個(gè)查詢?nèi)蝿?wù)的邏輯流程。第二部分為與數(shù)據(jù)庫(kù)服務(wù)進(jìn)程進(jìn)行IPC通信的客戶端動(dòng)態(tài)鏈接庫(kù),利用動(dòng)態(tài)鏈接庫(kù)攔截技術(shù)攔截了到CUDA動(dòng)態(tài)鏈接庫(kù)libcudart的調(diào)用,將CPU宿主程序中包含的CUDARuntimeAPI調(diào)用映射為到服務(wù)進(jìn)程的IPC調(diào)用。

    ?服務(wù)進(jìn)程 數(shù)據(jù)庫(kù)服務(wù)進(jìn)程通過監(jiān)聽Unix Domain Socket來接收查詢?nèi)蝿?wù)端通過動(dòng)態(tài)鏈接庫(kù)發(fā)起的IPC請(qǐng)求,調(diào)用數(shù)據(jù)庫(kù)管理層的函數(shù)進(jìn)行實(shí)際的GPU查詢?nèi)蝿?wù)執(zhí)行和資源調(diào)度等任務(wù),并將結(jié)果返回給查詢?nèi)蝿?wù)客戶端。數(shù)據(jù)庫(kù)的核心管理層包含列存儲(chǔ)數(shù)據(jù)共享、GPU硬件管理和kernel調(diào)用等核心服務(wù)的邏輯,以函數(shù)庫(kù)的形式向服務(wù)進(jìn)程提供數(shù)據(jù)庫(kù)管理功能。

    服務(wù)進(jìn)程采用多線程的架構(gòu),使用獨(dú)立的線程來服務(wù)不同查詢?nèi)蝿?wù)進(jìn)程的請(qǐng)求,以降低不同任務(wù)的相互影響,同時(shí)可以方便地支持并發(fā)查詢,具有很好的可伸縮性。并且,使用多線程架構(gòu)使得某一個(gè)任務(wù)的失敗不會(huì)影響到系統(tǒng)中正在執(zhí)行的其他任務(wù),起到了查詢?nèi)蝿?wù)隔離效果,同時(shí)系統(tǒng)的整體邏輯也更加清晰。

    2.2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    本節(jié)將詳細(xì)介紹HyperQx-GPU系統(tǒng)中兩個(gè)核心功能——共享CUDAContext和共享數(shù)據(jù)庫(kù)列存儲(chǔ)數(shù)據(jù)的設(shè)計(jì)與實(shí)現(xiàn),并闡述該實(shí)現(xiàn)方式的優(yōu)勢(shì)。

    2.2.1 共享CUDAContext

    在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行的所有查詢?nèi)蝿?wù)間共享服務(wù)進(jìn)程中的CUDAContext,用于發(fā)起所有的GPU調(diào)用,是HyperQx-GPU系統(tǒng)的核心設(shè)計(jì)之一。該設(shè)計(jì)使得查詢?nèi)蝿?wù)的CUDARuntimeAPI調(diào)用能夠被數(shù)據(jù)庫(kù)服務(wù)進(jìn)程統(tǒng)一管理,節(jié)省了每個(gè)查詢?nèi)蝿?wù)進(jìn)程需要單獨(dú)創(chuàng)建CUDAContext的開銷,提高了GPU的整體資源利用率。

    HyperQx-GPU服務(wù)端進(jìn)程初始化時(shí)會(huì)創(chuàng)建一個(gè)CUDA Context,作為整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)生命周期中,調(diào)度GPU資源的全局唯一環(huán)境。當(dāng)查詢?nèi)蝿?wù)啟動(dòng)時(shí),由于其CUDA Runtime API調(diào)用被動(dòng)態(tài)鏈接庫(kù)攔截,并不會(huì)觸發(fā)CUDA隱式創(chuàng)建CUDA Context的機(jī)制,而是通過數(shù)據(jù)庫(kù)服務(wù)進(jìn)程使用全局唯一的CUDA Context,節(jié)省了每個(gè)查詢進(jìn)程單獨(dú)創(chuàng)建所消耗的時(shí)間。

    為了使每個(gè)查詢?nèi)蝿?wù)進(jìn)程之間的CUDARuntime-API調(diào)用互不阻塞,服務(wù)進(jìn)程在啟動(dòng)每個(gè)查詢服務(wù)線程時(shí),會(huì)在CUDAContext中創(chuàng)建一個(gè)單獨(dú)的stream,用于發(fā)起該查詢進(jìn)程請(qǐng)求的GPU調(diào)用。不同stream上進(jìn)行的CUDAAPI調(diào)用不會(huì)相互阻塞,會(huì)被GPU并發(fā)調(diào)度執(zhí)行,因此可以同時(shí)進(jìn)行不同查詢?nèi)蝿?wù)的PCIe數(shù)據(jù)傳輸和kernel調(diào)用,充分利用GPU資源。

    2.2.2 共享列存儲(chǔ)數(shù)據(jù)

    HyperQx-GPU系統(tǒng)的另一個(gè)核心設(shè)計(jì)是實(shí)現(xiàn)了跨查詢?nèi)蝿?wù)的列存儲(chǔ)數(shù)據(jù)共享機(jī)制:多個(gè)查詢?nèi)蝿?wù)如果使用了相同的列存儲(chǔ)數(shù)據(jù),服務(wù)進(jìn)程會(huì)根據(jù)當(dāng)前的系統(tǒng)狀態(tài)決定通過PCIe總線傳輸數(shù)據(jù)到GPU內(nèi)存或者復(fù)用已經(jīng)存在于GPU內(nèi)存的數(shù)據(jù)。下面將詳細(xì)介紹該機(jī)制的行為和實(shí)現(xiàn)。

    服務(wù)進(jìn)程在初始化時(shí),會(huì)將數(shù)據(jù)庫(kù)的列存儲(chǔ)數(shù)據(jù)預(yù)加載到內(nèi)存,并生成數(shù)據(jù)表中列的名稱到內(nèi)存地址空間的映射表。當(dāng)查詢?nèi)蝿?wù)進(jìn)程需要訪問特定列的數(shù)據(jù)時(shí),會(huì)通過客戶端動(dòng)態(tài)鏈接庫(kù)進(jìn)行IPC請(qǐng)求,服務(wù)進(jìn)程則根據(jù)請(qǐng)求中的數(shù)據(jù)表名和列名,返回該列對(duì)應(yīng)的內(nèi)存地址作為后續(xù)操作的句柄。由于列存儲(chǔ)數(shù)據(jù)只存在于服務(wù)進(jìn)程的內(nèi)存地址空間,因此查詢?nèi)蝿?wù)進(jìn)程無法通過該地址直接訪問或修改數(shù)據(jù)庫(kù)的列存儲(chǔ)數(shù)據(jù),起到了隔離效果。

    當(dāng)查詢?nèi)蝿?wù)發(fā)起列存儲(chǔ)數(shù)據(jù)從CPU內(nèi)存到GPU內(nèi)存的傳輸請(qǐng)求時(shí),服務(wù)進(jìn)程會(huì)查看當(dāng)前映射表中該列的使用情況。若該列尚未被使用過,則分配相應(yīng)的GPU內(nèi)存空間,將該列存儲(chǔ)數(shù)據(jù)通過PCIe總線傳輸?shù)紾PU內(nèi)存,然后將映射表中該列的使用進(jìn)程數(shù)設(shè)置為1,并返回GPU內(nèi)存地址給查詢?nèi)蝿?wù)進(jìn)程。若該列存儲(chǔ)數(shù)據(jù)已經(jīng)存在于GPU內(nèi)存中,這時(shí)候?qū)⒂成浔碇性摿械氖褂眠M(jìn)程數(shù)加1,然后直接返回該列存儲(chǔ)數(shù)據(jù)的GPU地址。該查詢?nèi)蝿?wù)中,后續(xù)對(duì)該列的使用便可以直接使用已經(jīng)存在于GPU內(nèi)存的列存儲(chǔ)數(shù)據(jù),達(dá)到了共享列存儲(chǔ)數(shù)據(jù)的目的,節(jié)省了PCIe傳輸開銷。當(dāng)查詢?nèi)蝿?wù)結(jié)束時(shí),服務(wù)進(jìn)程會(huì)從列存儲(chǔ)數(shù)據(jù)映射表中將該查詢?nèi)蝿?wù)用到的所有列存儲(chǔ)數(shù)據(jù)減去1。極端情況下,當(dāng)GPU內(nèi)存空間不足時(shí),若某個(gè)列存儲(chǔ)數(shù)據(jù)的使用進(jìn)程數(shù)為0,則該列存儲(chǔ)數(shù)據(jù)占用GPU內(nèi)存空間可以被暫時(shí)釋放,之后再次使用時(shí)再重新傳輸?shù)紾PU內(nèi)存。

    通過上述的列存儲(chǔ)數(shù)據(jù)共享機(jī)制,HyperQx-GPU系統(tǒng)節(jié)省了每個(gè)查詢?nèi)蝿?wù)需要進(jìn)行的列存儲(chǔ)數(shù)據(jù)的PCIe傳輸,提升了系統(tǒng)的整體性能。

    2.3 系統(tǒng)執(zhí)行流程

    本節(jié)以一個(gè)具體的SQL查詢?yōu)槔敿?xì)描述HyperQx-GPU系統(tǒng)處理查詢請(qǐng)求的主要執(zhí)行流程,從而展示系統(tǒng)各個(gè)功能模塊之間的關(guān)系和交互行為。如下流程描述中,編號(hào)由小到大表示時(shí)間順序。

    (1) 啟動(dòng)數(shù)據(jù)庫(kù)系統(tǒng)服務(wù)進(jìn)程,該進(jìn)程會(huì)創(chuàng)建CUDA Context,并根據(jù)啟動(dòng)參數(shù)datadir,修改文件夾預(yù)加載列存儲(chǔ)數(shù)據(jù)到系統(tǒng)內(nèi)存,然后監(jiān)聽查詢請(qǐng)求。(2) 用戶向數(shù)據(jù)庫(kù)系統(tǒng)提交了如下的SQL查詢語句:SELECTSUM(lo_extendprice*lo_discount) AS revenue FROM lineorder,ddate WHERE lo_orderdate=d_datekey AND d_year=1993 AND lo_discount>=1 AND lo_discount<=3 AND lo_quantity<25。(3) 數(shù)據(jù)庫(kù)查詢前端模塊先將SQL字符串解析成SQL語法樹,然后結(jié)合數(shù)據(jù)庫(kù)表的schema生成包含SQL操作符對(duì)應(yīng)kernel調(diào)用的CPU宿主程序代碼,代表查詢?nèi)蝿?wù)的實(shí)際邏輯——在本例中會(huì)生成列掃描過濾和表之間的哈希連接等kernel調(diào)用。由SQL生成的代碼被編譯成可執(zhí)行文件后,將LD_PRELOAD環(huán)境變量設(shè)置為數(shù)據(jù)庫(kù)客戶端動(dòng)態(tài)鏈接庫(kù)的路徑,然后執(zhí)行該文件,啟動(dòng)查詢?nèi)蝿?wù)進(jìn)程。(4) 查詢?nèi)蝿?wù)進(jìn)程發(fā)起的CUDARuntimeAPI調(diào)用被客戶端動(dòng)態(tài)鏈接庫(kù)攔截,轉(zhuǎn)化成到服務(wù)進(jìn)程的IPC請(qǐng)求。(5) 服務(wù)端接收到新的查詢?nèi)蝿?wù)進(jìn)程的IPC請(qǐng)求后,創(chuàng)建新的服務(wù)線程處理來自該進(jìn)程的后續(xù)請(qǐng)求。該服務(wù)線程會(huì)不斷解析來自同一個(gè)查詢?nèi)蝿?wù)進(jìn)程的請(qǐng)求消息體,通過數(shù)據(jù)庫(kù)核心管理層模塊執(zhí)行相應(yīng)的資源管理和kernel調(diào)用等操作,并將結(jié)果通過IPC機(jī)制回傳給查詢?nèi)蝿?wù)進(jìn)程。在本示例查詢中,服務(wù)進(jìn)程會(huì)保證kernel執(zhí)行前,lineorder表中用到的4列數(shù)據(jù)和ddate表中的2列數(shù)據(jù)已經(jīng)被傳輸?shù)搅薌PU內(nèi)存。如果同時(shí)發(fā)起該SQL語句的兩個(gè)查詢請(qǐng)求實(shí)例,后到的請(qǐng)求會(huì)復(fù)用前一個(gè)請(qǐng)求已經(jīng)傳輸?shù)紾PU的列存儲(chǔ)數(shù)據(jù),而不進(jìn)行實(shí)際的PCIe數(shù)據(jù)傳輸。(6) 查詢結(jié)果(包括查詢中產(chǎn)生的宿主程序需要的臨時(shí)結(jié)果)會(huì)通過IPC回傳給動(dòng)態(tài)鏈接庫(kù),進(jìn)而返回給查詢?nèi)蝿?wù)進(jìn)程。(7) 查詢進(jìn)程完成查詢時(shí),向服務(wù)進(jìn)程發(fā)起退出請(qǐng)求,服務(wù)進(jìn)程結(jié)束相應(yīng)的服務(wù)線程。

    3 實(shí)驗(yàn)設(shè)計(jì)與測(cè)試

    3.1 實(shí)驗(yàn)環(huán)境

    實(shí)驗(yàn)所用工作站搭載開啟Hyper-threading的18核2.1 GHz Intel XeonE5-2695 CPU,和32 GB DRAM系統(tǒng)內(nèi)存。實(shí)驗(yàn)使用的GPU為NVIDIA TITAN X,包含12 GB內(nèi)存,以及3 584個(gè)時(shí)鐘頻率為1 531 MHz的計(jì)算核心。該系統(tǒng)的SQL操作符kernel代碼和其余模塊代碼使用NVIDIACUDA Toolkit 9.0和GCC 6.1.0工具鏈進(jìn)行編譯。工作站運(yùn)行的操作系統(tǒng)為CentOS Linux release 7.4.1708,Linux內(nèi)核版本為3.10.0。

    3.2 實(shí)驗(yàn)基準(zhǔn)數(shù)據(jù)集與實(shí)驗(yàn)設(shè)計(jì)

    本實(shí)驗(yàn)使用的數(shù)據(jù)集為MultiQx-GPU采用的標(biāo)準(zhǔn)測(cè)試基準(zhǔn)數(shù)據(jù)SSB(Star Schema Benchmark)[12],其中包括13條SQL查詢語句和生成的數(shù)據(jù)庫(kù)數(shù)據(jù)。該數(shù)據(jù)集基于TPC-H測(cè)試基準(zhǔn)并加以修改,在數(shù)據(jù)庫(kù)相關(guān)研究中被廣泛運(yùn)用于測(cè)試實(shí)際查詢負(fù)荷狀態(tài)下的數(shù)據(jù)庫(kù)系統(tǒng)性能。實(shí)驗(yàn)使用的數(shù)據(jù)庫(kù)數(shù)據(jù)由SSB的數(shù)據(jù)生成工具dbgen生成,并預(yù)處理成MultiQx-GPU中使用的列存儲(chǔ)格式,即每個(gè)表的每個(gè)列會(huì)被單獨(dú)存儲(chǔ)為一個(gè)文件。若表中包含記錄數(shù)過多,每個(gè)列存儲(chǔ)文件會(huì)包含多個(gè)數(shù)據(jù)塊,最終被系統(tǒng)分批載入GPU處理。生成數(shù)據(jù)時(shí),使用10作為規(guī)模放大參數(shù)(scalefactor),最終生成的數(shù)據(jù)表中大約包含6千萬條記錄,占用磁盤空間為4.8 GB。實(shí)驗(yàn)使用的查詢?nèi)蝿?wù)共由13條SQL查詢語句組成。由于實(shí)驗(yàn)?zāi)康氖菧y(cè)試系統(tǒng)的核心模塊性能,為了排除SQL語句的解析和編譯時(shí)間,所有SQL查詢語句均被預(yù)先編譯成可執(zhí)行的查詢?nèi)蝿?wù)程序。實(shí)驗(yàn)開始時(shí),所有列數(shù)據(jù)均被預(yù)先加載入內(nèi)存,以避免查詢過程中產(chǎn)生不必要的磁盤到內(nèi)存的數(shù)據(jù)傳輸。同時(shí),實(shí)驗(yàn)設(shè)定所有列存儲(chǔ)數(shù)據(jù)和查詢?nèi)蝿?wù)執(zhí)行時(shí)產(chǎn)生的中間結(jié)果均能在GPU內(nèi)存中同時(shí)存在而不超出內(nèi)存空間總量。

    實(shí)驗(yàn)主要測(cè)試內(nèi)容為驗(yàn)證共享CUDAContext和共享列存儲(chǔ)數(shù)據(jù)機(jī)制帶來的系統(tǒng)性能提升。參照MultiQx-GPU,本實(shí)驗(yàn)所采用的吞吐量指標(biāo)為加權(quán)吞吐量,定義如下:

    3.3 吞吐量測(cè)試

    本實(shí)驗(yàn)使用MultiQx-GPU系統(tǒng)性能作為基準(zhǔn),采用查詢?nèi)蝿?wù)兩兩并發(fā)(包括兩個(gè)相同查詢?nèi)蝿?wù)并發(fā)的情況)的方式,測(cè)試HyperQx-GPU系統(tǒng)在共91個(gè)(互不相同并發(fā)查詢組合78個(gè),相同并發(fā)查詢組合13個(gè))查詢?nèi)蝿?wù)組合并發(fā)執(zhí)行情況下的相對(duì)吞吐量。由于單獨(dú)執(zhí)行一個(gè)查詢所用時(shí)間較短,且啟動(dòng)進(jìn)程等操作會(huì)給系統(tǒng)帶來開銷,有可能在第一個(gè)查詢?nèi)蝿?wù)快結(jié)束時(shí),第二個(gè)查詢?nèi)蝿?wù)才開始執(zhí)行。為了保證實(shí)驗(yàn)進(jìn)行時(shí)每組中的兩個(gè)查詢能同時(shí)執(zhí)行,本實(shí)驗(yàn)實(shí)在兩個(gè)進(jìn)程中重復(fù)串行地執(zhí)行兩個(gè)查詢?nèi)蝿?wù),以一次查詢?nèi)蝿?wù)執(zhí)行時(shí)間內(nèi)的平均相對(duì)吞吐量作為最終的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)結(jié)果數(shù)據(jù)如圖5和圖6所示。

    圖5 HyperQx-GPU相對(duì)吞吐量提升

    圖6 HyperQx-GPU相對(duì)吞吐量提升

    從圖5和圖6所示的實(shí)驗(yàn)數(shù)據(jù)可以看出,在HyperQx-GPU系統(tǒng)的新架構(gòu)下,系統(tǒng)在查詢?nèi)蝿?wù)兩兩并發(fā)執(zhí)行的情況下,其查詢請(qǐng)求處理的相對(duì)吞吐量平均達(dá)到了MultiQx-GPU系統(tǒng)的12.0倍。其中最低的查詢組合為q7和q7并發(fā)執(zhí)行,相對(duì)吞吐量達(dá)到4.5倍,而最高的查詢組合為q10和q10并發(fā)執(zhí)行,其相對(duì)吞吐量能達(dá)到19.0倍。本相對(duì)吞吐量測(cè)量結(jié)果表明,與MultiQx-GPU系統(tǒng)相比,HyperQx-GPU系統(tǒng)的性能提升非常明顯。

    為了進(jìn)一步驗(yàn)證導(dǎo)致HyperQx-GPU系統(tǒng)性能提升的獨(dú)立因素,下列兩組實(shí)驗(yàn)將進(jìn)一步驗(yàn)證和分析共享CUDAContext和共享列存儲(chǔ)數(shù)據(jù)兩項(xiàng)改進(jìn)技術(shù)分別帶來的系統(tǒng)吞吐量提升效果。

    3.4 共享CUDAContext性能提升驗(yàn)證

    在MultiQx-GPU系統(tǒng)架構(gòu)設(shè)計(jì)中,每個(gè)查詢?nèi)蝿?wù)進(jìn)程使用CUDARuntimeAPI控制查詢邏輯時(shí),會(huì)在第一次調(diào)用RuntimeAPI的時(shí)候隱式地創(chuàng)建CUDAContext。本實(shí)驗(yàn)測(cè)試MultiQx-GPU和HyperQx-GPU系統(tǒng)(關(guān)閉列存儲(chǔ)共享功能)執(zhí)行單個(gè)查詢?nèi)蝿?wù)的時(shí)間。實(shí)驗(yàn)數(shù)據(jù)如圖7所示。

    圖7 MultiQx-GPU和HyperQx-GPU關(guān)閉共享列數(shù)據(jù)對(duì)比

    根據(jù)實(shí)驗(yàn)數(shù)據(jù),HyperQx-GPU利用共享CUDA Context機(jī)制,與MultiQx-GPU相比,平均性能提升(減少執(zhí)行時(shí)間)為75.0%。其中提升最多的為q3查詢,減少執(zhí)行時(shí)間為79.6%;最低為q11查詢,減少執(zhí)行時(shí)間為68.5%。因此,在服務(wù)進(jìn)程中使用全局唯一的CUDAContext進(jìn)行GPU資源調(diào)度,能夠節(jié)省在每個(gè)查詢進(jìn)程啟動(dòng)時(shí)的CUDA Context創(chuàng)建開銷,使GPU更多地處于執(zhí)行計(jì)算任務(wù)的狀態(tài),從而提升系統(tǒng)的查詢請(qǐng)求響應(yīng)速度和吞吐量。

    3.5 共享列存儲(chǔ)性能提升驗(yàn)證

    為了驗(yàn)證共享列存儲(chǔ)技術(shù)帶來的系統(tǒng)相對(duì)吞吐量的提升效果,本實(shí)驗(yàn)測(cè)試了全部的13個(gè)SQL查詢語句在HyperQx-GPU系統(tǒng)中分別在開啟和關(guān)閉列存儲(chǔ)數(shù)據(jù)共享功能情況下,查詢?nèi)蝿?wù)在PCIe總線數(shù)據(jù)傳輸過程上花費(fèi)的時(shí)間。本實(shí)驗(yàn)采用串行(非并發(fā))的查詢執(zhí)行情況,以排除其他因素對(duì)系統(tǒng)性能的影響。實(shí)驗(yàn)結(jié)果如圖8所示。

    圖8 HyperQx-GPU共享與不共享列存儲(chǔ)數(shù)據(jù)情況下PCIe總線數(shù)據(jù)傳輸時(shí)間對(duì)比

    從實(shí)驗(yàn)結(jié)果數(shù)據(jù)中可以看出,支持列存儲(chǔ)數(shù)據(jù)共享機(jī)制的HyperQx-GPU系統(tǒng)能夠大幅地減少PCIe數(shù)據(jù)傳輸消耗的時(shí)間。其中減少時(shí)間最多的查詢?yōu)閝2,減少了98.2%;減少時(shí)間最少的查詢?yōu)閝4,減少了96.4%,平均減少的PCIe數(shù)據(jù)傳輸消耗時(shí)間為97.2%。實(shí)際執(zhí)行查詢?nèi)蝿?wù)時(shí),HyperQx-GPU系統(tǒng)能夠根據(jù)系統(tǒng)中實(shí)時(shí)運(yùn)行的所有查詢?nèi)蝿?wù)的信息,重復(fù)利用已經(jīng)傳輸過的數(shù)據(jù)庫(kù)列存儲(chǔ)數(shù)據(jù),從而提升系統(tǒng)吞吐量。該實(shí)驗(yàn)證明,共享列存儲(chǔ)數(shù)據(jù)的機(jī)制幾乎能夠消除查詢?nèi)蝿?wù)執(zhí)行時(shí)的PCIe數(shù)據(jù)傳輸瓶頸,為進(jìn)一步的系統(tǒng)優(yōu)化提供了有力支持。

    4 結(jié) 語

    本文發(fā)現(xiàn)并分析了已有GPU數(shù)據(jù)庫(kù)系統(tǒng)均存在的GPU整體資源利用率低的缺陷。在此基礎(chǔ)上,本文提出并實(shí)現(xiàn)了HyperQx-GPU系統(tǒng)。該系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)了新的軟件架構(gòu),通過共享CUDAContext節(jié)省了查詢?nèi)蝿?wù)執(zhí)行時(shí)間,使用共享列存儲(chǔ)數(shù)據(jù)方案減少了查詢?nèi)蝿?wù)中的PCIe數(shù)據(jù)傳輸量,優(yōu)化了GPU資源利用率。本文通過實(shí)驗(yàn)測(cè)試,分析了以上兩個(gè)關(guān)鍵技術(shù)分別帶來的系統(tǒng)性能提升。實(shí)驗(yàn)結(jié)果表明,HyperQx-GPU系統(tǒng)在MultiQx-GPU系統(tǒng)的基礎(chǔ)上,提升GPU數(shù)據(jù)庫(kù)處理并發(fā)查詢請(qǐng)求的平均相對(duì)吞吐量達(dá)到了12.0倍。

    猜你喜歡
    數(shù)據(jù)庫(kù)系統(tǒng)調(diào)用進(jìn)程
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
    微細(xì)銑削工藝數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)與開發(fā)
    基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
    實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)安全采集方案
    核反應(yīng)堆材料數(shù)據(jù)庫(kù)系統(tǒng)及其應(yīng)用
    社會(huì)進(jìn)程中的新聞學(xué)探尋
    我國(guó)高等教育改革進(jìn)程與反思
    性色av乱码一区二区三区2| 嫩草影视91久久| 97碰自拍视频| 国产又色又爽无遮挡免费看| 99在线人妻在线中文字幕| 国产精品嫩草影院av在线观看| 亚洲欧美清纯卡通| 校园人妻丝袜中文字幕| 久久午夜亚洲精品久久| 国产亚洲av嫩草精品影院| 久99久视频精品免费| 精品99又大又爽又粗少妇毛片| 国产91av在线免费观看| 极品教师在线视频| 成人鲁丝片一二三区免费| 国产精品一二三区在线看| 国产精品久久电影中文字幕| 校园人妻丝袜中文字幕| 日韩国内少妇激情av| 内射极品少妇av片p| 精品福利观看| a级一级毛片免费在线观看| 97超碰精品成人国产| 久久久久国产网址| 免费观看在线日韩| 97碰自拍视频| 91av网一区二区| 亚洲一级一片aⅴ在线观看| 九色成人免费人妻av| 久久综合国产亚洲精品| 中国美女看黄片| 麻豆成人午夜福利视频| 久久久国产成人精品二区| 国产在视频线在精品| 日韩欧美国产在线观看| 亚洲中文字幕日韩| 长腿黑丝高跟| 三级毛片av免费| 国产欧美日韩精品一区二区| 男人舔奶头视频| 有码 亚洲区| 在现免费观看毛片| 看片在线看免费视频| av在线蜜桃| 亚州av有码| 一区二区三区免费毛片| 国产综合懂色| 成人毛片a级毛片在线播放| 国产成年人精品一区二区| 一边摸一边抽搐一进一小说| 欧美一级a爱片免费观看看| 亚洲人成网站在线播放欧美日韩| 久久久久久久久大av| 成人无遮挡网站| 别揉我奶头 嗯啊视频| 伦理电影大哥的女人| 日本色播在线视频| 久久天躁狠狠躁夜夜2o2o| 成年av动漫网址| 日韩精品中文字幕看吧| 丰满的人妻完整版| 精品久久久久久久末码| 久久久久精品国产欧美久久久| 国语自产精品视频在线第100页| 国产一区二区在线观看日韩| 最近中文字幕高清免费大全6| av卡一久久| 欧美成人免费av一区二区三区| 久久久久久久久久久丰满| 亚洲最大成人中文| 日韩精品有码人妻一区| 亚洲精品国产av成人精品 | 日本色播在线视频| 性色avwww在线观看| 日本在线视频免费播放| 在线天堂最新版资源| 亚洲av美国av| 51国产日韩欧美| 亚洲av中文字字幕乱码综合| 日日啪夜夜撸| 两个人视频免费观看高清| 亚洲欧美精品综合久久99| 人妻制服诱惑在线中文字幕| 国产蜜桃级精品一区二区三区| 亚洲婷婷狠狠爱综合网| 99热精品在线国产| 国产三级在线视频| 一区二区三区四区激情视频 | 看免费成人av毛片| 精品乱码久久久久久99久播| 麻豆国产av国片精品| 亚洲三级黄色毛片| 国产精品久久久久久亚洲av鲁大| 日日干狠狠操夜夜爽| 一卡2卡三卡四卡精品乱码亚洲| 国产毛片a区久久久久| 午夜a级毛片| 欧美成人a在线观看| 欧美国产日韩亚洲一区| 三级国产精品欧美在线观看| 亚洲av一区综合| 亚洲av不卡在线观看| 一个人看的www免费观看视频| 久久婷婷人人爽人人干人人爱| videossex国产| 国产成人a区在线观看| 国产极品精品免费视频能看的| 日产精品乱码卡一卡2卡三| 国内少妇人妻偷人精品xxx网站| 午夜免费激情av| 少妇的逼好多水| 三级男女做爰猛烈吃奶摸视频| 在线a可以看的网站| 不卡一级毛片| 亚洲精品日韩av片在线观看| 变态另类丝袜制服| 亚洲精品久久国产高清桃花| 一级黄片播放器| 男女那种视频在线观看| 伊人久久精品亚洲午夜| 日韩av不卡免费在线播放| 色吧在线观看| 日本免费a在线| 国产精品美女特级片免费视频播放器| 内地一区二区视频在线| 亚洲国产日韩欧美精品在线观看| 身体一侧抽搐| 丰满的人妻完整版| 国产男人的电影天堂91| 国产精品久久视频播放| 成人无遮挡网站| 欧美不卡视频在线免费观看| 国产视频一区二区在线看| 日韩成人av中文字幕在线观看 | 久久久精品94久久精品| 国产精品三级大全| 久久九九热精品免费| av黄色大香蕉| 天堂av国产一区二区熟女人妻| 国产精品野战在线观看| 中文亚洲av片在线观看爽| 97人妻精品一区二区三区麻豆| 国产精品人妻久久久影院| 国国产精品蜜臀av免费| 天堂√8在线中文| 日韩欧美在线乱码| 少妇的逼水好多| 亚洲国产高清在线一区二区三| 搡女人真爽免费视频火全软件 | 午夜激情欧美在线| 黄色欧美视频在线观看| 精品一区二区三区视频在线观看免费| 男女做爰动态图高潮gif福利片| 日本爱情动作片www.在线观看 | 欧美日韩一区二区视频在线观看视频在线 | 欧美bdsm另类| 亚洲综合色惰| 嫩草影院精品99| 午夜老司机福利剧场| 亚洲美女搞黄在线观看 | 日韩欧美三级三区| av卡一久久| 国产av一区在线观看免费| 亚洲av五月六月丁香网| 美女免费视频网站| 久久久精品94久久精品| 丝袜美腿在线中文| 久久人人爽人人片av| 国产精品嫩草影院av在线观看| 国产一区二区亚洲精品在线观看| av视频在线观看入口| 99热这里只有是精品在线观看| 99热精品在线国产| 你懂的网址亚洲精品在线观看 | 国内精品美女久久久久久| 日韩精品中文字幕看吧| 国产伦一二天堂av在线观看| 久久九九热精品免费| 麻豆乱淫一区二区| 赤兔流量卡办理| 午夜福利高清视频| 国产精品一区二区三区四区久久| 亚洲欧美日韩卡通动漫| 国产日本99.免费观看| 国产aⅴ精品一区二区三区波| 欧美最黄视频在线播放免费| 高清午夜精品一区二区三区 | 中文亚洲av片在线观看爽| 国产高潮美女av| 久久中文看片网| 在线免费十八禁| 麻豆一二三区av精品| 午夜影院日韩av| 一区二区三区四区激情视频 | 美女高潮的动态| 日本熟妇午夜| 搡女人真爽免费视频火全软件 | 在线免费观看不下载黄p国产| 特大巨黑吊av在线直播| 中文字幕av在线有码专区| 老熟妇乱子伦视频在线观看| 亚洲美女黄片视频| 嫩草影院精品99| avwww免费| eeuss影院久久| 免费av观看视频| 人妻制服诱惑在线中文字幕| 中文亚洲av片在线观看爽| 成人三级黄色视频| 97热精品久久久久久| 成人美女网站在线观看视频| 我的老师免费观看完整版| 亚洲精品粉嫩美女一区| 久99久视频精品免费| 亚洲欧美日韩高清在线视频| 寂寞人妻少妇视频99o| 深夜精品福利| 最近在线观看免费完整版| 尤物成人国产欧美一区二区三区| 国产老妇女一区| 日韩三级伦理在线观看| 欧美成人a在线观看| 男人狂女人下面高潮的视频| 又黄又爽又刺激的免费视频.| 国产精品乱码一区二三区的特点| 久久欧美精品欧美久久欧美| 欧美一区二区国产精品久久精品| 97热精品久久久久久| 久久午夜亚洲精品久久| 观看美女的网站| 性欧美人与动物交配| 国产在线男女| 免费av不卡在线播放| 少妇人妻精品综合一区二区 | 国产伦一二天堂av在线观看| 国内精品一区二区在线观看| 精品一区二区免费观看| 国产真实乱freesex| 国产精品亚洲美女久久久| 久久这里只有精品中国| 91久久精品国产一区二区成人| 国产在视频线在精品| 寂寞人妻少妇视频99o| 久久精品影院6| 99久国产av精品国产电影| 色av中文字幕| 久久精品国产鲁丝片午夜精品| 少妇猛男粗大的猛烈进出视频 | 免费在线观看影片大全网站| 亚洲精品日韩在线中文字幕 | 一个人免费在线观看电影| 免费看av在线观看网站| 成人精品一区二区免费| 久久久午夜欧美精品| 两个人视频免费观看高清| 亚洲图色成人| .国产精品久久| 亚洲av成人av| 男插女下体视频免费在线播放| 国产在视频线在精品| 成人亚洲欧美一区二区av| 国内少妇人妻偷人精品xxx网站| 中文字幕免费在线视频6| 日本在线视频免费播放| 婷婷精品国产亚洲av| 国产精品av视频在线免费观看| 国产欧美日韩一区二区精品| 在线国产一区二区在线| 久久精品国产自在天天线| 99久久精品国产国产毛片| 免费观看精品视频网站| av.在线天堂| 国产高清视频在线观看网站| 少妇猛男粗大的猛烈进出视频 | 久久精品人妻少妇| 97人妻精品一区二区三区麻豆| 欧美性感艳星| 国产精品一二三区在线看| 日本一本二区三区精品| 99国产精品一区二区蜜桃av| 亚州av有码| 亚洲国产精品成人综合色| 热99re8久久精品国产| 精品少妇黑人巨大在线播放 | 亚洲va在线va天堂va国产| 直男gayav资源| h日本视频在线播放| 男女下面进入的视频免费午夜| 我要看日韩黄色一级片| 亚洲综合色惰| 男女啪啪激烈高潮av片| 美女黄网站色视频| 欧美xxxx性猛交bbbb| 亚洲成av人片在线播放无| 日韩av不卡免费在线播放| 日本爱情动作片www.在线观看 | 女同久久另类99精品国产91| 91麻豆精品激情在线观看国产| 国产成人aa在线观看| 91狼人影院| 国产伦精品一区二区三区视频9| 男插女下体视频免费在线播放| 成人综合一区亚洲| 久久久久久久亚洲中文字幕| 久久久国产成人精品二区| 日韩国内少妇激情av| 91av网一区二区| 我要搜黄色片| 国产av一区在线观看免费| 小说图片视频综合网站| 丰满人妻一区二区三区视频av| 午夜日韩欧美国产| h日本视频在线播放| 国产精品久久久久久精品电影| 禁无遮挡网站| 人妻丰满熟妇av一区二区三区| 男人舔奶头视频| 观看美女的网站| 国产久久久一区二区三区| 成人亚洲欧美一区二区av| 欧美一区二区精品小视频在线| 国产探花极品一区二区| 久久99热这里只有精品18| 日韩高清综合在线| 成人一区二区视频在线观看| 蜜臀久久99精品久久宅男| 精品免费久久久久久久清纯| 亚洲国产精品国产精品| 三级国产精品欧美在线观看| 最近视频中文字幕2019在线8| 一级av片app| 插逼视频在线观看| 日韩欧美三级三区| 春色校园在线视频观看| 一夜夜www| 亚洲四区av| 啦啦啦啦在线视频资源| 免费大片18禁| 成人鲁丝片一二三区免费| 在线观看免费视频日本深夜| 国产黄a三级三级三级人| 国产成人aa在线观看| 国产毛片a区久久久久| 国产成人福利小说| 色尼玛亚洲综合影院| 亚洲国产高清在线一区二区三| 国产亚洲91精品色在线| 99热全是精品| 伊人久久精品亚洲午夜| 亚洲精品色激情综合| 人人妻人人看人人澡| 国产高清视频在线播放一区| 色综合亚洲欧美另类图片| 最后的刺客免费高清国语| 联通29元200g的流量卡| 精华霜和精华液先用哪个| 天天躁日日操中文字幕| 国产探花在线观看一区二区| 国产午夜精品论理片| 国产久久久一区二区三区| 国产成人精品久久久久久| 一级毛片电影观看 | 久久久a久久爽久久v久久| 成人亚洲欧美一区二区av| 国产欧美日韩精品亚洲av| 可以在线观看的亚洲视频| 亚洲精华国产精华液的使用体验 | 国产三级中文精品| 久久久久久久午夜电影| 精品99又大又爽又粗少妇毛片| 婷婷精品国产亚洲av在线| 俺也久久电影网| 国产精品乱码一区二三区的特点| 日本精品一区二区三区蜜桃| 久99久视频精品免费| 成人永久免费在线观看视频| 亚洲av免费在线观看| 99热这里只有是精品在线观看| 亚洲精品一卡2卡三卡4卡5卡| 国产一区二区激情短视频| 成熟少妇高潮喷水视频| 久久精品91蜜桃| 午夜亚洲福利在线播放| 欧美最黄视频在线播放免费| 国产高清激情床上av| 国产中年淑女户外野战色| 全区人妻精品视频| 免费看美女性在线毛片视频| 欧美一级a爱片免费观看看| 黄片wwwwww| 国产美女午夜福利| 亚洲人成网站在线播放欧美日韩| 在线观看美女被高潮喷水网站| 久久久精品大字幕| 搡女人真爽免费视频火全软件 | 不卡视频在线观看欧美| 床上黄色一级片| 日韩欧美国产在线观看| 久久热精品热| 色播亚洲综合网| 97超碰精品成人国产| avwww免费| 亚洲欧美中文字幕日韩二区| 国产精品亚洲美女久久久| 国产视频内射| 别揉我奶头 嗯啊视频| 1000部很黄的大片| av在线天堂中文字幕| 欧美高清性xxxxhd video| 免费av不卡在线播放| 一级毛片电影观看 | 欧美绝顶高潮抽搐喷水| www.色视频.com| 日本撒尿小便嘘嘘汇集6| 亚洲经典国产精华液单| 久久综合国产亚洲精品| 国产精品一区二区免费欧美| 日本五十路高清| 性插视频无遮挡在线免费观看| 精品久久久久久久久久免费视频| 色哟哟哟哟哟哟| 在线国产一区二区在线| 久久精品久久久久久噜噜老黄 | 熟女电影av网| 美女内射精品一级片tv| 成年版毛片免费区| 欧美zozozo另类| 国产午夜精品论理片| a级毛片a级免费在线| 观看免费一级毛片| 村上凉子中文字幕在线| 69人妻影院| 真人做人爱边吃奶动态| 波多野结衣高清作品| 国产aⅴ精品一区二区三区波| 91av网一区二区| av女优亚洲男人天堂| 亚洲色图av天堂| 色吧在线观看| 久久人人爽人人片av| 一级黄色大片毛片| 俄罗斯特黄特色一大片| 久久久a久久爽久久v久久| 国产真实伦视频高清在线观看| 男女边吃奶边做爰视频| 国产三级在线视频| 一级毛片我不卡| 国产精品亚洲美女久久久| 久久精品综合一区二区三区| 色尼玛亚洲综合影院| 深夜a级毛片| 韩国av在线不卡| 国产午夜福利久久久久久| 高清毛片免费观看视频网站| 免费无遮挡裸体视频| 男女之事视频高清在线观看| 看黄色毛片网站| 深夜精品福利| 亚洲不卡免费看| www日本黄色视频网| 日韩亚洲欧美综合| 欧美三级亚洲精品| 亚洲精品影视一区二区三区av| 欧美高清成人免费视频www| 日韩欧美三级三区| 欧洲精品卡2卡3卡4卡5卡区| 亚洲真实伦在线观看| 久久人人爽人人片av| 91午夜精品亚洲一区二区三区| 亚洲在线自拍视频| 欧美日韩国产亚洲二区| 国国产精品蜜臀av免费| 麻豆国产av国片精品| 欧美日韩一区二区视频在线观看视频在线 | 日本一二三区视频观看| 亚洲中文日韩欧美视频| 激情 狠狠 欧美| 97超碰精品成人国产| 亚洲最大成人av| 午夜免费男女啪啪视频观看 | 国产精品不卡视频一区二区| 舔av片在线| 小蜜桃在线观看免费完整版高清| 久久久久久久午夜电影| 99久久精品一区二区三区| 国产男人的电影天堂91| 国产精品永久免费网站| 少妇被粗大猛烈的视频| 夜夜夜夜夜久久久久| 91午夜精品亚洲一区二区三区| 好男人在线观看高清免费视频| 亚洲第一区二区三区不卡| 男插女下体视频免费在线播放| 日本熟妇午夜| 91久久精品国产一区二区三区| 免费一级毛片在线播放高清视频| 国产精品三级大全| 亚洲中文日韩欧美视频| a级毛片免费高清观看在线播放| 久久久精品大字幕| 十八禁网站免费在线| 丝袜喷水一区| 国产伦精品一区二区三区视频9| 欧美中文日本在线观看视频| 亚洲精品在线观看二区| 国产成人aa在线观看| 国产爱豆传媒在线观看| 好男人在线观看高清免费视频| 三级男女做爰猛烈吃奶摸视频| 18禁在线无遮挡免费观看视频 | 中文字幕熟女人妻在线| a级毛片a级免费在线| 精品人妻熟女av久视频| 日本黄色视频三级网站网址| 男插女下体视频免费在线播放| 精品不卡国产一区二区三区| 亚洲av第一区精品v没综合| 午夜视频国产福利| 亚洲熟妇熟女久久| 看片在线看免费视频| 狂野欧美激情性xxxx在线观看| 在线国产一区二区在线| 五月玫瑰六月丁香| 亚洲三级黄色毛片| 亚洲熟妇熟女久久| 人妻丰满熟妇av一区二区三区| 少妇的逼好多水| 成人亚洲精品av一区二区| 99久久成人亚洲精品观看| 无遮挡黄片免费观看| 日本黄色片子视频| 3wmmmm亚洲av在线观看| 直男gayav资源| 亚洲自偷自拍三级| 丝袜喷水一区| 国产av不卡久久| a级一级毛片免费在线观看| 我要看日韩黄色一级片| 两性午夜刺激爽爽歪歪视频在线观看| 欧美激情在线99| 欧美日韩一区二区视频在线观看视频在线 | 美女高潮的动态| 精品久久久久久久久亚洲| 蜜桃亚洲精品一区二区三区| 男女做爰动态图高潮gif福利片| 久久久精品大字幕| a级毛片a级免费在线| 国产亚洲精品综合一区在线观看| 我要看日韩黄色一级片| 熟妇人妻久久中文字幕3abv| 亚洲欧美日韩卡通动漫| 免费无遮挡裸体视频| 美女内射精品一级片tv| 精品福利观看| 日韩欧美精品免费久久| 国产精品1区2区在线观看.| 中国美女看黄片| 国产亚洲精品久久久久久毛片| 国产成人影院久久av| 国产免费一级a男人的天堂| 国产精品日韩av在线免费观看| 日韩 亚洲 欧美在线| 成人av一区二区三区在线看| 麻豆av噜噜一区二区三区| 看非洲黑人一级黄片| 真实男女啪啪啪动态图| 在线免费观看的www视频| 久久久精品大字幕| 美女xxoo啪啪120秒动态图| 久久久久国产精品人妻aⅴ院| 亚洲精品影视一区二区三区av| 你懂的网址亚洲精品在线观看 | 精品人妻偷拍中文字幕| 美女高潮的动态| 亚洲综合色惰| 免费观看精品视频网站| 校园人妻丝袜中文字幕| 亚洲中文字幕日韩| 秋霞在线观看毛片| 国产伦精品一区二区三区视频9| 欧美最黄视频在线播放免费| 偷拍熟女少妇极品色| 亚洲精品一卡2卡三卡4卡5卡| 国产真实乱freesex| 美女大奶头视频| 日本一本二区三区精品| 国产一区二区三区在线臀色熟女| 看十八女毛片水多多多| 亚洲国产精品成人久久小说 | 日日撸夜夜添| 人人妻人人看人人澡| 国产精品久久久久久av不卡| 亚洲中文字幕一区二区三区有码在线看| 在线看三级毛片| 男女做爰动态图高潮gif福利片| 99热这里只有是精品50| 丰满乱子伦码专区| 欧美不卡视频在线免费观看| 美女cb高潮喷水在线观看| 神马国产精品三级电影在线观看| 国产91av在线免费观看| 国产蜜桃级精品一区二区三区| 成人一区二区视频在线观看| 观看美女的网站| 亚洲中文字幕日韩| 能在线免费观看的黄片| 国产一区二区三区av在线 | 中文资源天堂在线| 卡戴珊不雅视频在线播放| 国产精品一区二区性色av| 久久99热6这里只有精品| 国产精品久久久久久精品电影| 欧美最黄视频在线播放免费| 乱人视频在线观看| 在线观看66精品国产|