色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DPDK內(nèi)存的基本概念

Linux閱碼場 ? 來源:DPDK與SPDK開源社區(qū) ? 作者:Anatoly Burakov ? 2020-10-26 10:03 ? 次閱讀

作者簡介:Anatoly Burakov,英特爾軟件工程師,

目前在維護DPDK中的VFIO和內(nèi)存子系統(tǒng)

引言

內(nèi)存管理是數(shù)據(jù)面開發(fā)套件(DPDK)的一個核心部分,以此為基礎(chǔ),DPDK的其他部分和用戶應(yīng)用得以發(fā)揮其最佳性能。本系列文章將詳細介紹DPDK提供的各種內(nèi)存管理的功能。

但在此之前,有必要先談一談為何DPDK中內(nèi)存管理要以現(xiàn)有的方式運作,它背后又有怎樣的原理,再進一步探討DPDK具體能夠提供哪些與內(nèi)存相關(guān)的功能。本文將先介紹DPDK內(nèi)存的基本原理,并解釋它們是如何幫助DPDK實現(xiàn)高性能的。

請注意,雖然DPDK支持FreeBSD,而且也會有正在運行的Windows端口,但目前大多數(shù)與內(nèi)存相關(guān)的功能僅適用于Linux*。

標準大頁

現(xiàn)代CPU架構(gòu)中,內(nèi)存管理并不以單個字節(jié)進行,而是以頁為單位,即虛擬和物理連續(xù)的內(nèi)存塊。這些內(nèi)存塊通常(但不是必須) 存儲在RAM中。在英特爾64和IA-32架構(gòu)上,標準系統(tǒng)的頁面大小為4KB。

基于安全性和通用性的考慮,軟件的應(yīng)用程序訪問的內(nèi)存位置使用的是操作系統(tǒng)分配的虛擬地址。運行代碼時,該虛擬地址需要被轉(zhuǎn)換為硬件使用的物理地址。這種轉(zhuǎn)換是操作系統(tǒng)通過頁表轉(zhuǎn)換來完成的,頁表在分頁粒度級別上(即4KB一個粒度)將虛擬地址映射到物理地址。為了提高性能,最近一次使用的若干頁面地址被保存在一個稱為轉(zhuǎn)換檢測緩沖區(qū)(TLB)的高速緩存中。每一分頁都占有TLB的一個條目。如果用戶的代碼訪問(或最近訪問過)16 KB的內(nèi)存,即4頁,這些頁面很有可能會在TLB緩存中。

如果其中一個頁面不在TLB緩存中,嘗試訪問該頁面中包含的地址將導(dǎo)致TLB查詢失敗;也就是說,操作系統(tǒng)寫入TLB的頁地址必須是在它的全局頁表中進行查詢操作獲取的。因此,TLB查詢失敗的代價也相對較高(某些情況下代價會非常高),所以最好將當前活動的所有頁面都置于TLB中以盡可能減少TLB查詢失敗。

然而,TLB的大小有限,而且實際上非常小,和DPDK通常處理的數(shù)據(jù)量(有時高達幾十GB)比起來,在任一給定的時刻,4KB 標準頁面大小的TLB所覆蓋的內(nèi)存量(幾MB)微不足道。這意味著,如果DPDK采用常規(guī)內(nèi)存,使用DPDK的應(yīng)用會因為TLB頻繁的查詢失敗在性能上大打折扣。

為解決這個問題,DPDK依賴于標準大頁。從名字中很容易猜到,標準大頁類似于普通的頁面,只是會更大。有多大呢?在英特爾64和1A-32架構(gòu)上,目前可用的兩種大頁大小為2MB和1GB。也就是說,單個頁面可以覆蓋2 MB或1 GB大小的整個物理和虛擬連續(xù)的存儲區(qū)域。

圖1. TLB內(nèi)存覆蓋量比較

這兩種頁面大小DPDK都可以支持。有了這樣的頁面大小,就可以更容易覆蓋大內(nèi)存區(qū)域,也同時避免(同樣多的)TLB查詢失敗。反過來,在處理大內(nèi)存區(qū)域時,更少的TLB查詢失敗也會使性能得到提升,DPDK的用例通常如此。

將內(nèi)存固定到NUMA節(jié)點

當分配常規(guī)內(nèi)存時,理論上,它可以被分配到RAM中的任何位置。這在單CPU系統(tǒng)上沒有什么問題,但是許多DPDK用戶是在支持非統(tǒng)一內(nèi)存訪問 (NUMA) 的多CPU系統(tǒng)上運行應(yīng)用的。對于NUMA來說,所有內(nèi)存都是不同的:某一個CPU對一些內(nèi)存的訪問(如不在該CPU所屬NUMA NODE上的內(nèi)存)將比其他內(nèi)存訪問花費更長的時間,這是由于它們相對于執(zhí)行所述內(nèi)存訪問的CPU所在的物理位置不同。進行常規(guī)內(nèi)存分配時,通常無法控制該內(nèi)存分配到哪里,因此如果DPDK在這樣的系統(tǒng)上使用常規(guī)內(nèi)存,就可能會導(dǎo)致以下的情況:在一個CPU上執(zhí)行的線程卻在無意中訪問屬于非本地NUMA節(jié)點的內(nèi)存。

圖2. 理想的NUMA節(jié)點分配

雖然這種跨NUMA節(jié)點訪問在所有現(xiàn)代操作系統(tǒng)上都比較少有,因為這樣的訪問都是都是NUMA感知的,而且即使沒有DPDK還是有方法能對內(nèi)存實施NUMA定位。但是DPDK帶來的不僅僅是NUMA感知,事實上,整個DPDK API的構(gòu)建都旨在為每個操作提供明確的NUMA感知。如果不明確請求NUMA節(jié)點訪問(其中所述結(jié)構(gòu)必須位于內(nèi)存中),通常無法分配給定的DPDK數(shù)據(jù)結(jié)構(gòu)。

DPDK API提供的這種明確的NUMA感知有助于確保用戶應(yīng)用在每個操作中都能考慮到NUMA感知;換句話說,DPDK API可以減少寫出編寫性能差的代碼的可能性。

硬件、物理地址和直接內(nèi)存存?。?a href="http://www.1cnz.cn/tags/dma/" target="_blank">DMA

DPDK被認為是一組用戶態(tài)的網(wǎng)絡(luò)包輸入/輸出庫,到目前為止,它基本上保持了最初的任務(wù)聲明。但是,電腦上的硬件不能處理用戶空間的虛擬地址,因為它不能感知任何用戶態(tài)的進程和其所分配到的用戶空間虛擬地址。相反,它只能訪問真實的物理地址上的內(nèi)存,也就是CPU、RAM和系統(tǒng)所有其他的部分用來相互通信的地址。

出于對效率的考量,現(xiàn)代硬件幾乎總是使用直接內(nèi)存存?。―MA)事務(wù)。通常,為了執(zhí)行一個DMA事務(wù),內(nèi)核需要參與創(chuàng)建一個支持DMA的存儲區(qū)域,將進程內(nèi)虛擬地址轉(zhuǎn)換成硬件能夠理解的真實物理地址,并啟動DMA事務(wù)。這是大多數(shù)現(xiàn)代操作系統(tǒng)中輸入輸出的工作方式;然而,這是一個耗時的過程,需要上下文切換、轉(zhuǎn)換和查找操作,這不利于高性能輸入/輸出。

DPDK的內(nèi)存管理以一種簡單的方式解決了這個問題。每當一個內(nèi)存區(qū)域可供DPDK使用時,DPDK就通過詢問內(nèi)核來計算它的物理地址。由于DPDK使用鎖定內(nèi)存,通常以大頁的形式,底層內(nèi)存區(qū)域的物理地址預(yù)計不會改變,因此硬件可以依賴這些物理地址始終有效,即使內(nèi)存本身有一段時間沒有使用。然后,DPDK會在準備由硬件完成的輸入/輸出事務(wù)時使用這些物理地址,并以允許硬件自己啟動DMA事務(wù)的方式配置硬件。這使DPDK避免不必要的開銷,并且完全從用戶空間執(zhí)行輸入/輸出。

IOMMU和IOVA

默認情況下,任何硬件都可以訪問整個系統(tǒng),因此它可以在任何地方執(zhí)行DMA 事務(wù)。這有許多安全隱患。例如,流氓和/或不可信進程(包括在VM (虛擬機)內(nèi)運行的進程)可能使用硬件設(shè)備來讀寫內(nèi)核空間,和幾乎其他任何存儲位置。為了解決這個問題,現(xiàn)代系統(tǒng)配備了輸入輸出內(nèi)存管理單元(IOMMU)。這是一種硬件設(shè)備,提供DMA地址轉(zhuǎn)換和設(shè)備隔離功能,因此只允許特定設(shè)備執(zhí)行進出特定內(nèi)存區(qū)域(由IOMMU指定)的DMA 事務(wù),而不能訪問系統(tǒng)內(nèi)存地址空間的其余部分。

由于IOMMU的參與,硬件使用的物理地址可能不是真實的物理地址,而是IOMMU分配給硬件的(完全任意的)輸入輸出虛擬地址(IOVA)。一般來說,DPDK社區(qū)可以互換使用物理地址和IOVA這兩個術(shù)語,但是根據(jù)上下文,這兩者之間的區(qū)別可能很重要。例如,DPDK 17.11和更新的DPDK長期支持(LTS)版本在某些情況下可能根本不使用實際的物理地址,而是使用用戶空間虛擬地址(甚至完全任意的地址)來實現(xiàn)DMA。IOMMU負責(zé)地址轉(zhuǎn)換,因此硬件永遠不會注意到兩者之間的差異。

圖3 .IOMMU將物理地址重新映射到IOVA地址的示例

根據(jù)DPDK的初始化方式,IOVA地址可能代表也可能不代表實際的物理地址,但有一點始終是正確的:DPDK知道底層內(nèi)存布局,因此可以利用這一點。例如,它可以以創(chuàng)建IOVA連續(xù)虛擬區(qū)域的方式映射頁面,或者甚至利用IOMMU來重新排列內(nèi)存映射,以使內(nèi)存看起來IOVA連續(xù),即使底層物理內(nèi)存可能不連續(xù)。

因此,這種對底層物理內(nèi)存區(qū)域的感知是DPDK工具包中的又一個利器。大多數(shù)數(shù)據(jù)結(jié)構(gòu)不關(guān)心IOVA地址,但當它們關(guān)心時,DPDK為軟件和硬件提供了利用物理內(nèi)存布局的工具,并針對不同的用例進行優(yōu)化。

請注意,IOMMU不會自行設(shè)置任何映射。相反,平臺、硬件和操作系統(tǒng)必須進行配置,來使用IOMMU。這種配置說明超出了本系列文章的范圍,但是在DPDK文檔和其他地方有相關(guān)說明。一旦系統(tǒng)和硬件設(shè)置為使用IOMMU,DPDK就可以使用IOMMU為DPDK分配的任何內(nèi)存區(qū)域設(shè)置DMA映射。使用IOMMU是運行DPDK的推薦方法,因為這樣做更安全,并且它提供了可用性優(yōu)勢。

內(nèi)存分配和管理

DPDK不使用常規(guī)內(nèi)存分配函數(shù),如malloc()。相反,DPDK管理自己的內(nèi)存。更具體地說,DPDK分配大頁并在此內(nèi)存中創(chuàng)建一個堆(heap)并將其提供給用戶應(yīng)用程序并用于存取應(yīng)用程序內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。

使用自定義內(nèi)存分配器有許多優(yōu)點。最明顯的一個是終端應(yīng)用程序的性能優(yōu)勢:DPDK創(chuàng)建應(yīng)用程序要使用的內(nèi)存區(qū)域,并且應(yīng)用程序可以原生支持大頁、NUMA節(jié)點親和性、對DMA地址的訪問、IOVA連續(xù)性等等性能優(yōu)勢,而無需任何額外的開發(fā)。

DPDK內(nèi)存分配總是在CPU高速緩存行(cache line)的邊界上對齊,每個分配的起始地址將是系統(tǒng)高速緩存行大小的倍數(shù)。這種方法防止了許多常見的性能問題,例如未對齊的訪問和錯誤的數(shù)據(jù)共享,其中單個高速緩存行無意中包含(可能不相關(guān)的)多個內(nèi)核同時訪問的數(shù)據(jù)。對于需要這種對齊的用例(例如,分配硬件環(huán)結(jié)構(gòu)),也支持任何其他二次冪值 (當然> =高速緩存行大小)。

DPDK中的任何內(nèi)存分配也是線程安全的。這意味著在任何CPU核心上發(fā)生的任何分配都是原子的,不會干擾任何其他分配。這可能看起來很無足輕重 (畢竟,常規(guī)glibc內(nèi)存分配例程通常也是線程安全的),但是一旦在多處理環(huán)境中考慮,它的重要性就會變得更加清晰。

DPDK支持特定風(fēng)格的協(xié)同多處理,其中主進程管理所有DPDK資源,多個輔助進程可以連接到主進程,并共享由主進程管理的資源的訪問。

DPDK的共享內(nèi)存實現(xiàn)不僅通過映射不同進程中的相同資源 (類似于shmget () 機制) 來實現(xiàn),還通過復(fù)制另一個進程中主進程的地址空間來實現(xiàn)。因此,由于兩個進程中的所有內(nèi)容都位于相同的地址,指向DPDK內(nèi)存對象的任何指針都將跨進程工作,無需任何地址轉(zhuǎn)換。這對于跨進程傳遞數(shù)據(jù)時的性能非常重要。

表1. 操作系統(tǒng)和DPDK分配器的比較

內(nèi)存池

DPDK也有一個內(nèi)存池管理器,在整個DPDK中廣泛用于管理大型對象池,對象大小固定。它的用途很多——包輸入/輸出、加密操作、事件調(diào)度和許多其他需要快速分配或解除分配固定大小緩沖區(qū)的用例。DPDK內(nèi)存池針對性能進行了高度優(yōu)化,并支持可選的線程安全(如果用戶不需要線程安全,則無需為之付費)和批量操作,所有這些都會導(dǎo)致每個緩沖區(qū)的分配或空閑操作周期計數(shù)達到兩位數(shù)以下。

也就是說,即使DPDK內(nèi)存池的主題出現(xiàn)在幾乎所有關(guān)于DPDK內(nèi)存管理的討論中,從技術(shù)上講,內(nèi)存池管理器是一個建立在常規(guī)DPDK內(nèi)存分配器之上的庫。它不是標準DPDK內(nèi)存分配工具的一部分,它的內(nèi)部工作與DPDK內(nèi)存管理例程完全分離 (并且非常不同) 。因此,這超出了本系列文章的范圍。但是,有關(guān)DPDK內(nèi)存池管理器庫的更多信息可以在DPDK文檔中找到。

結(jié)論

本文介紹了構(gòu)成DPDK內(nèi)存管理子系統(tǒng)基礎(chǔ)的許多核心原理,并證明了DPDK的高性能并不是偶然,而是其體系架構(gòu)的必然結(jié)果。

本系列接下來的文章將深入探討IOVA尋址及其在DPDK中的使用;以歷史的視角,回顧DPDK長期支持(LTS)版本17.11及更早版本中提供的內(nèi)存管理功能;同時也會介紹18.11及更高版本DPDK版本中做出的更改和提供的新功能。

文章轉(zhuǎn)載自DPDK與SPDK開源社區(qū)

原文標題:DPDK內(nèi)存篇(一): 基本概念

文章出處:【微信公眾號:Linuxer】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10855

    瀏覽量

    211608
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3020

    瀏覽量

    74011
  • DPDK
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    1725

原文標題:DPDK內(nèi)存篇(一): 基本概念

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開發(fā)和運行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念。
    的頭像 發(fā)表于 10-24 17:19 ?224次閱讀

    X電容和Y電容的基本概念

    在電子電路中,電容器是一種至關(guān)重要的元件,它用于儲存電荷并在電路中釋放能量。而在眾多的電容器中,X電容和Y電容作為安規(guī)電容,因其特定的應(yīng)用場景和安全性能而受到廣泛關(guān)注。本文將對X電容和Y電容的基本概念、工作原理、應(yīng)用場景以及選擇和維護等方面進行詳細介紹。
    的頭像 發(fā)表于 10-21 16:43 ?1788次閱讀

    前端總線與內(nèi)存頻率怎么配

    前端總線(FSB)與內(nèi)存頻率的配合是確保計算機系統(tǒng)穩(wěn)定運行并發(fā)揮最佳性能的關(guān)鍵因素之一。以下是對前端總線與內(nèi)存頻率配合關(guān)系的介紹: 一、前端總線與內(nèi)存頻率的基本概念 前端總線 :前端總
    的頭像 發(fā)表于 10-12 09:10 ?255次閱讀

    集電極開路的基本概念與原理

    在集成電路的廣闊領(lǐng)域中,集電極開路作為一種獨特的輸出形式,扮演著舉足輕重的角色。它如同一個精密控制的開關(guān),既能實現(xiàn)電路的通斷,又能靈活應(yīng)對不同的電流需求。 集電極開路的基本概念與原理 集電極開路
    的頭像 發(fā)表于 09-19 10:19 ?539次閱讀
    集電極開路的<b class='flag-5'>基本概念</b>與原理

    DDR4的基本概念和特性

    里程碑。自2011年面世以來,DDR4憑借其顯著的性能提升和能效優(yōu)化,迅速成為市場主流。以下將從DDR4的基本概念、技術(shù)特性、性能優(yōu)勢以及市場應(yīng)用等方面進行詳細闡述。
    的頭像 發(fā)表于 09-04 11:43 ?1917次閱讀

    伺服系統(tǒng)基本概念和與變頻的關(guān)系

    伺服系統(tǒng)的基本概念是準確、精確、快速定位。這一概念貫穿于伺服系統(tǒng)的設(shè)計理念和運行機制中。為了實現(xiàn)這一目標,伺服系統(tǒng)采用了多種先進的控制策略和技術(shù)手段。其中,變頻技術(shù)是伺服控制的一個必不可少的內(nèi)部環(huán)節(jié)
    的頭像 發(fā)表于 08-27 15:59 ?386次閱讀

    socket的基本概念和原理

    的通信。它是一個抽象的概念,用于表示網(wǎng)絡(luò)中的一個通信實體。在計算機網(wǎng)絡(luò)中,Socket允許應(yīng)用程序通過網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)。Socket的概念最早由UNIX操作系統(tǒng)引入,后來被廣泛應(yīng)用于各種操作系統(tǒng)和編程語言中。 2. Socket的基本
    的頭像 發(fā)表于 08-16 10:51 ?1141次閱讀

    BP網(wǎng)絡(luò)的基本概念和訓(xùn)練原理

    )的多層前饋神經(jīng)網(wǎng)絡(luò)。BP網(wǎng)絡(luò)自1985年提出以來,因其強大的學(xué)習(xí)和適應(yīng)能力,在機器學(xué)習(xí)、數(shù)據(jù)挖掘、模式識別等領(lǐng)域得到了廣泛應(yīng)用。以下將對BP網(wǎng)絡(luò)的基本概念、訓(xùn)練原理及其優(yōu)缺點進行詳細闡述。
    的頭像 發(fā)表于 07-19 17:24 ?1584次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的基本概念、原理及特點

    基本概念、原理、特點以及在不同領(lǐng)域的應(yīng)用情況。 一、卷積神經(jīng)網(wǎng)絡(luò)的基本概念 卷積神經(jīng)網(wǎng)絡(luò)是一種深度學(xué)習(xí)算法,它由多層卷積層和池化層堆疊而成。卷積層負責(zé)提取圖像中的局部特征,而池化層則負責(zé)降低特征的空間維度,同時增加對圖像位移的不變性。通過這種方式,CNN能夠自
    的頭像 發(fā)表于 07-11 14:38 ?1032次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念、循環(huán)機制、長短時記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)等方面進行介紹。 循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念 循環(huán)神經(jīng)網(wǎng)絡(luò)是一種時間序列模型,其基本思想是將序列數(shù)據(jù)中的每個元素(例如,單詞、時間點等)作為輸入,通過循環(huán)結(jié)構(gòu)將前一個時間步的
    的頭像 發(fā)表于 07-04 14:31 ?665次閱讀

    組合邏輯控制器的基本概念、實現(xiàn)原理及設(shè)計方法

    廣泛應(yīng)用于計算機、通信、控制等領(lǐng)域。 本文將詳細介紹組合邏輯控制器的基本概念、實現(xiàn)原理、設(shè)計方法、應(yīng)用場景等方面的內(nèi)容,以幫助讀者全面了解組合邏輯控制器。 基本概念 1.1 組合邏輯 組合邏輯(Combinatorial Logic)是一種數(shù)字邏輯,它根據(jù)輸入信號的當前狀
    的頭像 發(fā)表于 06-30 10:26 ?1999次閱讀

    串口通信的基本概念

    串口通信(Serial Communications)的基本概念可以歸納為以下幾個方面:
    的頭像 發(fā)表于 06-12 09:28 ?610次閱讀
    串口通信的<b class='flag-5'>基本概念</b>

    斬波器的基本概念和工作原理

    各種電子設(shè)備對電源的需求。本文將詳細介紹斬波器的基本概念、工作原理及其應(yīng)用,以期為讀者提供全面的了解和認識。
    的頭像 發(fā)表于 05-24 16:08 ?3056次閱讀

    萬用表的基本概念及結(jié)構(gòu)組成

    在電子測試領(lǐng)域,萬用表被譽為“全能戰(zhàn)士”。其強大的功能和廣泛的應(yīng)用使其成為電子工程師、維修人員和技術(shù)人員不可或缺的測量工具。本文將詳細介紹萬用表的基本概念、結(jié)構(gòu)組成以及應(yīng)用,帶您領(lǐng)略萬用表的獨特魅力。
    的頭像 發(fā)表于 05-10 15:05 ?1513次閱讀

    電源路徑的基本概念

    電源路徑是指電流從電源到負載的傳輸路徑。在電路中,電源是提供電能的設(shè)備,而負載則是消耗電能的設(shè)備。電源路徑的穩(wěn)定性和效率對電路的性能和可靠性有著重要的影響。本文將介紹電源路徑的基本概念。 下圖展示了
    的頭像 發(fā)表于 01-18 15:39 ?818次閱讀
    電源路徑的<b class='flag-5'>基本概念</b>
    主站蜘蛛池模板: 一级大乳奶| 变形金刚7免费观看完整| 无码精品AV久久久奶水| 亚洲国产亚综合在线区尤物| 在线视频中文字幕| 第一福利视频网站在线| 精品亚洲午夜久久久久| 99精品AV无码一区二区| 古代荡乳尤物H妓女调教| 精品久久中文字幕有码| 强壮的公次次弄得我高潮韩国电影 | 视频一区在线免费观看| 亚洲视频欧美视频| jizzjizz中国大学生| 国际老妇高清在线观看| 欧美日韩亚洲成人| 亚洲人成网站在线播放| WWW国产色情在线观看APP| 狠狠色狠狠色综合日日小说| 日本高清在线一区二区三区| 樱花草动漫www| 国产精品一区二区欧美视频| 免费高清在线影片一区| 亚洲黄色在线视频| 伊人久久综合成人亚洲| 国产成人久久精品激情| 年轻的母亲4线在线观看完整| 亚洲精品成人a| 东北嫖妓对白粗口| 伦理 电影在线观看百度影音| 国产亚洲精品欧洲在线视频| 免费看黄软件| 亚洲免费视频观看| 中文字幕在线久热精品| 国产精品亚洲污污网站入口 | 六六影院午夜伦理| 羞羞答答影院在线| 成人在线视频播放| 92电影网午夜福利| 精子pk美女| 晓雪老师我要进你里面好爽|