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

面向科學計算可視化的兩級并行數據讀取加速方法

2017-11-07 08:38:56曹立強莫則堯
計算機研究與發展 2017年4期
關鍵詞:進程可視化

石 劉 肖 麗 曹立強 莫則堯

1(中國艦船研究院 北京 100101)

2(北京應用物理與計算數學研究所 北京 100088)

3 (中物院高性能數值模擬軟件中心 北京 100088)

(shilbill@vip.sina.com)

科學計算是以實際應用為牽引、以高性能計算機為依托而快速發展的一門交叉學科,被廣泛應用于核武器、能源、信息、制造、材料和氣候等諸多領域的科研和生產,對國防安全和國民經濟發展起著非常積極的作用[1-2].科學計算可視化(visualization in scientific computing, ViSC)簡稱可視化,是運用計算機圖形學和圖像處理技術,將科學計算過程中產生的數據及計算結果轉換為圖像,在屏幕上顯示出來并進行交互處理的技術,已成為科學研究的重要手段之一[3].

為了匹配超級計算機系統的整體計算能力,超級計算機的存儲子系統通常被設計為具有良好的IO性能可擴展性[5],表現為:應用獲得存儲子系統最佳性能時的IO訪問并發度,與超級計算機系統總計算核數通常處于同一數量級.

但是,相對于超級計算機系統超大的總計算核數(可達數萬至數百萬),科學計算可視化應用的進程規模(等于IO訪問并發度)則相對偏小(經驗上通常設為科學計算應用進程規模的1%,典型值為數個至數百個),甚至遠小于超級計算機系統的總計算核數(比如廣州超算中心的天河2號超級計算機系統具有約300萬個計算核心,而可視化應用典型進程規模與之相比,一般小幾個數量級).因此,科學計算可視化應用往往無法充分利用超級計算機的IO性能,影響可視化應用整體的運行效率.

本文提出了一種面向科學計算可視化的兩級并行數據讀取加速方法,其創新和貢獻如下:1)根據可視化應用典型IO進程規模,遠小于超級計算機存儲子系統發揮最佳性能時的IO訪問并發度這一特性,提出了面向科學計算可視化的兩級并行數據讀取加速方法;2)以典型科學計算可視化應用TeraVAP[6-7]為基礎,設計并實現了功能獨立的兩級并行數據讀取加速模塊,驗證了可視化兩級并行數據讀取方法的有效性.

1 背 景

1.1 超級計算機存儲子系統及性能特征

超級計算機上的存儲子系統通常使用并行文件系統進行文件管理,科學計算環境下常見的并行文件系統包括Lustre[8],PVFS[9],GPFS[10]等.

并行文件系統的組件通常包括客戶端、元數據服務器(metadata server, MDS)和存儲服務器.并行文件系統通常使用存儲服務器集群的設計,以使存儲系統的容量和性能能夠容易地進行橫向擴展(scale-out):也即通過增加存儲服務器的數量,即可容易地進行存儲系統容量和性能的擴展.作為一個例子,圖1給出了Lustre文件系統的整體架構[11],其中OSS(object storage service)servers即代表存儲服務器集群.

Fig. 1 Lustre file system architecture圖1 Lustre文件系統架構

存儲服務器集群中通常包含較多的存儲節點(存儲服務器)以及大量的存儲設備(磁盤),為了充分利用這些存儲系統資源,應用通常需要較高的IO訪問并發度(總的訪問線程數).其外在表現為:超級計算機中的存儲子系統通常具有良好的IO性能可擴展性,并以此匹配超級計算機的超大總計算核數.作為一個例子,IBM Blue GeneP是2008年計算性能世界排名前5的超級計算機系統,該系統具有40 960個4核計算節點,共計163 840個CPU核.隨著IO進程(每進程1個線程,進程數等于線程數,也即等于IO訪問并發度)數量變化,IBM Blue GeneP的數據讀取性能擴展性如圖2所示(該測試直接基于底層POSIX接口,在全系統獨占模式下進行).

Fig. 2 Data read performance scalability of IBM Blue GeneP system圖2 IBM Blue GeneP系統數據讀取性能擴展性

1.2 科學計算可視化應用工作流程

科學計算可視化的主要工作包括并行數據讀取、并行數據抽取和并行圖形繪制3部分,其工作流程為:首先多個可視化進程并行讀取科學計算結果數據集,然后多個進程進行并行數據抽取工作,最后多個進程并行進行圖形繪制工作,如圖3所示:

Fig. 3 Workflow of visualization in scientific computing圖3 科學計算可視化工作流程

目前的可視化應用,圖3中所示的3部分工作是緊耦合在一起的.并行數據讀取性能是影響科學計算可視化應用性能的最主要方面,其主要涉及到計算機數據存儲方面的知識,而并行數據抽取和圖形繪制則主要涉及計算機圖形學方面的知識.

科學計算可視化應用通常采用一個適當的進程規模,這是因為:

1) 為了保證可視化應用具有一定的、用戶可接受的性能,需要使用多個進程并行工作.

2) 可視化應用并行工作進程數量又不能太多,其原因有3點:

② 對于打算重新購買超級計算機的用戶而言,更大進程規模導致需要購買更多的計算節點資源,增大用戶使用成本,而對于使用公共計算機資源的用戶而言,更大進程規模導致排隊等待時間變長、用戶使用體驗變差;

③ 程并行規模的增大,導致通信等開銷的加大,在某些情況下反而可能導致一些可視化并行算法的效率降低.

目前,在這些因素(性能與功耗等)權衡下,經驗上科學計算可視化應用的進程規模通常設為科學計算應用進程規模的1%,典型值為數個至數百個.

1.3 科學計算可視化應用典型IO訪問模式

TeraVAP(terascale visualization & analysis platform)[6-7]是一款典型的科學計算可視化應用,由北京應用物理與計算數學研究所研制,服務于基于JASMIN(J parallel adaptive structured mesh application infrastructure)[12],JAUMIN(J parallel adaptive unstructured meshes applications infrastr-ucture)[13],JCOGIN(J parallel mesh-free combina-tory geometry infrastructure)[14]三個科學計算領域編程框架研制的科學計算應用.

目前TeraVAP已成功運用于數十個科學計算應用的后處理可視化數據分析,是一款典型的科學計算可視化應用,其數據訪問模式為:多個進程并行讀取科學計算結果總數據集的不同子數據集,如圖4所示.這些子數據集之間交集為空,并集為總數據集.每個子數據集通常保存于一個數據文件中,總數據集的應用元數據信息保存于一個summary文件中.

Fig. 4 Access pattern of visualization in scientific computing applications圖4 科學計算可視化數據訪問模式

TeraVAP中每個進程讀取的數據分為2級:第1級為網格片(patch)級,該級為邏輯概念,每個進程需要讀取多個網格片;第2級為變量(variable)級,每個邏輯網格片上可以擁有多個變量,實際科學計算數據存儲于變量中,如圖5所示:

Fig. 5 Read data’s organization diagram for each TeraVAP process圖5 TeraVAP每進程讀取數據組織示意圖

單個TeraVAP進程內部的數據讀取的基本單位為一個變量,其訪問流程為:以網格片(patch)為主循環、以變量(variable)為次循環串行讀取數據,直到該進程被分配的所有網格片上的所有變量都讀取完成,該進程數據讀取過程結束,其流程如圖6所示.這種數據訪問模式意味著可視化應用對存儲子系統的訪問并發度(總IO線程數)跟進程數相等.

Fig. 6 Data read flow of one TeraVAP process圖6 單個TeraVAP進程數據讀取流程

可視化應用的進程規模通常較小(數個至數百個,遠小于超級計算機系統總計算核數),并且由于進程數跟訪問并發度(IO線程數)相等,因此,較低的訪問并發度導致可視化應用無法獲得較高的IO性能(參見圖2).

2 問 題

P=F(N),

(1)

其中,P代表可視化應用的IO性能,N代表可視化應用使用的IO線程數,函數F代表隨訪問線程數變化的IO性能.

F的特點是:當N=N*時(N*通常跟超級計算機系統總計算核數處于同一數量級),P達到最大值;當NN*時,由于過分的競爭,性能會比峰值性能降低.

可視化應用通常使用較少的進程數NP,也即可視化應用使用的IO進程數NP通常遠小于N*,即NP?N*.由于可視化應用采用單級進程間并行方式讀取數據(每進程內線程數為1),因此可視化應用的總IO線程數NT等于總進程數NP,即NT=NP.

需要解決的問題是:如何使得在NP較小時得到較大的P值?

3 方法與實現

通過第1節和第2節介紹和分析可見:1)科學計算可視化應用所采用的進程數相對較小,通常為數個至數百個;2)設計良好的超級計算機存儲子系統通常具有較好的IO性能可擴展性,應用獲得存儲子系統最佳性能時的IO訪問并發度與超級計算機系統總計算核數通常處于同一數量級.由于可視化應用的典型進程規模通常遠小于超級計算機的總計算核數,因此科學計算可視化應用在超級計算機上無法充分利用IO資源,從而無法獲取較高的IO性能.本節介紹可視化應用的兩級并行數據讀取方法與實現.

3.1 兩級并行數據讀取方法

兩級并行數據讀取方法的思想是:

1) 在保持可視化進程規模不變的前提下,在進程間進行數據讀取任務分配,使得進程間并行讀取數據;

2) 在可視化進程內部引入多線程并行讀取數據,使得進程內并行讀取數據.

兩級并行數據讀取方法的流程如圖7所示,通過進程間和進程內的兩級并行數據讀取方法,增加存儲系統總的IO訪問并發度,提高可視化應用整體的讀取性能.

圖7中,如果NT=1,則該進程內無需引入多線程并行,采用串行讀取即可(如圖6所示);如果NT>1,則該進程內引入NT個線程并行讀取數據.

一方面,從計算角度看,由于數據讀取過程并不是計算密集型的,因此進程內的多個線程可以運行于同一個計算核上,無需增加計算核數,即保持第2節問題中的進程數NP較小;另一方面,從存儲角度看,進程內的多線程并行讀取的引入,導致應用對存儲子系統的訪問并發度增加,使得可視化應用可以獲取更大的讀取性能,即第2節問題中的P值變大.

在兩級并行數據讀取方法中,一個需要解決的關鍵問題是:如何確定每個進程的線程數以使得可視化應用讀取性能最大化?需要考慮的因素包括2點:1)可視化應用獨占超級計算機系統資源的情況.不同的超級計算機系統,其IO達到峰值的訪問并發度不盡相同,如果可視化應用單級純進程并行時的訪問并發度,已經超過了特定超級計算機存儲子系統獲得最佳性能時的IO訪問并發度,則進程內引入多線程的兩級并行讀取技術,不但不會提升讀取性能,反而會導致讀取性能下降(過分競爭所致).2)可視化應用與其他應用共享超級計算機系統資源的情況.存儲子系統是個多應用共享系統,因此其他應用(可能)已經對存儲子系統產生了一定的IO訪問并發度,應該使得可視化應用采用兩級并行數據讀取之后,所有應用(包括可視化應用)對存儲子系統產生的總訪問并發度,不超過存儲子系統達到峰值性能時的IO訪問并發度(避免過分競爭導致性能下降).

Fig. 7 Two level parallel data read flow of ViSC applications圖7 科學計算可視化兩級并行數據讀取流程

Fig. 8 Thread number calculation algorithm flow in one ViSC process圖8 計算可視化進程內線程數算法流程

Fig. 9 Memory data structure for multi threads parallel read data in one ViSC process圖9 可視化進程內多線程并行讀取數據的內存數據結構

N*可通過測試形成映射表由用戶配置或者根據存儲子系統的軟硬件配置,按照一定的隨訪問并發度變化的存儲系統性能模型計算得到.

NC可通過測試形成映射表由用戶配置,或者根據存儲子系統的實時負載狀況,按照一定的隨訪問并發度變化的存儲系統負載模型計算得到.

NC是否大于N*的判斷可由存儲子系統的實時負載狀況確定.

3.2 可視化讀取模塊實現

我們以TeraVAP可視化平臺為基礎,獨立出并行數據讀取部分,實現了功能獨立的可視化兩級并行數據讀取加速模塊TeraVAPReader.

為此,首先凝煉了TeraVAPReader與TeraVAP之間的數據讀取接口,以方便實現可視化進程內的線程并行數據讀取,如下:

1) 讀取多網格片數據接口原型.st_patches_raw_data*ReadPatchData(IN char*full_path_file_name,IN int*patch_id_list,IN intpatch_count,IN const char*var_name_list[],IN intvar_count).

在以上接口原型中,full_path_file_name表示數據文件所對應應用元數據文件summary的文件名,patch_id_list表示多個網格片,patch_count表示需要讀取的網格片數量,var_name_list表示網格片上需要讀取的變量列表,var_count表示需要讀取的變量個數.

2) 設計了新的數據結構,用于在單個進程內供多線程并行讀取并保存數據.接口返回值類型st_patches_raw_data即為該數據結構,其由多個結構體組合定義而成,用于保存單個可視化進程內部的多個網格片上的多個變量數據,內存結構示意如圖9所示.需要指出的是,由于每個變量都有各自獨立的內存存儲空間,相互之間不會干擾,因此該結構采用無鎖設計,避免了多個線程并行訪問時的同步開銷.其中,error_code域用于保存多線程并行讀取數據的錯誤碼,patch_count域表示該進程需要讀取的網格片數量,patch_id域表示網格片全局編號,var_count域表示網格片上的變量數,var_raw_data域用于存放ViSC應用實際讀取的單個變量的原始數據,其他以“var_”開頭域為讀取變量數據的輔助信息(應用元數據,例如變量字節數、變量數據類型等).

3) 針對典型可視化應用TeraVAP的數據組織特點,基于單生產者多消費者模型,設計了針對性的兩級并行數據讀取算法,步驟如下:

步驟1. 以網格片為單位,進行多個可視化進程間的讀取任務分配,達到進程間并行數據讀取.如圖10所示:

Fig. 10 Patch-based read task allocating diagram among ViSC processes圖10 可視化進程間以網格片為單位的讀取任務分配

步驟2. 每個可視化進程內,以單個網格片上的單個變量讀取作為一個讀取任務,一次性生產出該可視化進程的所有讀取任務.

步驟3. 每個可視化進程內啟動多個讀取線程,采用多消費者模型逐個獲取讀取任務并進行實際數據讀取,達到進程內并行數據讀取.如圖11所示.

算法步驟1和步驟3聯合,實現了兩級并行數據讀取.當所有進程內的讀取任務處理完成,整個可視化應用的并行數據讀取過程結束,進入并行數據抽取階段.

假定單個可視化進程內所有網格片上的所有變量總數為n,則該算法的時間復雜度和空間復雜度都為O(n).

Fig. 11 Multi consumers model-based multi threads parallel data read diagram in one ViSC process圖11 可視化進程內基于多消費者模型的多線程并行數據讀取

4) 實現了功能獨立的可視化兩級并行數據讀取加速模塊.進程間任務分配以網格片為單位,進程內創建所有讀取任務以變量為單位(以〈PatchID,VarID〉為鍵值,如圖7所示).采用用戶配置的方式設置N*和NC(如圖8所示),并由此計算出當前進程所需線程數NT.進程間以網格片為單位的多MPI進程并行數據讀取,與進程內以變量為單位的多pThread線程并行數據讀取一起,共同實現了兩級并行數據讀取.

4 實驗結果與分析

為了驗證兩級并行數據讀取加速方法,我們使用科學計算應用LinAdvSL(單層均勻矩形結構網格上求解線性對流方程)在一臺曙光計算機以及廣州超算中心的天河2超級計算機上分別對該方法進行了測試.測試方法為:1)通過LinAdvSL 3D應用產生測試數據集;2)使用TeraVAPReader分別進行單級并行和兩級并行數據讀取性能測試(IO性能只跟數據總量和變量總數相關,采用LinAdvSL單個應用產生測試數據集即可).表1顯示了測試的軟硬件環境.

Table 1 Software and Hardware for Test表1 測試軟硬件環境

表1中需要說明的是HDF5[15]庫采用的是1.8.6版本,在編譯時通過--enable-threadsafe選項打開HDF5對pThread庫的多線程并行訪問支持,未使用MPI-IO[16].

表2顯示了測試所采用的數據集:

Table 2 Dataset for Test表2 測試采用的數據集

我們通過在每個進程內變動讀取線程數的方法來進行數據讀取性能測試.每種測試進行5次,結果取平均值.進程內線程數等于1代表單級并行數據讀取,進程內線程數大于1代表兩級并行數據讀取.測試過程中,使用的計算核數等于進程數;當進程內的線程數變化時,使用的計算核數不變.

曙光集群的存儲子系統規模相對較小,因此在曙光集群上進行了小規模進程數(進程數為1~8,每進程的線程數為1,4,8)的性能測試.圖12顯示了使用不同進程線程數在曙光集群上的性能測試結果,可以看出:當進程數小于4時,單級并行數據讀取速率反而比兩級并行數據讀取速率高,這是因為兩級并行引入多線程的開銷所致;隨著進程規模逐漸增大,兩級并行的性能優勢逐漸增加,掩蓋了其多線程開銷,最終導致兩級并行的數據讀取速率超過單級并行數據讀取速率,并在8進程時兩級并行與單級并行數據讀取速率差值達到最大.

Fig. 12 Data read rate of Sugon cluster using different process number and thread number圖12 曙光集群使用不同進程線程數的數據讀取速率

圖12中單級并行數據讀取時(1線程情況,進程內采用圖6中串行讀取方式),當進程數超過4以后,隨著進程數的增加,數據讀取性能反而有所下降,這與圖2中的IO性能曲線規律并不一致.我們的測試中使用了HDF5庫,而圖2的測試中并未使用該庫,我們分析認為,這種不一致應該跟HDF5庫中進程和線程2種模式下的數據讀取算法相關.

圖13顯示了曙光集群8進程下使用不同線程數的數據讀取速率,可以看出,在8進程下,兩級并行比單級并行峰值數據讀取速率提高269.5%(7線程vs 1線程),均值數據讀取速率(2~8線程數據讀取速率的平均值vs 1線程)提高232.2%.從圖13中也可以看出,單個計算節點的IO帶寬具有上限,也就是進程內的線程數并不是越多越好.

Fig. 13 Data read rate of Sugon cluster under 8 processes圖13 曙光集群8進程數據讀取速率

在天河2-b集群上進行了大規模進程數(進程數為128~1024,每進程的線程數為1~64)的性能測試,圖14顯示了使用不同進程線程數的性能測試結果.由于天河2-b集群是目前計算性能世界排名第一的超級計算機系統,其上同時運行著較多的應用軟件,這些應用軟件之間共享存儲子系統資源,彼此之間會造成IO性能干擾.因此,圖14的IO性能曲線特征沒有圖2那樣明顯,但從圖中仍然可以看出,兩級并行數據讀取速率超過單級并行.

Fig. 14 Data read rate of Tianhe2-b cluster using different process number and thread number圖14 天河2-b集群使用不同進程線程數的數據讀取速率

圖15顯示了不同進程規模下天河2-b集群兩級并行比單級并行數據讀取速率峰值提升比例:不同進程下兩級并行比單級并行峰值數據讀取速率提高33.5%(1024進程下),均值數據讀取速率(128~1024進程下數據讀取速率提高比例的平均值)提高26.6%.

Fig. 15 Two level parallel-based data read peak enhance-ment of Tianhe2-b cluster compared with one level parallel under different process scales圖15 天河2-b集群不同進程規模下兩級并行比單級并行數據讀取速率峰值提升比例

對比圖15和圖13可以發現,相比于小規模進程下大幅度的性能提升,大規模進程下兩級并行比單級并行數據讀取速率提升比例變小.一方面原因是,大規模進程下單級并行數據讀取速率已經提高,兩級并行數據讀取性能能夠提升的空間縮小了(參見圖2隨訪問并發度變化的IO性能曲線);另一方面可能原因是,測試時系統中由其他應用產生的訪問并發度已經較高,剩余的性能提升空間已不大.

綜合圖12~15可以看出,在不同的進程規模下,兩級并行比單級并行峰值數據讀取速率提高33.5%~269.5%,均值數據讀取速率提高26.6%~232.2%,可視化應用IO數據讀取速率得到顯著提升,驗證了兩級并行數據讀取加速方法的有效性.

Table 3 Overall Running Speed Enhancement of ViSC Applications

表3中分別計算出了可視化應用整體峰值和均值運行速度提升比例的最小值和最大值,可以看出,隨著科學計算應用種類以及應用規模的變化,兩級并行數據讀取可使可視化應用整體峰值運行速度加速19.5%~225.7%,均值運行速度加速15.8%~197.6%.

5 相關研究

ADIOS(adaptable IO system)[17]項目由美國橡樹嶺國家實驗室計算科學國家中心牽頭,聯合勞倫斯伯克利國家實驗室科學數據管理中心以及美國國防部等單位針對科學計算應用提出應用級IO框架.該項目采用可擴展的架構,集成了多種IO訪問策略并且定制了針對科學計算應用的專用數據格式,以盡量獲取最大IO帶寬,從而減輕科學計算及可視化應用運行過程中所遭遇的IO性能瓶頸問題.該項目采用基于希爾伯特空間填充曲線的方式進行數據分塊,以提高可視化數據讀取效率,該方法主要針對直交平面這種數據讀取模式提出.

DCPL(dual channel parallel IO library)[18]通過預取可視化應用元數據、減少應用元數據讀取次數的方法,提升可視化應用的讀取性能.由于下層的DCPL庫并不了解上層可視化應用的語意,元數據預取可能失敗.

6 未來工作

目前在單個可視化進程內部,啟動多少個線程進行數據讀取加速是由參數N*和NC決定的(如圖8所示),而在目前的實現中,N*和NC是通過測試形成映射表由用戶配置的方式確定的.采用用戶配置的方式確定N*和NC,需要用戶具有比較專業的知識,對超級計算機存儲子系統的性能較為熟悉,這對普通用戶使用可視化應用造成了一定的困難.考慮到可視化應用具有跨不同超級計算機平臺運行的需求,未來需要研究基于存儲體系結構感知和運行時存儲子系統負載感知的IO性能自動優化方法:通過自動識別超級計算機存儲子系統的軟硬件配置以自動確定參數N*,通過自動感知存儲子系統的實時負載以自動確定參數NC.通過N*和NC的自動確定,自動設置進程內最優的多線程參數NT,達到可視化應用IO性能自動優化的目標.

猜你喜歡
進程可視化
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
基于CGAL和OpenGL的海底地形三維可視化
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 亚洲第一国产综合| 一边摸一边做爽的视频17国产 | 国产一级做美女做受视频| 国产微拍精品| 中文字幕在线视频免费| 国产无码性爱一区二区三区| 欧美中文字幕一区二区三区| 9丨情侣偷在线精品国产| 丁香五月激情图片| 毛片三级在线观看| 亚洲成A人V欧美综合| 91久久国产综合精品女同我| 国产人成乱码视频免费观看| 性欧美在线| 毛片视频网址| 亚洲福利视频一区二区| 91在线播放国产| 国产亚洲视频播放9000| 四虎国产永久在线观看| 天堂成人av| 国产精品lululu在线观看| 91美女视频在线| 视频二区欧美| 夜夜爽免费视频| 日本手机在线视频| 国产亚洲精品无码专| 最新国产网站| 欧美性猛交一区二区三区| 高清无码一本到东京热| 亚洲天堂777| 亚洲欧美另类视频| 精品一区国产精品| 国产成人精品一区二区不卡| 91香蕉视频下载网站| 美女被操91视频| 天天综合网亚洲网站| 中文字幕不卡免费高清视频| 777午夜精品电影免费看| 欧美在线精品怡红院| 日本少妇又色又爽又高潮| 亚洲中文字幕久久无码精品A| 欧美激情,国产精品| 在线观看免费黄色网址| 亚洲大尺度在线| 91福利在线观看视频| 国产成人啪视频一区二区三区| 久久熟女AV| 国模私拍一区二区| 欧美性精品不卡在线观看| 亚洲天堂视频在线观看免费| 福利一区在线| 亚洲国产精品久久久久秋霞影院| 天堂va亚洲va欧美va国产| 四虎永久免费地址| 欧美色综合网站| 波多野结衣无码AV在线| 九九视频免费在线观看| 67194亚洲无码| 日本高清有码人妻| 亚洲第一区欧美国产综合| 99精品在线看| 欧美精品亚洲精品日韩专| 久久一级电影| 国产菊爆视频在线观看| 成人免费午夜视频| 久久久久亚洲av成人网人人软件 | 中国一级毛片免费观看| 国产av剧情无码精品色午夜| 日本少妇又色又爽又高潮| 亚洲香蕉久久| 久热中文字幕在线观看| 久久久久亚洲精品无码网站| 一级毛片免费观看不卡视频| 丁香亚洲综合五月天婷婷| 男女男免费视频网站国产| 日韩在线观看网站| 国产AV无码专区亚洲A∨毛片| 国产va视频| 999精品视频在线| 巨熟乳波霸若妻中文观看免费| 国产一区二区三区在线观看免费| 亚洲无码免费黄色网址|