青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

2012年7月23日


共享內存優點:1.在進程之間不通過內核傳遞數據,即不通過系統調用拷貝數據,達到快速,高效的數據傳輸。
                    2.隨內核持續
*nix的共享內存有兩套API:Posix和System V

兩者的主要差別是共享內存的大小
1.Posix共享內存大小可通過函數ftruncate隨時修改
2.System V共享內存大小在創建時就已經確定,而且最大值根據系統有所不同

 Posix共享內存 
    #include <sys/mman.h>  (mmap,munmap,msync,shm_open,shm_unlink)

最主要的函數  -- mmap
     void* mmap(void* addr,size_t len,int prot,int flags,int fd,off_t offset)
     函數將一個句柄映射到內存中,這個句柄可以是open的文件句柄,也可以是shm_open的共享內存區對象。當fd=-1時為匿名共享內存。
     *nix一切皆文件的觀點,shm_open也是在/dev/shm目錄下創建一個文件對象,返回對象的描述符。
     mmap將句柄作為共享內存的底層支撐對象,映射到內存中,這樣可以不通過read、write在進程之間共享內存。由此推測一下,在*nix的進程間傳遞數據更加原始的方法是進程間讀寫一個文件。但是頻繁的open、read、write、lseek系統調用會消耗過多的計算資源。所以想到了將這個文件句柄映射到內存中,這樣就提高了進程間傳遞數據的效率。

需要注意的函數 -- msync
      當修改了內存映射區的內存后,內核會在某個時刻將文件的內容更新。為了確信文件被更新,調用函數msync。文件的更新可以是同步(MS_SYNC)也可以是異步(MS_ASYNC)。(估計這里也是調用了函數write更新文件)

System V共享內存
    #include <sys/shm.h>  (shmget,shmat,shmdt,shmctl)
由于System V的共享內存有大小的限制,所以可考慮,使用共享內存數組來解決這個問。雖然數組的大小即一個進程可以獲取共享內存的數量也是有限制,但是可以緩解System V單個共享內存過小的問題。
posted @ 2012-07-23 00:08 Range 閱讀(1452) | 評論 (0)編輯 收藏

2012年7月1日

receive works as follows:
1. When we enter a receive statement, we start a timer (but only if an after section is present in the expression).
2. Take the first message in the mailbox and try to match it against Pattern1, Pattern2, and so on. If the match succeeds, the message is removed from the mailbox, and the expressions following the pattern are evaluated.
3. If none of the patterns in the receive statement matches the first message in the mailbox, then the first message is removed from the mailbox and put into a “save queue.” The second message in the mailbox is then tried. This procedure is repeated until a matching message is found or until all the messages in the mailbox have been examined.
4. If none of the messages in the mailbox matches, then the process is suspended and will be rescheduled for execution the next time a new message is put in the mailbox. Note that when a new message arrives, the messages in the save queue are not rematched; only the new message is matched.
5. As soon as a message has been matched, then all messages that have been put into the save queue are reentered into the mailbox in the order in which they arrived at the process. If a timer was set, it is cleared.
6. If the timer elapses when we are waiting for a message, then evaluate the expressions ExpressionsTimeout and put any saved messages back into the mailbox in the order in which they arrived at the process.
posted @ 2012-07-01 17:17 Range 閱讀(718) | 評論 (0)編輯 收藏

2011年10月9日


       #define _GNU_SOURCE

       #include <string.h>

       char *strcasestr(const char *haystack, const char *needle);

        用于在c串haystack中查找c串needle,忽略大小寫。如果找到則返回needle串在haystack串中第一次出現的位置的char指針

        在實際的應用中如果只加上頭文件,當編譯時會出現  warning: assignment makes pointer from integer without a cast

       這是因為函數的聲明在調用之后。未經聲明的函數默認返回int型。
 
       因此要在#include所有頭文件之前加  
#define _GNU_SOURCE  ,以此解決此問題。
posted @ 2011-10-09 19:12 Range 閱讀(20912) | 評論 (0)編輯 收藏

2011年8月26日

Linux IO系統的架構圖


 

一.設備-------- 影響磁盤性能的因素

硬盤的轉速影響硬盤的整體性能。一般情況下轉速越大,性能會越好。

硬盤的性能因素主要包括兩個:1.平均訪問時間2傳輸速率。

 

平均訪問時間包括兩方面因素:

平均尋道時間(Average Seek Time)是指硬盤的磁頭移動到盤面指定磁道所需的時間。一般在3ms至15ms之間。

平均旋轉等待時間(Latency)是指磁頭已處于要訪問的磁道,等待所要訪問的扇區旋轉至磁頭下方的時間。一般在2ms至6ms之間。

 

傳輸速率(Data Transfer Rate) 硬盤的數據傳輸率是指硬盤讀寫數據的速度,單位為兆字節每秒(MB/s)。磁盤每秒能傳輸80M~320M字節。

 

傳輸速率包括內部傳輸速率和外部傳輸速率。

內部傳輸率(Internal Transfer Rate) 也稱為持續傳輸率(Sustained Transfer Rate),它反映了硬盤緩沖區未用時的性能。內部傳輸率主要依賴于硬盤的旋轉速度。

外部傳輸率(External Transfer Rate)也稱為突發數據傳輸率Burst Data Transfer Rate)或接口傳輸率,它標稱的是系統總線與硬盤緩沖區之間的數據傳輸率,外部數據傳輸率與硬盤接口類型硬盤緩存的大小有關。STAT2 的傳輸速率在300MB/s級別。

 

因此在硬件級上,提高磁盤性能的關鍵主要是降低平均訪問時間。

二.設備驅動

內存到硬盤的傳輸方式:poll,中斷,DMA

 

DMA:當 CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器 來實行和完成。

DMA控制器獲得總線控制權后,CPU即刻掛起或只執行內部操作,由DMA控制器輸出讀寫命令,直接控制RAM與I/O接口進行DMA傳輸。DMA每次傳送的是磁盤上相鄰的扇區。Scatter-gather DMA允許傳送不相鄰的扇區。

 

CPU性能與硬盤與內存的數據傳輸速率關系不大。

 

設備驅動內有一個結構管理著IO的請求隊列

structrequest_queue(include/linux/Blkdev.h

這里不僅僅有讀寫請求的數據塊,還有用于IO調度的回調函數結構。每次需要傳輸的時候,就從隊列中選出一個數據塊交給DMA進行傳輸。

 

所以IO調度的回調函數這是降低平均訪問的時間的關鍵。

 

三.OS

IO調度器

Linux kernel提供了四個調度器供用戶選擇。他們是noop,cfq,deadline,as。可以在系統啟動時設置內核參數elevator=<name>來指定默認的調度器。也可以在運行時為某個塊設備設置IO調度程序。

 

下面來簡要介紹這四個調度器的電梯調度算法。

Noop:最簡單的調度算法。新的請求總是被添加到隊頭或者隊尾,然后總是從隊頭中選出將要被處理的請求。

 

CFQ:(Complete FarinessQueueing)它的目標是在所有請求的進程中平均分配IO的帶寬。因此,它會根據進程創建自己的請求隊列,然后將IO請求放入相應的隊列中。在使用輪轉法從每個非空的隊列中取出IO請求。

 

Deadline:使用了四個隊列,兩個以磁盤塊序號排序的讀寫隊列,兩個以最后期限時間排序的讀寫隊列。算法首先確定下一個讀寫的方向,讀的優先級高于寫。然后檢查被選方向的最后期限隊列:如果最后期限時間的隊列中有超時的請求,則將剛才的請求移動至隊尾,然后在磁盤號排序隊列中從超時請求開始處理。當處理完一個方向的請求后,在處理另一個方向的請求。(讀請求的超時時間是500ms,寫請求的超時時間是5s

 

Anticipatory:它是最復雜的IO調度算法。和deadline算法一樣有四個隊列。還附帶了一些啟發式策略。它會從當前的磁頭位置后的磁盤號中選擇請求。在調度了一個由P進程的IO請求后,會檢查下一個請求,如果還是P進程的請求,則立即調度,如果不是,同時預測P進程很快會發出請求,則還延長大約7ms的時間等待P進程的IO請求。

 

 

 

Write/Read函數

以ext3的write為例:

系統調用write()的作用就是修改頁高速緩存內的一些頁的內容,如果頁高速緩存內沒有所要的頁則分配并追加這些頁。

當臟頁達到一定數量或者超時后,將臟頁刷回硬盤。也可以執行相關系統調用。

 

為什么要達到一定數量,是因為延遲寫能在一定層度上提高系統的性能,這也使得塊設備的平均讀請求會多于寫請求。

 

在程序中調用write函數,將進入系統調用f_op->write。這個函數將調用ext3的do_sync_write。這個函數將參數封裝后調用generic_file_aio_write。由參數名可以看出同步寫變成了異步寫。如果沒有標記O_DIRECT,將調用函數generic_file_buffered_write將寫的內容寫進kernel的高速頁緩存中。Buffer是以page為單位即4k。之后當調用cond_resched()進行進程的調度,DMA會將buffer中的內容寫進硬盤。

所以當每次以4k為單位寫入硬盤時效率會達到最高。下面是UNIX環境高級編程的實驗結果:


下圖是linux 的塊設備的數據操作層次:

Sector扇區:是設備驅動和IO調度程序處理數據粒度。

Block塊:是VFS和文件系統處理數據的粒度。其大小不唯一,可以是512,1024,2048,4096字節。內核操作的塊大小是4096字節。

Segment段:是DMA傳送的單位。每一個段包含了相鄰的扇區,它能使DMA傳送不相鄰的扇區。


 

四.用戶程序

根據以上的分析,我們的write buffer一般設置為4K的倍數。

 

在程序中有意識的延遲寫。這個是os的策略,當然也可以應用到程序的設計中。當然也會有缺點:1.如果硬件錯誤或掉電,則會丟失內容(做額外的備份)2.需要額外的內存空間。(犧牲內存來提高IO的效率)

 

我們還需根據系統的IO調度器的調度策略,設計出不同的IO策略。盡量降低磁盤的平均訪問時間,降低請求隊列,提高數據傳輸的速率。

 

 

 

五.監控硬盤的工具和指標

Iostat–x –k 1

 -x顯示更多的消息 -k數據以KB為單位 1每秒顯示一次

輸出顯示的信息

Iowait:cpu等待未完成的IO請求而空閑的時間的比例。

Idle:cpu空閑且無IO請求的比例。

rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了。

wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。

rsec/s:每秒讀取的扇區數;

wsec/:每秒寫入的扇區數。

r/s:每秒完成的讀 I/O 設備次數。即 delta(rio)/s

w/s:每秒完成的寫 I/O 設備次數。即 delta(wio)/s

await:每一個IO請求的處理的平均時間(單位是毫秒)。包括加入請求隊列和服務的時間。

svctm:   平均每次設備I/O操作的服務時間。

avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)。即 delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:
平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的單位為毫秒)

%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那么該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,因為磁盤的并發能力,所以磁盤使用未必就到了瓶頸)。

 

下面我們做一個實驗來分析一下

我們使用命令

time dd if=/dev/zero of=/home/zhouyuan/mytest bs=1M count=3000

向mytest寫入數據,寫入3G

截取部分的狀態監控:




 

如圖2,當兩條數據 iowait 達到了 99% 以上,寫入的數據是0,這是因為DMA將內存的中的數據傳輸給設備。結合圖1的前兩條數據,利用率達到了99%+卻沒有寫入的磁盤塊。

如圖3,iowait下降,說明cpu開始執行相關程序,而此時塊設備開始寫入的數據。這兩個操作是異步進行的。

 

Vmstat–k –n 1

Swap

  si: 從磁盤交換到內存的交換頁數量,單位:KB/

  so: 從內存交換到磁盤的交換頁數量,單位:KB/

IO

  bi: 從塊設備接受的塊數,單位:塊/

  bo: 發送到塊設備的塊數,單位:塊/



從圖中我們可以看出系統的延遲寫。

posted @ 2011-08-26 20:04 Range 閱讀(17197) | 評論 (2)編輯 收藏

2011年7月15日

      最近調試網絡的服務端程序,自己寫了一個小客戶端程序來測試,發現服務程序解包錯誤。經調試發現客戶端的協議頭大小和服務器端的協議頭大小不一致。原因是服務器端加了#pragma pack(1),而客戶端沒加。

    之前沒接觸過這個編譯宏,現在來認真學習之。

    首先google~~

    原來#pragma pack有幾種形式,我所接觸到的是#pragma pack(n),即變量以n字節對齊。

    變量對齊在每個系統中是不一樣的,默認的對齊方式能有效的提高cpu取指取數的速度,但是可能會浪費一定的空間。在網絡程序中采用#pragma pack(1),即變量緊縮,不但可以減少網絡流量,還可以兼容各種系統,不會因為系統對齊方式不同而導致解包錯誤。

    了解了概念和優點,現在我們就來測試之~

 

    平臺:CPU—Pentium E5700 內存—2G

     1.操作系統:ubuntu 11.04 32bit   編譯器:G++ 4.5.2

     2.操作系統:windows xp              編譯器:VS2010

 

    先看第一個測試。

    結構體在正常情況和緊縮情況在以上不同環境下占用的內存大小。

1 struct pack {
2   int i;
3   short s;
4   double d;
5   char c;
6   short f;
7 }

  
   測試結果為:

    1
   

 

    2
    
  
    測試結果分析:

 

 

    可以看出緊縮后結構體的大小為15,是結構體內置類型大小的和。但是在默認情況下,結構體的大小都是對齊字節數的倍數。ubuntupack只需要20個字節,而windows24個字節。這是因為ubuntu是以4字節對齊,而windows則是以最大的內置類型的字節數對齊,在結構體內最大的內置類型為double,其大小為8個字節。他們在內存中的對齊方式如下圖:

    1

    

    2

    

   還需注意的是,在對齊類型的內部都是以2字節對齊的。

   結論:在默認情況下,linux操作系統是以4字節對齊,windows操作系統則是以最大的內置類型對齊。

 

   第二個測試

   一個結構體內包含另外一個結構體,其大小的情況。

   內部的結構體為

1 struct pack {
2   short s;
3   double d;
4 }

   外部的結構體為

   1 struct complex _pack{

2   char c;
3   struct pack s;
4   double d;
5 };

    我們有四種情況:

     1.      pack緊縮,complex _pack緊縮

     2.      pack緊縮,complex _pack默認

     3.      pack默認,complex _pack緊縮

     4.      pack默認,complex _pack默認

    以下的排列均按此順序。

     測試的結果

      1

      

     2

      

    測試結果分析:

    在兩個操作系統下,除了第一種情況----內結構體和外結構體都緊縮----相同之外,其他三種情況都不相同。我們可以根據偏移畫出結構體在內存中的情況。第一種情況省略。

     1

     

     2

     

    結論:#pragma pack只影響當前結構體的變量的對齊情況,并不會影響結構體內部的結構體變量的排列情況。或者說#pragma pack的作用域只是一層。我們由第三種情況,內部結構體正常,外部結構體緊縮,可以得出結構體的對齊是按偏移計算的。

    這里還有一個問題沒解決,為什么第二種情況內部結構體的偏移都是1?不是4或者8?

 

posted @ 2011-07-15 20:36 Range 閱讀(6245) | 評論 (6)編輯 收藏

      The IP Network Address TranslatorIP網絡地址轉換是人們說的NAT,或者說NA(P)TNAT是為了解決IPv4地址不足而提出來得一種替代方案,可以對外界屏蔽內部的網絡拓撲。隨著網絡的發展,NAT阻礙了構建在覆蓋網絡的P2P程序的發展。因為覆蓋網絡是構建在應用層,屏蔽了傳輸層以下的網絡拓撲,網絡中的每一個節點或某些節點有此網絡的路由表,由這些路由表構建出這個覆蓋網絡,但是NAT阻礙的覆蓋網絡中節點的連接。
    
    
   
    
上圖顯示了NAT的原理。NAT將內網的IP替換為公網IP,將端口映射為公網的端口。公網IP替換內網IP是固定的,NAT的不足之處在于端口的替換。因為NAT還沒有形成標準,替換策略有幾種,這也是NAT行為的關鍵。

     在《Behavior and Classification of NAT Devices and Implications for NAT Traversal》一文中就把端口映射的行為分成四種,其中包括保留端口,不保留端口,端口重載,端口復用。這四種分類最終區分了NAT的四種類型即Full cone NATSymmetric NATPort-Restrictes cone NAT Address-Restriced cone NAT

     為了使覆蓋網絡中的節點相互通信,我們需要進行NAT穿越。在《A NAT Traversal Mechanism for Peer-To-Peer Networks》一文種介紹了根據兩端不同的NAT類型對應的四種NAT穿越方案。如下圖
     
     

    這些解決方案都需要STUNSimple Traversal of User Datagram Protocol through Network Address Translators (NATs)NATUDP簡單穿越)協議幫助。STUN協議要求一臺具有公網IP的主機幫助一臺主機進行NAT類型的判斷。
    

      上圖是STUN協議的流程,其主要的思想是通過STUN的回射來判斷主機的NAT類型。

     除了直接連接,反向連接、打洞和依賴都需要第三臺主機的幫助。

     在《Characterization and Measurement of TCP Traversal through NATs and Firewalls》一文中介紹了TCP穿越的方法。在STUNT#2方法中,第三臺主機和兩臺需要連接的主機都有長連接,當一方需要發起來連接時,向第三臺主機發請求,第三臺主機向被請求的主機發送邀請,此時需要連接的主機都向對方發送SYN包,此時雙方的防火墻都有了洞,只要有一方的SYN包到達對方主機,連接就會被建立。Relay方法需要耗費的代價太大,在P2P應用中一般會消極的處理雙方都是對稱NAT的情況。






 

posted @ 2011-07-15 20:35 Range 閱讀(1839) | 評論 (2)編輯 收藏
     Hello World!
posted @ 2011-07-15 20:31 Range 閱讀(424) | 評論 (0)編輯 收藏
僅列出標題  

統計

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区精品在线| 好吊妞这里只有精品| av不卡在线观看| 亚洲精品一区中文| 国产精品久久久久久久久久妞妞| 午夜精品久久久久久久久| 亚洲系列中文字幕| 国产一区二区三区高清| 欧美大片在线观看一区| 欧美日韩18| 久久成人免费| 欧美激情a∨在线视频播放| 亚洲深夜福利在线| 欧美一区国产一区| 亚洲人午夜精品免费| 中文在线不卡视频| 在线成人激情| 99在线精品免费视频九九视| 国产日韩亚洲欧美精品| 欧美激情一区二区三区在线视频观看 | 欧美成人一品| 销魂美女一区二区三区视频在线| 久久免费视频在线| 亚洲自拍偷拍色片视频| 久久久久久午夜| 亚洲一区二区在线观看视频| 久久精品人人做人人爽电影蜜月| aaa亚洲精品一二三区| 欧美在线国产| 亚洲欧美制服中文字幕| 欧美成人高清视频| 久久精品在这里| 国产精品v一区二区三区 | 亚洲专区国产精品| 免费不卡中文字幕视频| 欧美亚洲免费电影| 欧美成人一区二区三区在线观看| 国产精品国产精品| 亚洲精品视频一区| 亚洲第一网站免费视频| 亚洲欧美999| 亚洲四色影视在线观看| 嫩模写真一区二区三区三州| 久久久999精品免费| 国产精品成人一区二区网站软件 | 久久一二三国产| 国产精品永久免费在线| 亚洲视频在线观看三级| 一本一本大道香蕉久在线精品| 久久天堂成人| 久久综合九色综合欧美狠狠| 国产欧美日韩精品专区| 亚洲五月婷婷| 亚洲免费视频一区二区| 欧美日韩一区综合| 亚洲作爱视频| 亚洲欧美日韩电影| 国产精品久久久久久五月尺| 日韩写真在线| 亚洲永久精品国产| 国产精品久久久久秋霞鲁丝| av不卡在线观看| 亚洲欧美国产高清va在线播| 国产精品久久久久免费a∨| 亚洲一区二区三区视频播放| 亚洲欧美日韩在线播放| 国产精品欧美经典| 性欧美暴力猛交另类hd| 久久久久久69| 亚洲高清激情| 欧美成人在线免费视频| 亚洲精品一区二区三| 亚洲特级毛片| 国产女精品视频网站免费| 欧美怡红院视频| 欧美不卡福利| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品国产精品| 亚洲综合视频一区| 久久嫩草精品久久久精品一| 一色屋精品视频在线观看网站| 久久资源在线| 99热这里只有精品8| 新狼窝色av性久久久久久| 国产一区在线看| 欧美二区在线| 夜夜嗨av一区二区三区中文字幕| 欧美一级视频免费在线观看| 精品成人乱色一区二区| 欧美精品激情blacked18| 亚洲一卡久久| 欧美大片va欧美在线播放| 亚洲午夜精品久久久久久浪潮 | 亚洲二区视频在线| 欧美日韩中文在线| 久久精品国产一区二区三区免费看 | 久久视频在线免费观看| 亚洲精品国产精品国自产观看浪潮 | 暖暖成人免费视频| 亚洲四色影视在线观看| 女人色偷偷aa久久天堂| 亚洲影院免费观看| 影音先锋中文字幕一区| 国产精品男gay被猛男狂揉视频| 久久一区二区精品| 亚洲一区久久久| 亚洲人线精品午夜| 午夜亚洲福利在线老司机| 亚洲国产精品精华液2区45| 国产精品99一区二区| 美日韩在线观看| 先锋影音国产精品| 一区二区激情视频| 亚洲电影中文字幕| 裸体一区二区三区| 欧美一区2区三区4区公司二百| 亚洲精品资源| 亚洲大胆女人| 国产一区二区三区久久久久久久久| 欧美日韩国产在线| 你懂的国产精品| 久久精品欧洲| 久久精彩免费视频| 欧美一级播放| 亚洲欧美日韩久久精品| 亚洲视频999| 一区二区日本视频| 日韩小视频在线观看专区| 亚洲高清视频中文字幕| 欧美激情第一页xxx| 免费在线观看一区二区| 久久综合色播五月| 久久综合亚州| 久久综合中文字幕| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久国产精品一区二区三区| 午夜精品美女自拍福到在线 | 亚洲免费精品| 艳女tv在线观看国产一区| 日韩性生活视频| 一区二区三区视频免费在线观看| 亚洲欧洲在线免费| 日韩一级在线| av成人免费在线| 亚洲视频一区| 欧美一区深夜视频| 久久久精品日韩| 欧美 日韩 国产精品免费观看| 免费不卡中文字幕视频| 欧美激情一区二区三区全黄| 亚洲福利视频网| 最新国产精品拍自在线播放| 亚洲人体1000| 国产精品99久久久久久宅男| 亚洲欧美精品在线观看| 羞羞漫画18久久大片| 久久久精品五月天| 欧美1区3d| 欧美日韩亚洲免费| 国产午夜精品全部视频播放| 国产亚洲一区二区三区在线播放| 激情成人av在线| 亚洲日本aⅴ片在线观看香蕉| 日韩视频在线一区| 新67194成人永久网站| 你懂的成人av| 夜夜嗨av一区二区三区免费区| 亚洲欧美日韩国产综合在线| 国产精品久久久久久久久借妻| 国产网站欧美日韩免费精品在线观看| 国产一区二区三区在线播放免费观看 | 好男人免费精品视频| 亚洲日本电影在线| 亚洲欧美国产高清va在线播| 久久久成人网| 亚洲美女电影在线| 欧美在线影院| 欧美日韩在线观看一区二区| 国产亚洲精品bv在线观看| 亚洲乱码国产乱码精品精98午夜| 亚洲欧美日韩网| 欧美国产日韩精品| 亚洲欧美国产va在线影院| 免费精品99久久国产综合精品| 国产精品多人| 亚洲经典在线看| 久久爱另类一区二区小说| 亚洲国产综合91精品麻豆| 亚洲欧美成人一区二区在线电影| 女女同性精品视频| 国产一区二区三区在线免费观看 | 国产日韩av高清| 一二三四社区欧美黄| 老司机午夜免费精品视频| 99re6这里只有精品| 免费亚洲电影在线观看| 国产性天天综合网| 午夜宅男久久久| 日韩网站在线| 欧美日韩成人一区二区三区|