《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > Linux超線程感知的調度算法研究

Linux超線程感知的調度算法研究

2008-06-24
作者:李 亮,吳慶波

  摘 要: Intel公司的超線程" title="超線程">超線程技術(Hyper-Threading Technology)是一項新的微處理器體系結構技術,它在傳統指令級并行的基礎上提供了線程級并行。分析了超線程技術" title="超線程技術">超線程技術的特點,重點研究了Linux超線程感知調度優化技術,解決了對Intel處理器的有效支持問題,并且進行了相關的性能評測。
  關鍵詞: 超線程技術 多處理器 Linux


  隨著計算機應用的日益普及,用戶對計算機的處理能力的需求成指數級增長。為了滿足用戶的需求,處理器生產廠商采用了諸如超流水、分支預測、超標量、亂序執行及緩存等技術以提高處理器的性能。但是這些技術的采用增加了微處理器的復雜性,帶來了諸如材料、功耗、光刻、電磁兼容性等一系列問題。因此處理器設計人員開始尋找新的途徑來提高處理器的性能。Intel公司于2002年底推出了超線程技術,通過共享處理器的執行資源,提高CPU的利用率,讓處理單元獲得更高的吞吐量。
1 超線程技術背景
  傳統的處理器內部存在著多種并行操作方式。①指令級并行ILP(Instruction Level Paramllelism):同時執行幾條指令,單CPU就能完成。但是,傳統的單CPU處理器只能同時執行一個線程,很難保證CPU資源得到100%的利用,性能提高只能通過提升時鐘頻率和改進架構來實現。②線程級并行TLP(Thread Level Paramllesim):可以同時執行多個線程,但是需要多處理器系統的支持,通過增加CPU的數量來提高性能。
  超線程微處理器將同時多線程技術SMT(Simultaneous Multi-Threading)引入Intel體系結構,支持超線程技術的操作系統將一個物理處理器視為兩個邏輯處理器,并且為每個邏輯處理器分配一個線程運行。物理處理器在兩個邏輯處理器之間分配高速緩存、執行單元、總線等執行資源,讓暫時閑置的運算單元去執行其他線程代碼,從而最大限度地提升CPU資源的利用率。
  Intel 超線程技術通過復制、劃分、共享Intel的Netburst微架構的資源讓一個物理CPU中具有兩個邏輯CPU。(1)復制的資源:每個邏輯CPU都維持一套完整的體系結構狀態,包括通用寄存器、控制寄存器、高級可編程寄存器(APIC)以及一些機器狀態寄存器,體系結構狀態對程序或線程流進行跟蹤。從軟件的角度,一旦體系結構狀態被復制,就可以將一個物理CPU視為兩個邏輯CPU。(2)劃分的資源:包括重定序(re-order)緩沖、Load/Store緩沖、隊列等。劃分的資源在多任務模式時分給兩個邏輯CPU使用,在單任務模式時合并起來給一個邏輯CPU使用。(3)共享的資源:包括cache及執行單元等,邏輯CPU共享物理CPU的執行單元進行加、減、取數等操作。
  在線程調度時,體系結構狀態對程序或線程流進行跟蹤,各項工作(包括加、乘、加載等)由執行資源(處理器上的單元)負責完成。每個邏輯處理器可以單獨對中斷作出響應。第一個邏輯處理器跟蹤一個線程時,第二個邏輯處理器可以同時跟蹤另一個線程。例如,當一個邏輯處理器在執行浮點運算時,另一個邏輯處理器可以執行加法運算和加載操作。擁有超線程技術的CPU可以同時執行處理兩個線程,它可以將來自兩個線程的指令同時發送到處理器內核執行。處理器內核采用亂序指令調度并發執行兩個線程,以確保其執行單元在各時鐘周期均處于運行狀態。
  圖1和圖2分別為傳統的雙" title="的雙">的雙處理器系統和支持超線程的雙處理器系統。傳統的雙處理器系統中,每個處理器有一套獨立的體系結構狀態和處理器執行資源,每個處理器上只能同時執行一個線程。支持超線程的雙處理器系統中,每個處理器有兩套獨立體系結構狀態,可以獨立地響應中斷。


2 Linux超線程感知調度優化
  Linux從2.4.17版開始支持超線程技術,傳統的Linux O(1)調度器" title="調度器">調度器不能區分物理CPU和邏輯CPU,因此不能充分利用超線程處理器的特性。Ingo Monlar編寫了“HT-aware scheduler patch”,針對超線程技術對O(1)調度器進行了調度算法優化:優先安排線程在空閑的物理CPU的邏輯CPU上運行,避免資源競爭帶來的性能下降;在線程調度時考慮了在兩個邏輯CPU之間進行線程遷移的開銷遠遠小于物理CPU之間的遷移開銷以及邏輯CPU共享cache等資源的特性。這些優化的相關算法被Linux的后期版本所吸收,具體如下:
  (1)共享運行隊列
  在對稱多處理SMP(Symmetrical Multi-Processing)環境中,O(1)調度器為每個CPU分配了一個運行隊列,避免了多CPU共用一個運行隊列帶來的資源競爭。Linux會將超線程CPU中的兩個邏輯CPU視為SMP的兩個獨立CPU,各維持一個運行隊列。但是這兩個邏輯CPU共享cache等資源,沒有體現超線程CPU的特性。因此引入了共享運行隊列的概念。HT-aware scheduler patch在運行隊列struct runqueue結構中增加了nr_cpu和cpu兩個屬性,nr_cpu記錄物理CPU中的邏輯CPU數目,CPU則指向同屬CPU(同一個物理CPU上的另一個邏輯CPU)的運行隊列,如圖3所示。


  在Linux中通過調用sched_map_runqueue( )函數實現兩個邏輯CPU的運行隊列的合并。sched_map_runqueue( )首先會查詢系統的CPU隊列,通過phys_proc_id(記錄邏輯CPU所屬的物理CPU的ID)判斷當前CPU的同屬邏輯CPU。如果找到同屬邏輯CPU,則將當前CPU運行隊列的cpu屬性指向同屬邏輯CPU的運行隊列。
  (2)支持“被動的”負載均衡" title="負載均衡">負載均衡
  用中斷驅動的均衡操作必須針對各個物理 CPU,而不是各個邏輯 CPU。否則可能會出現兩種情況:一個物理 CPU 運行兩個任務,而另一個物理 CPU 不運行任務;現有的調度程序不會將這種情形認為是“失衡的”。在調度程序看來,似乎是第一個物理處理器上的兩個 CPU運行1-1任務,而第二個物理處理器上的兩個 CPU運行0-0任務。
  在2.6.0版之前,Linux只有通過load_balance( )函數才能進行CPU之間負載均衡。當某個CPU負載過輕而另一個CPU負載較重時,系統會調用load_balance( )函數從重載CPU上遷移線程到負載較輕的CPU上。只有系統最繁忙的CPU的負載超過當前CPU負載的 25% 時才進行負載平衡。找到最繁忙的CPU(源CPU)之后,確定需要遷移的線程數為源CPU負載與本CPU負載之差的一半,然后按照從 expired 隊列到 active 隊列、從低優先級線程到高優先級線程的順序進行遷移。
  在超線程系統中進行負載均衡時,如果也是將邏輯CPU等同于SMP環境中的單個CPU進行調度,則可能會將線程遷移到同一個物理CPU的兩個邏輯CPU上,從而導致物理CPU的負載過重。
  在2.6.0版之后,Linux開始支持NUMA(Non-Uniform Memory Access Architecture)體系結構。進行負載均衡時除了要考慮單個CPU的負載,還要考慮NUMA下各個節點的負載情況。
  Linux的超線程調度借鑒NUMA的算法,將物理CPU當作NUMA中的一個節點,并且將物理CPU中的邏輯CPU映射到該節點,通過運行隊列中的node_nr_running屬性記錄當前物理CPU的負載情況。
  Linux通過balance_node( )函數進行物理CPU之間的負載均衡。物理CPU間的負載平衡作為rebalance_tick( )函數中的一部分在 load_balance( )之前啟動,避免了出現一個物理CPU運行1-1任務,而第二個物理CPU運行0-0任務的情況。balance_node( )函數首先調用 find_
  busiest_node( )找到系統中最繁忙的節點,然后在該節點和當前CPU組成的CPU集合中進行 load_balance( ),把最繁忙的物理CPU中的線程遷移到當前CPU上。之后rebalance_tick( )函數再調用load_balance(工作集為當前的物理CPU中的所有邏輯CPU)進行邏輯CPU之間的負載均衡。
  (3)支持“主動的”負載均衡
  當一個邏輯 CPU 變成空閑時,可能造成一個物理CPU的負載失衡。例如:系統中有兩個物理CPU,一個物理CPU上運行一個任務并且剛剛結束,另一個物理CPU上正在運行兩個任務,此時出現了一個物理CPU空閑而另一個物理CPU忙的現象。
  Linux中通過active_load_balance( )函數進行主動的負載均衡,active_load_balance( )函數用于在所有的邏輯CPU中查詢該CPU的忙閑情況。如果發現由于超線程引起的負載不平衡(一個物理CPU的兩個邏輯CPU都空閑,另一個物理CPU的兩個邏輯CPU都在運行兩個線程),則喚醒一個需要遷移的線程,將它從一個忙的物理CPU遷移到一個空閑的物理CPU上。
  active_load_balance( )通過調用cpu_rq( )函數得到每一個邏輯CPU上的運行隊列。如果運行隊列上的當前運行線程為idle線程,則說明當前邏輯CPU為空閑;如果發現一個物理CPU兩個邏輯CPU都為空閑,而另一個物理CPU中的兩個邏輯CPU的運行隊列為繁忙的情況,則說明存在超線程引起的負載不均衡。這時當前CPU會喚醒遷移服務線程(migration_thread)來完成負載均衡的線程遷移。
  (4)支持超線程感知的任務挑選
  在超線程處理器中,由于cache資源為兩個邏輯處理器共享,因此調度器在選取一個新任務時,必須確保同組的任務盡量共享一個物理CPU,從而減少cache失效的開銷,提高系統的性能。而傳統的調度器只是簡單地為邏輯CPU選取一個任務,沒有考慮物理CPU的影響。
  Linux進行線程切換時會調用schedule( )函數進行具體的操作。如果沒有找到合適的任務schedule()函數,則會調度idle線程在當前CPU上運行。在超線程環境中Linux調度idle線程運行之前會查詢其同屬CPU的忙閑狀況。如果同屬CPU上有等待運行的線程,則會調用一次load_balance( )函數在兩個同屬CPU之間作一次負載均衡,將等待運行的線程遷移到當前CPU上,保證優先運行同屬CPU上的任務。
  (5)支持超線程感知的CPU喚醒
  傳統的調度器只知道當前CPU,而不知道同屬的邏輯CPU。在超線程環境下,一個邏輯CPU正在執行任務時,其上的一個線程被喚醒了,此時,如果它的同屬邏輯CPU是空閑的,則應該在同屬邏輯CPU上運行剛剛喚醒的任務。
  Linux通過wake_up_cpu( )函數實現CPU喚醒,在try_o_wakeup、pull_task、move_task_away加入了wake_up_cpu( )函數的相應調用點。wake_up_cpu()首先查詢當前CPU是不是空閑的,如果當前CPU為空閑,則調用resched_cpu( )函數啟動調度器,將喚醒的線程調度到當前CPU執行;否則查找其同屬邏輯CPU。如果同屬邏輯CPU是空閑的,則將喚醒的線程調度到同屬邏輯CPU上執行;否則比較喚醒的線程和當前CPU上運行的線程的優先級。如果喚醒的線程的優先級高,或者優先級相等但是時間片多,則進行線程切換,在當前CPU上調度執行喚醒的線程。如果上述條件都不滿足,最后比較喚醒的線程和當前CPU的同屬邏輯CPU上運行的線程的優先級,如果喚醒的線程的優先級高,或者優先級相等但是時間片多,則在同屬邏輯CPU上調度執行喚醒的線程。
3 性能測試
  Linux-2.6.0 HT-aware scheduler patch實現了上述超線程調度優化。這里根據linux-2.6.0 HT-aware scheduler patch對這幾種調度優化進行了性能測試。
  測試硬件環境:Xeon 2.2GHz處理器(支持超線程)×4,2GB SDRAM內存。
  Benchmark:(1)Volanomark是一個純Java的benchmark,專門用于測試系統調度器和線程環境的綜合性能。它建立一個模擬Client/Server方式的Java聊天室,通過獲取每秒平均發送的消息數來評測宿主機綜合性能(數值越大性能越好)。Volanomark測試與Java虛擬機平臺相關,本文使用Sun Java SDK 1.4.2作為測試用Java平臺,Volanomark版本2.5.0.9。(2)LMBench是一個用于評價系統綜合性能的多平臺開源benchmark,對其進行修改后實現了lat_thread_ctx接口,用來測試線程的切換開銷。
  圖4表明開啟超線程后Volanomark在Linux-2.6.0平臺下平均吞吐量提高了25.5%。由于Linux的O(1)內核調度器比較好地實現了SMP負載均衡算法,所以在超線程環境下整個系統的性能也有了比較好的提升。
  圖5顯示出Linux在進行了超線程調度優化后,在支持超線程的平臺上所獲得的性能加速比。在Linux-2.6.0加入HT-aware scheduler patch后Volanomark的平均吞吐提高了 8.5%,分別實現主動負載均衡、被動的負載均衡、CPU喚醒和任務挑選的相關代碼后,吞吐量分別提高了1.8.%、2.5%、2.3%和2.1%。

?


  使用Lmbench創建10~150個線程,在不同的負載條件下測試線程的切換開銷。表1的數據顯示HT-aware scheduler patch可以將線程的切換開銷減少3%~7%。數據顯示:在輕負載情況下,系統可以獲得更多的加速比。這是因為被動的負載均衡以及主動的負載均衡只有在系統有CPU空閑時才能發揮比較好的作用。


4 相關工作和展望
  采用支持超線程技術的Linux可以獲得較大的性能提升。但是其調度算法還要根據實際的應用進一步研究。參考文獻[7]中提出了用“Symbiosis”概念來衡量多個線程在SMT環境中同時執行的有效性。參考文獻[8]中提出了線程敏感的調度算法,用一組硬件性能計數器計算兩個邏輯CPU上運行不同作業子集的執行信息,利用這些信息來預測不同作業子集的執行性能,并選擇具有最好預測性能的作業子集調度同一個物理CPU執行。參考文獻[9]中主要研究了適合SMT 結構并考慮作業優先級的調度器。研究結果表明,這些調度算法能有效地提高超線程系統的性能。
  Intel的超線程技術是其企業產品線中的重要特征,并將會集成到越來越多的產品中,它標志著Intel微處理器一個新的時代:從指令級并行到線程級并行,這樣可使微處理器運行模式與多線程應用的運行模式更加接近,應用程序可以充分利用線程級并行和指令級并行進行優化。隨著超線程處理器的發展,可能會出現操作系統使用處理器系統中硬件性能監視器估算系統在某一時間段的某些性能指標,然后利用這些性能指標來指導線程的調度策略。
參考文獻
1 Vianney D.Hyper-Threading speeds Linux.http://www-106.ibm.com/developerworks/linux/library/l-htl/,2003
2 Marr D T,Binns F,Hill D L.Hyper-Threading technology architecture and microarchitecture.Intel Technology Journal,2002
3 IntelXeonTM Processor Family for Servers with Hyper-Threading Technology.Intel white paper,2002
4 Volano LLC.Volano Chat.http://www.volano.com/benchmarks.html
5 Larry M V.LMbench-Tools for Performance Analysis.http://www.bitmover.com/lmbench/
6 Bulusu P,Kumar J,Shetty S.HyperThreading-A Voyage.Intel Technology Journal,2002
7 Snavely A,Tullsen D M,Voelker G.Symbiotic Jobscheduling with Priorities for a Simultaneous Multithreading Processor.In:Proc.of International Conference on Measurement and Modeling of Computer Systems,June,2002
8 Parekh S S,Eggers S J,Levy H M et al.Thread-Sensitive Scheduling for SMT Processors.Technical Report,University of Washington,2000
9 Bulpin J R,Pratt L A.Hyper-Threading Aware Process Scheduling Heuristics.In:USENIX Annual Technical Confer-ence,2005

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产专区综合网| 久久本道综合色狠狠五月| 好男人免费精品视频| 国产精品你懂的在线欣赏| 亚洲国产91| 国产精品ⅴa在线观看h| 欧美一区二区三区四区夜夜大片| 国产精品一二三视频| 亚洲国产三级在线| 久久久爽爽爽美女图片| 国产精品久久久久久久久久直播| 国产欧美精品一区| 国产精品久久久久久福利一牛影视| 国产精品久久久亚洲一区| 国产日韩在线一区二区三区| 欧美手机在线| 欧美亚洲三区| 野花国产精品入口| 免费一级欧美片在线播放| 欧美激情一区二区三区全黄| 久久成人久久爱| 99日韩精品| 亚洲国产精品日韩| 亚洲黄色小视频| 久久久久久91香蕉国产| 久久福利一区| 国产午夜亚洲精品不卡| 一区二区三区我不卡| 欧美三级欧美一级| 欧美尤物一区| 亚洲日本免费| 午夜精品久久久久久久白皮肤| 亚洲日本中文字幕| 国产视频一区在线观看一区免费| 国产精品乱人伦一区二区| 麻豆精品在线视频| 国产精品久久久久久久免费软件| 久久精品五月婷婷| 久久久.com| 免费亚洲一区| 亚洲欧美日韩一区在线| 99视频+国产日韩欧美| 新片速递亚洲合集欧美合集| 欧美日一区二区三区在线观看国产免| 国产视频综合在线| 亚洲伊人观看| 国产午夜精品视频免费不卡69堂| 国内外成人免费激情在线视频| 麻豆精品在线播放| 夜夜夜精品看看| 国产亚洲午夜高清国产拍精品| 国产精品扒开腿做爽爽爽视频| 久久综合九九| 这里只有精品视频| 亚洲免费影视第一页| 欧美婷婷久久| 一区二区三区日韩欧美精品| 国产精品婷婷午夜在线观看| 亚洲欧美制服中文字幕| 国内精品久久久久久久果冻传媒| 欧美精品免费在线观看| 国产精品激情偷乱一区二区∴| 亚洲第一精品夜夜躁人人爽| 欧美综合激情网| 亚洲日本在线视频观看| 欧美精品日韩精品| 欧美特黄一区| 欧美精选午夜久久久乱码6080| 亚洲在线电影| 欧美一级片在线播放| 欧美精品久久一区| 欧美a级在线| 韩国视频理论视频久久| 毛片精品免费在线观看| 欧美成人免费播放| 亚洲男人的天堂在线观看| 欧美视频在线观看免费网址| 国产一区二区黄| 欧美天堂亚洲电影院在线观看| 欧美午夜精品理论片a级按摩| 国产日韩欧美一二三区| 国产亚洲一级| 亚洲一区二区三区午夜| 亚洲高清视频在线| 揄拍成人国产精品视频| 欧美高清hd18日本| 美乳少妇欧美精品| 亚洲电影第1页| 国产精品福利片| 亚洲精品乱码久久久久久蜜桃91| 欧美国产一区在线| 国产热re99久久6国产精品| 日韩亚洲欧美高清| 香蕉av777xxx色综合一区| 欧美片在线观看| 性欧美暴力猛交另类hd| 亚洲美女免费精品视频在线观看| 宅男噜噜噜66一区二区66| 一本色道久久88亚洲综合88| 国产一区二区三区四区五区美女| 国产美女精品一区二区三区| 久热精品视频在线观看| 亚洲自拍偷拍麻豆| av成人毛片| 国产一区在线观看视频| 亚洲黄色影院| 国产欧美日韩麻豆91| 国产精品午夜久久| 免费亚洲一区二区| 国产真实乱子伦精品视频| 亚洲国产天堂久久综合| 国产欧美一区二区精品秋霞影院| 欧美日韩国产123区| 国产日韩精品久久| 欧美视频免费在线观看| 欧美激情一区二区三级高清视频| 国产精品日韩欧美一区二区三区| 亚洲欧洲日韩综合二区| 樱桃国产成人精品视频| 亚洲久色影视| 欧美视频三区在线播放| 亚洲精品少妇| 狠狠色香婷婷久久亚洲精品| 国产深夜精品福利| 香港成人在线视频| 99国产精品久久久久老师| 国产女人18毛片水18精品| 欧美日韩dvd在线观看| 亚洲日本欧美天堂| 欧美理论电影在线播放| 欧美成年人网站| 免费av成人在线| 亚洲一区免费观看| 亚洲伦理在线| 亚洲国产精品久久久久秋霞不卡| 免费久久久一本精品久久区| 国产精品日韩高清| 亚洲视屏在线播放| 中文在线资源观看网站视频免费不卡| 蜜臀av性久久久久蜜臀aⅴ| 在线观看亚洲精品视频| 国产精品理论片| 国产精品久久久久天堂| 久久国产精品久久久久久久久久| 国产精品老女人精品视频| 午夜亚洲视频| 久久国产日本精品| 久久久另类综合| 亚洲欧美日韩国产| 亚洲国产日韩欧美综合久久| 国产精品丝袜久久久久久app| 亚洲二区三区四区| 国产精品视频午夜| 老司机67194精品线观看| 91久久香蕉国产日韩欧美9色| 亚洲裸体俱乐部裸体舞表演av| 国产欧美综合一区二区三区| 在线视频成人| 午夜精品久久久久久久99黑人| 伊人久久亚洲热| 亚洲一本大道在线| 国内精品伊人久久久久av影院| 国产亚洲欧美日韩精品| 欧美日韩精品系列| 欧美日韩国产999| 国产精品久久久一本精品| 国产亚洲一级高清| 欧美成年人视频网站| 噜噜噜噜噜久久久久久91| 欧美深夜影院| 国产精品va在线播放我和闺蜜| 国产精品综合| 亚洲国产精品成人综合色在线婷婷| 久久久久九九九| 亚洲精品乱码久久久久久黑人| 久久精精品视频| 欧美日韩一区精品| 一本大道av伊人久久综合| 麻豆精品一区二区av白丝在线| 欧美日韩一区国产| 亚洲男女自偷自拍图片另类| 国产精品美女久久久久av超清| 欧美高清在线一区| 中文国产亚洲喷潮| 伊人成综合网伊人222| 国产精品国码视频| 久久久久女教师免费一区| 欧美性感一类影片在线播放| 国产资源精品在线观看| 夜夜嗨av一区二区三区四季av| 亚洲丰满少妇videoshd| 午夜天堂精品久久久久| 亚洲免费成人av电影| 欧美午夜欧美| 欧美日韩国产高清视频| 女女同性女同一区二区三区91| 欧美激情亚洲国产| 美女诱惑黄网站一区| 欧美1级日本1级| 国产亚洲精品激情久久| 国产日韩精品一区二区三区在线| 在线视频欧美日韩精品| 久久久久久亚洲综合影院红桃| 亚洲人永久免费| 久久久亚洲午夜电影| 欧美精品成人在线| 亚洲性色视频| 亚洲伊人网站| 国产一区二区看久久| 欧美在线观看一区二区三区| 亚洲二区三区四区| 国产精品进线69影院| 国内精品久久久久影院 日本资源| 尤物九九久久国产精品的特点| 国产精品福利在线观看网址| 卡一卡二国产精品| 久久超碰97中文字幕| 午夜亚洲福利在线老司机| 亚洲美女精品一区| 亚洲国产电影| 欧美日韩精品不卡| 久久艳片www.17c.com| 国产无遮挡一区二区三区毛片日本| 夜夜嗨一区二区三区| 午夜精品久久久久久99热软件| 欧美本精品男人aⅴ天堂| 亚洲美女免费精品视频在线观看| 在线视频亚洲| 亚洲精品国产精品国自产观看| 久久黄色网页| 狠狠爱成人网| 欧美在线亚洲在线| 欧美成人国产一区二区| 伊人久久亚洲美女图片| 一区二区精品在线观看| 亚洲国产精品999| 欧美日韩国产在线| 美女精品国产| 久久在线免费观看| 亚洲日本va午夜在线影院| 老司机免费视频久久| 国产欧美日韩三级| 久久久91精品国产一区二区精品| 国产精品你懂得| 销魂美女一区二区三区视频在线| 免费不卡在线观看| 欧美成人综合在线| 日韩一区二区久久| 亚洲三级电影在线观看| 99视频精品在线| 欧美日韩免费在线观看| 欧美另类videos死尸| 欧美亚洲在线播放| 亚洲综合999| 欧美与黑人午夜性猛交久久久| 在线看国产日韩| 国产伦精品一区二区三区免费| 欧美日韩在线精品一区二区三区| 午夜精品在线| 欧美日一区二区三区在线观看国产免| ●精品国产综合乱码久久久久| 久久麻豆一区二区| 亚洲天堂成人在线视频| 国产精品久久久久久久久免费樱桃| 免费人成精品欧美精品| 国产尤物精品| 91久久精品日日躁夜夜躁欧美| 欧美精品久久久久久久| 国产一区二区三区在线观看网站| 一区二区三区导航| 亚洲国内自拍| 欧美一区二区三区在线| 欧美性大战久久久久久久| 亚洲精品视频在线播放| 国产精品专区第二| 亚洲高清不卡| 国产午夜精品全部视频播放| 国产精品一区一区三区| 欧美亚洲一区三区| 亚洲欧美综合国产精品一区| 欧美一区二区三区免费在线看| 久久亚洲私人国产精品va| 亚洲最新视频在线播放| 91久久在线视频| 欧美多人爱爱视频网站| 久久久噜噜噜久久人人看| 国产精品入口福利| 国产精品无码专区在线观看| 国产日韩在线播放| 亚洲国产美女久久久久| 欧美aa国产视频| 久久国产精品一区二区三区四区| 亚洲精品欧美一区二区三区| 亚洲日韩欧美一区二区在线| 久久国产精品一区二区| 男人插女人欧美| 欧美v亚洲v综合ⅴ国产v| 欧美aa在线视频| 亚洲激情网址| 亚洲乱码国产乱码精品精天堂| 欧美v国产在线一区二区三区| 91久久精品www人人做人人爽| 久久人人爽人人爽爽久久| 亚洲国产精彩中文乱码av在线播放| 在线观看中文字幕亚洲| 日韩午夜激情电影| 国产视频精品va久久久久久| 亚洲视频一区二区免费在线观看| 欧美日韩精品二区| 亚洲精品自在久久| 欧美一区二区精品久久911| 欧美成人午夜激情视频| 亚洲手机在线| 国产乱码精品1区2区3区| 亚洲欧洲一区二区在线播放| 欧美一区二区日韩| 国产精品欧美日韩一区| 亚洲精品国偷自产在线99热| 亚洲激情午夜| 韩国欧美一区| 亚洲——在线| 性欧美长视频| 欧美大片网址| 久久香蕉精品| 夜夜爽夜夜爽精品视频| 一区二区欧美在线观看| 国产女精品视频网站免费| 99在线|亚洲一区二区|