999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MIPS VZ 虛擬化環境中透明大頁性能的優化①

2021-02-11 05:01:20毛碧波楊小娟
高技術通訊 2021年11期

朱 琛 王 劍 高 翔 毛碧波 楊小娟

(*計算機體系結構國家重點實驗室(中國科學院計算技術研究所) 北京100190)

(**中國科學院計算技術研究所 北京100190)

(***中國科學院大學 北京100049)

(****龍芯中科技術有限公司 北京100190)

0 引言

內存管理是影響計算機性能的重要因素之一,操作系統的虛實地址轉換依賴于CPU 的內存管理單元(memory management unit,MMU),在訪存密集型應用中MMU 重填地址轉換緩沖器(translation lookaside buffer,TLB) 的開銷容易成為性能瓶頸[1-2]。在硬件輔助虛擬化環境中,為了減少虛擬機內存缺頁的次數,往往采用兩級TLB,一個虛擬機的虛擬地址轉換需要兩個TLB 表項,這進一步加重了該問題。采用內存大頁技術可以明顯增大TLB對內存的覆蓋率,通??梢詼p少TLB 的缺頁次數,因此常被用于優化虛擬機訪存[3]?,F有很大一部分處理器采用分組TLB 實現對大小頁的支持。透明大頁分配機制在面對使用大容量連續數據集、訪存頻繁且局部性差的程序時會造成這類處理器的TLB 負載不均衡,影響系統性能。本文針對這一問題提出了一種優化TLB 負載均衡度的方法,并創新地提出了一種高效的TLB 負載均衡度監測機制和基于負載不均衡度的大頁調度策略。

本文的內容如下,第1 節以MIPS 處理器為例介紹了MMU 中內存硬件輔助虛擬化的方法和MMU 對大頁的支持。第2 節以包含虛擬化組件(virtualization module,VZ)擴展的龍芯3A4000 處理器為平臺,通過實驗對比了MIPS 處理器在虛擬化環境下啟動大頁前后SPEC CPU 2006 測試中的性能。第3 節對SPEC CPU 2006 測試中性能異常的項目進行了分析。第4 節對現有的內存分頁策略進行了改進。第5 節對改進后的KVM 虛擬機進行了性能測試。第6 節總結了全文并展望了未來工作。

1 背景

1.1 虛擬機的地址翻譯

內存頁是操作系統分配內存的最小單位,為了保護不同進程的數據,用戶進程使用虛擬地址,MMU 查詢TLB,將虛擬地址翻譯為物理地址進行訪問。如果TLB 中未命中,頁表遍歷器(pagewalk)會查詢頁表并將對應的表項填入TLB 中。

虛擬化需要使用兩級頁表完成虛擬機的地址翻譯,一級是虛擬機維護的客模式虛擬地址(guest virtual address,GVA)到客模式物理地址(guest physcial address,GPA)的頁表。一級是虛擬機管理器(virtual machine monitor,VMM),本文使用KVM 作為VMM維護GPA 到宿主機物理地址(host physical address,HPA)的翻譯[4]。除此之外,虛擬機的虛擬外設也會使用正常的宿主機虛擬機地址(host virtual address,HVA)到HPA 的頁表項。

虛擬機地址翻譯依賴于MMU 和TLB 的硬件輔助。常見的虛擬機內存地址翻譯的硬件輔助根據使用TLB 的層級可分為兩種。

第一種方式是虛擬機使用一級TLB 完成虛擬機的地址翻譯,虛擬機的TLB 表項中只記錄GVA或GPA 到HPA 的轉化。所有的TLB 操作由宿主機內核態完成[5]。早期的X86處理器、龍芯的GS464E 處理器核使用的虛擬化擴展采用這種方式。一次虛擬機TLB 重填的流程如圖1 所示。

圖1 虛擬機地址翻譯流程

這種方式下,每次TLB 重填需要先產生宿主機例外,查詢KVM 中的GVA→GPA 影子頁表,如影子頁表未命中需要返回客模式通過GVA 查詢GPA,最終再回到VMM 通過GPA 找到HPA,并將GVA 到HPA 的對應關系填入頁表。這種方式的優點是硬件實現較為簡單,占用TLB 表項少,只需對TLB 和MMU 做少量更改就可實現虛擬機的內存虛擬化;缺點也很明顯,一次頁表的填入經常需要在客模式和根模式下多次切換,每次切換CPU 都需要保存大量的狀態信息,開銷較大。

另一種方式是使用兩級TLB 完成虛擬機地址的翻譯,其中一級記錄GVA 到GPA 的轉化,這一級TLB 的操作在客模式內核態完成。第二級記錄GPA 到HPA 的轉化,這一級的TLB 操作由宿主機內核態完成[6]。Intel 的擴展頁表(extended page tables,EPT)、AMD 的嵌套頁表(nested page tables,NPT)和MIPS 的VZ 都使用這一方式。MIPS VZ 中的地址翻譯邏輯如圖2 所示。

圖2 VZ 虛擬機地址翻譯流程

在這種模式下,pagewalk 分別查詢虛擬機和VMM 的頁表完成各自的TLB 重填操作。兩個表項一個記錄GVA →GPA,一個記錄GPA →HPA,由MMU 根據兩個表項完成地址的翻譯。這樣在一定程度上避免了多次切換CPU 狀態的問題。除此之外,由于GVA→GPA、GPA→HPA 的映射是完全相互獨立的,兩級地址翻譯之間實現了解耦,方便使用透明大頁等內核的內存優化技術。

使用兩級TLB 后虛擬機環境地址翻譯的代價仍然明顯高于非虛擬機環境。在客模式內核態查找GVA→GPA 的過程中,需要查詢虛擬機的各級頁表,如果頁表所在GPA 對應的GPA→HPA 表項不在TLB 中時,會產生額外的VMM 缺頁異常,返回VMM 填入對應的GPA→HPA 頁表項,每訪問一級客模式頁表都可能產生額外的重填,每次額外重填會帶來1 次客模式到根模式的切換和數次訪存。一次重填最多會產生M × N+M+N次訪存,其中M和N分別為宿主機和虛擬機的頁表級數[7]。如圖3所示,如果M和N都為4,一次重填最多需要24 次訪存。

圖3 虛擬機兩級頁表的遍歷過程

1.2 操作系統和處理器對大頁的支持

操作系統在多級頁表中習慣于用一個內存頁存儲一個目錄級,以4 kB 頁為例,在64 位地址的條件下,一個4 kB 頁可以儲存512 個64 位地址,即頁表項(page table entry,PTE) 的上一級頁中間目錄(page middle directory,PMD)可以覆蓋512 ×4 kB=2 MB 的地址空間,上一級的頁上級目錄(page upper directory,PUD)為512 ×2 MB 即1 GB,為了管理方便,一般一個大頁直接對應其中一個目錄項。如X86-64 使用4 kB 小頁對應的大頁即為2 MB 和1 GB。

MMU 根據設計可以支持一種或幾種不同規格的內存頁大小,對應的TLB 也支持相應的頁大小。較小的頁大小能夠避免內存的浪費,但由于TLB 的數量限制,能夠覆蓋的內存范圍有限,因此在一些特定的應用場景,采用更大的內存頁(即大頁)能夠有效提升TLB 的內存覆蓋率,提升性能。

MIPS 處理器一般有4 種不同的TLB,分別是指令TLB(ITLB)、數據TLB(DTLB)、固定頁大小TLB(FTLB)和可變頁大小TLB(VTLB)。ITLB 和DTLB統稱為微TLB(μTLB),FTLB 和VTLB 統稱為聯合TLB(JTLB)。μTLB 對軟件透明,由硬件從JTLB 中查詢后填入,因此其內容是JTLB 的子集[8]。JTLB中FTLB 同時只能使用一種頁大小,VTLB 同時支持不同頁大小(步進與μTLB 相同)。VTLB 使用全相連結構支持不同頁大小,由于結構限制其項數較少。以龍芯3A4000 使用的GS464V 處理器核為例,ITLB和VTLB 為64 項,DTLB 為32 項,FTLB 為2048 項。

在VZ 模式下,JTLB 中有GVA→GPA、GPA→HPA 2 種表項,由軟件頁表遍歷器填入,MMU 的硬件邏輯將2 種表項翻譯成GVA→HPA 的單一表項填入μTLB。JTLB 中的FTLB 項數較多,一般用于小頁,VTLB 一般用于大頁。其他架構的處理器,如X86 和Sparc 的部分處理器也使用了大小頁TLB 分組的結構[9-10]。

2 VZ 虛擬化環境下的大頁性能測試

Linux 系統中對大頁的應用主要分為2 種模式,即大頁文件系統(Hugetlbfs)和透明大頁(transparent huge pages,THP)。Hugetlbfs 需要操作系統手動預先分配大頁并映射為一個文件,用戶程序可以通過該文件獲取按大頁預分配的內存。THP 是一種用戶透明的大頁優化,內核會根據進程的內存使用情況,自動分配大頁或將內存中的小頁合并成大頁。THP 避免了Hugetlbfs 需要應用程序顯式調用的問題,使大頁的應用更為廣泛[11]。

MMU 使用大頁需要被翻譯的地址和翻譯的地址同時滿足大頁的對齊要求,KVM 使用的內存是在根模式用戶態申請的,根內核THP 的分配規則是將HVA 和HPA 按大頁對齊,卻沒有維護HPA 和GPA的對齊關系。如果HVA、HPA 和GPA 三者不能同時滿足大頁對齊時,即使根文件系統和虛擬機都使用了透明大頁,最終KVM 在TLB 中填入的表項仍是小頁。如圖4 所示,HVA 的013FFC000 對應GPA的0xA000000,雖然根模式和虛擬機內核都使用了大頁,最終TLB 填入的仍是小頁。該問題解決辦法是在用戶態啟動時考慮對齊問題,申請虛擬機內存對應的HVA 地址時額外增加一個大頁大小的虛擬地址空間,取第一個大頁對齊的HVA 地址為客戶機GPA 的起始地址。

圖4 HVA 和GPA 不對齊時頁表的狀態

測試中虛擬機和KVM 都通過THP 的方式使用大頁,使用SPEC CPU 2006 測試作為對比基準。CPU 為龍芯3A4000 處理器,主頻1.8 GHz。物理機和虛擬機都設置為雙核,內存均為4 GB,測試中未開啟3A4000 的向量優化。測試中涉及4 種組合:物理機不開啟透明大頁,物理機開啟透明大頁,虛擬機和KVM 不開啟透明大頁,虛擬機和KVM 開啟透明大頁,測試成績對比如圖5 所示。

圖5 龍芯3A4000 在不同組合情況下的SPEC2006 CPU 性能對比

可見使用大頁后,SPEC CPU 2006 中Gems-FDTD、cactusADM、bwaves、xalancbmk、astar、omnetpp、sjeng 都有較大幅度的性能提升,且宿主機和虛擬機使用大頁前后的性能變化趨勢一致。但mcf程序的成績出現了異常,物理機使用大頁提升了16.2%,但虛擬機使用大頁卻下降了9.2%。除此之外的其他測試項目,大頁的影響較小。

3 測試項性能下降的原因分析

現有研究認為透明大頁的性能問題主要來源于以下幾個方面:(1)內存碎片化和多虛擬機內存超分造成的大頁分配困難[11];(2)透明大頁分配、合并和拆分的開銷造成的性能抖動;(3)多個虛擬機或進程頻繁切換引起的TLB 失效[12]。針對上述問題作了如下實驗,宿主機只啟動一臺虛擬機且沒有其他活躍進程。虛擬機啟動時使用Hugetlbfs 預分配大頁,確保虛擬機在GPA→HPA 轉換時一定是大頁,且虛擬機使用時沒有大頁分配、合并的相關開銷。同時監測mcf 測試運行時進程的大頁使用情況,確定mcf 運行時成功分配了大頁。這種情況下,mcf 的測試成績為7.84,與使用兩級透明大頁時的測試分值7.79 相差僅為0.6%,因此可以排除是因為大頁分配失敗引起的性能下降。在該實驗的基礎上修改了TLB 重填例外代碼,對TLB 的重填來源進行了統計,結果顯示測試時虛擬機99%以上的重填都來自于mcf 測試進程,宿主機99%以上的重填都來自于運行mcf 的虛擬機,排除了多個虛擬機或進程頻繁切換引發的TLB 失效。最后通過perf 統計了虛擬機透明大頁分配、合并和拆分相關函數的時間占比,統計結果顯示透明大頁相關函數的時間占比小于總時間的0.1%。因此現有研究不能夠解釋mcf 測試在龍芯3A4000 虛擬機使用透明大頁時性能下降的原因。

為了進一步分析mcf,在圖5 的組合基礎上,增加了關閉KVM 透明大頁保留客模式透明大頁和保留KVM 透明大頁關閉客模式透明大頁2 種情況的測試。測試結果如圖6 所示。測試結果中可以看到,無論是GVA→GPA 還是GPA→HPA 使用大頁對性能的影響都是正向的。但同時對GVA→GPA 和GPA→HPA 使用大頁時,卻產生了明顯的負面影響。

圖6 不同大頁策略下的mcf 分值對比

mcf 是一個C 語言實現的,用于大型公共交通中的單站車輛調度的程序,實測在64 位系統中占用約1.6 GB 的連續內存地址,訪存頻繁且訪存局部性差。測試系統默認使用16 kB 小頁,對應的PMD 尺寸為32 MB。GS464V 用于大頁的TLB 為VTLB,共有64 項。在物理機運行時,64 項大頁可覆蓋2 GB的地址空間。在虛擬機模式下運行時,由于使用兩級頁表,需要VTLB 中同時用2 個頁表項才能完成一次地址翻譯,因此最大覆蓋的不需要替換的地址范圍為1 GB。這意味著GS464V 在默認情況下,使用大頁能覆蓋mcf 測試的全部內存地址,在虛擬機模式下則不能全部覆蓋。這在mcf 程序中會帶來頻繁的TLB 重填影響性能。為了進一步驗證,在Linux 內核通用(物理機和虛擬機復用,負責填入HVA→HPA 或GVA→GPA 的頁表項)和KVM 模塊專用(負責填入GPA→HPA 的頁表項)的TLB 重填例外入口加入了計數,并區分大小頁,統計不同條件下測試mcf 每秒鐘TLB 重填的次數。測試分值和重填次數見圖7。圖中曲線對應測試分值,左邊的縱坐標標示每秒鐘重填次數,右邊的縱坐標標示測試分值。從左到右測試環境依次為宿主機關閉透明大頁、宿主機開啟透明大頁,虛擬機環境關閉所有透明大頁,虛擬化環境只使用虛擬機透明大頁和虛擬機環境開啟兩級透明大頁。

圖7 不同環境下mcf 測試的TLB 重填次數和分值

可見測試分值與重填次數呈明顯相關性,重填次數越多,測試分值越低。使用透明大頁時,Linux的內存管理器傾向于盡可能分配大頁[11],因此在兩級內存管理都開啟THP 時,所有的頁面都使用大頁,TLB 的重填主要局限于大頁的VLTB,達218 萬次/s,而FTLB 僅重填不到450 次/s。手動關閉KVM 的THP 后總重填次數下降到128 萬次。這表明2 種TLB 之間的負載不均衡,資源沒有得到充分利用。

4 基于TLB 負載均衡的虛擬機性能優化

由上述分析可知,現有的Linux 透明大頁分配機制會造成面對使用大容量連續數據集、訪存頻繁且局部性差的應用程序時,當大頁的表項不足以覆蓋熱點內存區域會產生對TLB 表項的劇烈競爭,造成應用程序使用大頁后性能下降。硬件上解決這一問題最直接的辦法是增加表項數量,但TLB 的數量增加受時序限制,也會增加硬件成本。與此同時用于小頁的TLB 表項在mcf 測試中處于空閑狀態沒有充分利用。使用單級大頁后性能提升的實驗結果表明,如果充分利用空閑的TLB 資源,可以減少TLB 替換次數,提升性能。

優化該問題需要通過對TLB 的重填狀況進行監測,識別出不平衡狀態?,F有的相關性能計數器只提供了總的TLB 重填次數,但MIPS 的TLB 軟件重填機制和核內空閑寄存器為高效統計大頁重填的次數提供了可能。通過大頁重填次數和總的重填次數,就能夠得到TLB 的負載不均衡度。在物理機上一般同時運行數百個到上萬個進程,對之進行監控代價較高。同時由于物理機運行的負載較為復雜,行為模式經常發生變化。同時在一個物理機上運行的虛擬機數目有限,且虛擬機通常長時間運行穩定負載,因此在KVM 中對虛擬機進行監控和優化更為合理。利用現有硬件資源在KVM 中設計一個高效的TLB 負載檢測機制,并根據TLB 負載不均衡度調整大頁分配比例,可以提高TLB 的命中率,提升系統性能。

4.1 TLB 負載檢測機制

TLB 重填是影響CPU 性能的關鍵路徑,因此需要一個高效的TLB 負載檢測機制,以避免對系統產生負面影響。本文中使用的檢測方法,充分利用龍芯GS464V 處理器核的硬件資源,實現了可開關的軟件大頁重填計數器,避免了在TLB refill 中增加訪存,具體結構如圖8 所示。

圖8 TLB 負載檢測機制

該檢測方法利用了龍芯3A4000 處理器中的以下硬件資源:硬件TLB 重填計數器(以下簡稱TLB計數器)和2 個空閑的Kscratch 寄存器。

硬件TLB 重填計數器是GS464V 中的一個性能計數器,能夠統計總的宿主機TLB 重填次數,但無法區分大小頁。Kscratch 寄存器是GS464V 中的一組64 位可讀寫寄存器,用于存放核心態軟件的暫存數據。GS464V 中一共有6 個Kscratch 寄存器,為Kscratch 1~6。在現有的Linux 內核中,除了KSratch 1,其余5 個沒有使用。本文使用了Kscratch 5和Kscratch 6 兩個寄存器。其中Kscratch 5 用于開關軟件大頁重填計數器,Kscratch 6 用于軟件大頁重填計數器存放計數值。

軟件上增加2 個模塊,TLB 負載監控程序和軟件大頁重填計數器(以下簡稱大頁計數器)。TLB負載監測程序在時鐘中斷例外中執行,軟件大頁重填計數器位于TLB 重填例外函數中。除此之外對內核的內存管理單元進行了少量修改,增加了限制虛擬機大頁分配數量的邏輯。該邏輯中使用了2 個參數:當前虛擬機允許分配的大頁數Nhl和當前虛擬機使用的大頁數Nhc。Nhl的初始值設定為虛擬機內存大小除以系統大頁尺寸,即虛擬機所有的內存都可使用大頁。Nhc的值由內存管理單元維護,記錄當前虛擬機使用的大頁數。

具體流程如圖8 所示。

(1)TLB負載監控程序通過讀取硬件TLB重填計數器和Nhc、Nhl,統計當前MMU 的負載和大頁使用情況。

(2)當監控程序判別有必要監測大頁重填計數時,向Kscratch 5 寄存器寫入非零值。

(3)TLB 重填時讀取Kscratch 5 寄存器,當值為非零時,開啟軟件大頁計數器。

(4)當前填入的頁為大頁時,軟件計數器更新Kscratch 6 寄存器的計數值。

(5)監控程序根據實時的總重填計數和大頁重填計數,判斷是否處于負載不均衡的狀態。

(6)當監控程序判別不均衡需要調整透明大頁分配策略時,步進式調整Nhl。

4.2 基于負載不均衡度的大頁調度策略

監控程序通過TLB 重填頻率,結合處理器單次TLB 重填耗時,可以判斷TLB 重填在CPU 運行中的耗時占比。當耗時占比高于閾值時,并不會馬上啟動后續流程,而是會更新一個計數器(以下稱該計數器為CL)。當連續高于閾值時CL會逐次累加,而中間有不滿足閾值的情況時CL會逐次遞減直至為0,當CL累加到一定數量時,監控程序才會啟動大頁計數器。本文將啟動條件設為CL≥2560,這意味著TLB 連續處于高負載10 s 以上。這樣做是為了避免調度算法過于敏感,頻繁切換狀態造成系統性能擾動。

啟動大頁計數器后,獲取一個時鐘中斷間隔內的大頁重填次數Nhr和總的重填次數Nr。由于大頁和小頁的TLB 項數不同,用Nhr和Nr -Nhr分別除以大頁和小頁的TLB 項數,得到平均每個大頁TLB 表項重填的頻率fh和平均每個小頁TLB 表項的重填頻率fs,不平衡程度y通過下列函數衡量:

y連續計算3 次,求取其算術平均值。當不平衡度大于閾值時,啟動大頁調度程序,本文實驗使用的不平衡度閾值為20。

在y超出閾值且fh>fs時,表明負載主要集中于大頁使用的VTLB。監控程序將Nhl更新為Nhc -1。此時,Linux 內存管理單元檢測到Nhc >Nhl,會拆分大頁至Nhl=Nhc。如果此時fh和fs大小關系沒有發生翻轉且y仍高于閾值,會進一步減小Nhl,直至fh和fs大小關系發生翻轉或y降低到閾值以下。此后監控程序會關閉大頁計數器,并將CL清零。

如果負載集中于FTLB 且Nhc <Nhl,表明虛擬機此時需要等待內存管理程序合并透明大頁,且內存管理程序本身具有權限,此時監控程序會關閉大頁計數器,并將CL清零。如果Nhc=Nhl,且Nhl覆蓋范圍比虛擬機物理內存小,將擴大Nhl。

5 優化后的性能測試

為了驗證改進的效果,優化后重新測試了mcf,并對TLB 重填次數進行了重新統計,結果如圖9 所示??梢娫陂_啟兩級透明大頁的情況下,優化后的虛擬機的分值相較于優化前提升了45.1%,超過了虛擬機手動關閉一級大頁的分值,也超過了宿主機使用小頁時的分值。

圖9 優化后的mcf 測試分值

在此基礎上,對SPEC 2006 整體地重新測試,測試結果如圖10 所示。除mcf 外astar、cactusADM 和GemsFDTD 有1%~2%的性能提升,其他測試項變化不明顯。沒有出現性能下降超過1%的項,表明新分配機制引入的開銷沒有對其他測試的性能產生明顯影響。

圖10 龍芯3A4000 優化前后的SPEC CPU 2006 性能對比

為了進一步驗證優化效果,使用sysbench 對優化前后的數據庫性能進行了對比。sysbench是一個模塊化跨平臺多線程的基準測試工具,可以評估不同系統參數下的數據庫負載情況。對比測試的數據庫和測試均在本地運行,測試數據庫含800 萬個條目,測試使用2 個線程,最大數據庫事務次數50 000次,測試時兩級透明大頁均開啟。測試結果如表1 所示,優化后的測試成績有12%左右的性能提升。

表1 sysbench 數據庫測試成績對比

6 結論

本文利用龍芯3A4000 處理器和SPEC CPU 2006 性能測試工具分析了MIPS VZ 虛擬化環境下大頁的性能,并針對發現的分組TLB 負載不均衡的問題提出了改進方法,經測試改進后的透明大頁性能在部分場景中有了明顯提高。

本文提到的方法還有進一步改進的空間。本文使用的隨機拆分大頁的方式可能帶來性能抖動,未來通過進一步改良TLB 負載監測機制可以獲得更細粒度的信息,實現對熱點大頁的識別和有針對性的拆分。同時運行多虛擬機時,不僅存在處理器核TLB 負載不均衡的問題,還存在著不同虛擬機之間大頁分配不均衡的問題;系統長時間運行后,由于不可移動的頁面存在會使物理地址空間不連續難以分出大頁[13]。這些問題有待后續研究。

主站蜘蛛池模板: 亚洲综合第一页| 国产人在线成免费视频| 77777亚洲午夜久久多人| 在线色国产| 亚洲成a人片在线观看88| 992tv国产人成在线观看| 免费不卡在线观看av| 欧美日韩国产精品va| 美女啪啪无遮挡| 青青热久麻豆精品视频在线观看| 国产青青操| 毛片免费在线视频| 亚洲成a人片77777在线播放| 97青草最新免费精品视频| 色婷婷在线影院| 国产精品白浆在线播放| 亚洲精品无码不卡在线播放| 亚洲欧美一区二区三区图片| 亚洲色欲色欲www网| AV熟女乱| 国产h视频在线观看视频| 国产成人无码综合亚洲日韩不卡| 色噜噜在线观看| 国产剧情无码视频在线观看| 亚洲手机在线| 91原创视频在线| 国产日韩欧美在线播放| 国产成人精品高清不卡在线| 欧美一区二区自偷自拍视频| 日本AⅤ精品一区二区三区日| 亚洲国产天堂在线观看| 国产黄在线观看| 国产清纯在线一区二区WWW| 五月婷婷综合在线视频| 国产福利免费观看| 欧美成人二区| 区国产精品搜索视频| 国产欧美视频综合二区| 国产福利2021最新在线观看| 免费在线视频a| 欧洲精品视频在线观看| 久久6免费视频| 亚洲国产看片基地久久1024 | 精品福利国产| 亚洲国产精品VA在线看黑人| 日韩高清成人| 亚洲色图欧美激情| 亚洲无码精彩视频在线观看| 国产你懂得| 99热国产这里只有精品9九| 四虎成人精品| 在线国产资源| 情侣午夜国产在线一区无码| 3D动漫精品啪啪一区二区下载| 国产人妖视频一区在线观看| 国产精品久久久久鬼色| 欧美激情视频二区三区| 亚洲国内精品自在自线官| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲欧美在线综合一区二区三区| 久久久国产精品免费视频| 中文字幕有乳无码| 精品三级网站| 国产女人18水真多毛片18精品| 日本AⅤ精品一区二区三区日| 久久综合结合久久狠狠狠97色| 在线另类稀缺国产呦| 亚洲bt欧美bt精品| 日韩精品无码免费专网站| 国产区成人精品视频| 亚洲国产91人成在线| 欧美专区在线观看| 狠狠操夜夜爽| 国产a v无码专区亚洲av| 午夜福利免费视频| 国产亚洲精久久久久久无码AV| 综合久久久久久久综合网| 成人欧美日韩| 人妻中文字幕无码久久一区| 人人看人人鲁狠狠高清| 91av成人日本不卡三区| 欧美日韩激情在线|