色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當前位置:首頁  >  技術(shù)干貨  > Linux內(nèi)存中的Cache真的能被回收么?

Linux內(nèi)存中的Cache真的能被回收么?

來源:千鋒教育
發(fā)布人:syq
時間: 2023-01-30 18:15:00 1675073700

  在 Linux 系統(tǒng)中,我們經(jīng)常用 free 命令來查看系統(tǒng)內(nèi)存的使用狀態(tài)。在一個 RHEL6 的系統(tǒng)上,free 命令的顯示內(nèi)容大概是這樣一個狀態(tài):

1

  這里的默認顯示單位是 kb,我的服務(wù)器是 128G 內(nèi)存,所以數(shù)字顯得比較大。這個命令幾乎是每一個使用過 Linux 的人必會的命令,但越是這樣的命令,似乎真正明白的人越少(我是說比例越少)。一般情況下,對此命令輸出的理解可以分這幾個層次:

  1.不了解。這樣的人的第一反應(yīng)是:天啊,內(nèi)存用了好多,70 個多 G,可是我?guī)缀鯖]有運行什么大程序啊?為什么會這樣?Linux 好占內(nèi)存!

  2.自以為很了解。這樣的人一般自習(xí)評估過會說:嗯,根據(jù)我專業(yè)的眼光看出來,內(nèi)存才用了 17G 左右,還有很多剩余內(nèi)存可用。buffers/cache 占用的較多,說明系統(tǒng)中有進程曾經(jīng)讀寫過文件,但是不要緊,這部分內(nèi)存是當空閑來用的。

  3.真的很了解。這種人的反應(yīng)反而讓人感覺最不懂 Linux,他們的反應(yīng)是:free 顯示的是這樣,好吧我知道了。神馬?你問我這些內(nèi)存夠不夠,我當然不知道啦!我特么怎么知道你程序怎么寫的?

Linux內(nèi)存中的Cache

  根據(jù)目前網(wǎng)絡(luò)上技術(shù)文檔的內(nèi)容,我相信絕大多數(shù)了解一點 Linux 的人應(yīng)該處在第二種層次。大家普遍認為,buffers 和 cached 所占用的內(nèi)存空間是可以在內(nèi)存壓力較大的時候被釋放當做空閑空間用的。但真的是這樣么?在論證這個題目之前,我們先簡要介紹一下 buffers 和 cached 是什么意思:

  什么是 buffer/cache?

  buffer 和 cache 是兩個在計算機技術(shù)中被用濫的名詞,放在不通語境下會有不同的意義。在 Linux 的內(nèi)存管理中,這里的 buffer 指 Linux 內(nèi)存的:Buffer cache。這里的 cache 指 Linux 內(nèi)存中的:Page cache。翻譯成中文可以叫做緩沖區(qū)緩存和頁面緩存。在歷史上,它們一個(buffer)被用來當成對 io 設(shè)備寫的緩存,而另一個(cache)被用來當作對 io 設(shè)備的讀緩存,這里的 io 設(shè)備,主要指的是塊設(shè)備文件和文件系統(tǒng)上的普通文件。但是現(xiàn)在,它們的意義已經(jīng)不一樣了。

  在當前的內(nèi)核中,page cache 顧名思義就是針對內(nèi)存頁的緩存,說白了就是,如果有內(nèi)存是以 page 進行分配管理的,都可以使用 page cache 作為其緩存來管理使用。當然,不是所有的內(nèi)存都是以頁(page)進行管理的,也有很多是針對塊(block)進行管理的,這部分內(nèi)存使用如果要用到 cache 功能,則都集中到 buffer cache 中來使用。(從這個角度出發(fā),是不是 buffer cache 改名叫做 block cache 更好?)然而,也不是所有塊(block)都有固定長度,系統(tǒng)上塊的長度主要是根據(jù)所使用的塊設(shè)備決定的,而頁長度在 X86 上無論是 32 位還是 64 位都是 4k。

  明白了這兩套緩存系統(tǒng)的區(qū)別,就可以理解它們究竟都可以用來做什么了。

  什么是 page cache

  Page cache 主要用來作為文件系統(tǒng)上的文件數(shù)據(jù)的緩存來用,尤其是針對當進程對文件有 read/write 操作的時候。如果你仔細想想的話,作為可以映射文件到內(nèi)存的系統(tǒng)調(diào)用:mmap 是不是很自然的也應(yīng)該用到 page cache?在當前的系統(tǒng)實現(xiàn)里,page cache 也被作為其它文件類型的緩存設(shè)備來用,所以事實上 page cache 也負責(zé)了大部分的塊設(shè)備文件的緩存工作。

  什么是 buffer cache

  Buffer cache 則主要是設(shè)計用來在系統(tǒng)對塊設(shè)備進行讀寫的時候,對塊進行數(shù)據(jù)緩存的系統(tǒng)來使用。這意味著某些對塊的操作會使用 buffer cache 進行緩存,比如我們在格式化文件系統(tǒng)的時候。一般情況下兩個緩存系統(tǒng)是一起配合使用的,比如當我們對一個文件進行寫操作的時候,page cache 的內(nèi)容會被改變,而 buffer cache 則可以用來將 page 標記為不同的緩沖區(qū),并記錄是哪一個緩沖區(qū)被修改了。這樣,內(nèi)核在后續(xù)執(zhí)行臟數(shù)據(jù)的回寫(writeback)時,就不用將整個 page 寫回,而只需要寫回修改的部分即可。

  如何回收 cache?

  Linux 內(nèi)核會在內(nèi)存將要耗盡的時候,觸發(fā)內(nèi)存回收的工作,以便釋放出內(nèi)存給急需內(nèi)存的進程使用。一般情況下,這個操作中主要的內(nèi)存釋放都來自于對 buffer/cache 的釋放。尤其是被使用更多的 cache 空間。既然它主要用來做緩存,只是在內(nèi)存夠用的時候加快進程對文件的讀寫速度,那么在內(nèi)存壓力較大的情況下,當然有必要清空釋放 cache,作為 free 空間分給相關(guān)進程使用。所以一般情況下,我們認為 buffer/cache 空間可以被釋放,這個理解是正確的。

  但是這種清緩存的工作也并不是沒有成本。理解 cache 是干什么的就可以明白清緩存必須保證 cache 中的數(shù)據(jù)跟對應(yīng)文件中的數(shù)據(jù)一致,才能對 cache 進行釋放。所以伴隨著 cache 清除的行為的,一般都是系統(tǒng) IO 飆高。因為內(nèi)核要對比 cache 中的數(shù)據(jù)和對應(yīng)硬盤文件上的數(shù)據(jù)是否一致,如果不一致需要寫回,之后才能回收。

  在系統(tǒng)中除了內(nèi)存將被耗盡的時候可以清緩存以外,我們還可以使用下面這個文件來人工觸發(fā)緩存清除的操作:

2

  方法是:

3

  當然,這個文件可以設(shè)置的值分別為 1、2、3。它們所表示的含義為:echo 1 > /proc/sys/vm/drop_caches: 表示清除 pagecache。

  echo 2 > /proc/sys/vm/drop_caches: 表示清除回收 slab 分配器中的對象(包括目錄項緩存和 inode 緩存)。slab 分配器是內(nèi)核中管理內(nèi)存的一種機制,其中很多緩存數(shù)據(jù)實現(xiàn)都是用的 pagecache。

  echo 3 > /proc/sys/vm/drop_caches: 表示清除 pagecache 和 slab 分配器中的緩存對象。

  cache 都能被回收么?

  我們分析了 cache 能被回收的情況,那么有沒有不能被回收的 cache 呢?當然有。我們先來看第一種情況:

  tmpfs

  大家知道 Linux 提供一種 “臨時” 文件系統(tǒng)叫做 tmpfs,它可以將內(nèi)存的一部分空間拿來當做文件系統(tǒng)使用,使內(nèi)存空間可以當做目錄文件來用。現(xiàn)在絕大多數(shù) Linux 系統(tǒng)都有一個叫做 / dev/shm 的 tmpfs 目錄,就是這樣一種存在。當然,我們也可以手工創(chuàng)建一個自己的 tmpfs,方法如下:

4

  于是我們就創(chuàng)建了一個新的 tmpfs,空間是 20G,我們可以在 / tmp/tmpfs 中創(chuàng)建一個 20G 以內(nèi)的文件。如果我們創(chuàng)建的文件實際占用的空間是內(nèi)存的話,那么這些數(shù)據(jù)應(yīng)該占用內(nèi)存空間的什么部分呢?根據(jù) pagecache 的實現(xiàn)功能可以理解,既然是某種文件系統(tǒng),那么自然該使用 pagecache 的空間來管理。我們試試是不是這樣?

5

  我們在 tmpfs 目錄下創(chuàng)建了一個 13G 的文件,并通過前后 free 命令的對比發(fā)現(xiàn),cached 增長了 13G,說明這個文件確實放在了內(nèi)存里并且內(nèi)核使用的是 cache 作為存儲。再看看我們關(guān)心的指標:-/+ buffers/cache 那一行。我們發(fā)現(xiàn),在這種情況下 free 命令仍然提示我們有 110G 內(nèi)存可用,但是真的有這么多么?我們可以人工觸發(fā)內(nèi)存回收看看現(xiàn)在到底能回收多少內(nèi)存:

6

  可以看到,cached 占用的空間并沒有像我們想象的那樣完全被釋放,其中 13G 的空間仍然被 / tmp/tmpfs 中的文件占用的。當然,我的系統(tǒng)中還有其他不可釋放的 cache 占用著其余 16G 內(nèi)存空間。那么 tmpfs 占用的 cache 空間什么時候會被釋放呢?是在其文件被刪除的時候. 如果不刪除文件,無論內(nèi)存耗盡到什么程度,內(nèi)核都不會自動幫你把 tmpfs 中的文件刪除來釋放 cache 空間。

7

  這是我們分析的第一種 cache 不能被回收的情況。還有其他情況,比如:

  共享內(nèi)存

  共享內(nèi)存是系統(tǒng)提供給我們的一種常用的進程間通信(IPC)方式,但是這種通信方式不能在 shell 中申請和使用,所以我們需要一個簡單的測試程序,代碼如下:

  程序功能很簡單,就是申請一段不到 2G 共享內(nèi)存,然后打開一個子進程對這段共享內(nèi)存做一個初始化操作,父進程等子進程初始化完之后輸出一下共享內(nèi)存的內(nèi)容,然后退出。但是退出之前并沒有刪除這段共享內(nèi)存。我們來看看這個程序執(zhí)行前后的內(nèi)存使用:

  結(jié)果是仍然不可回收。大家可以觀察到,這段共享內(nèi)存即使沒人使用,仍然會長期存放在 cache 中,直到其被刪除。刪除方法有兩種,一種是程序中使用 shmctl() 去 IPC_RMID,另一種是使用 ipcrm 命令。我們來刪除試試:

9

  刪除共享內(nèi)存后,cache 被正常釋放了。這個行為與 tmpfs 的邏輯類似。內(nèi)核底層在實現(xiàn)共享內(nèi)存(shm)、消息隊列(msg)和信號量數(shù)組(sem)這些 POSIX:XSI 的 IPC 機制的內(nèi)存存儲時,使用的都是 tmpfs。這也是為什么共享內(nèi)存的操作邏輯與 tmpfs 類似的原因。當然,一般情況下是 shm 占用的內(nèi)存更多,所以我們在此重點強調(diào)共享內(nèi)存的使用。說到共享內(nèi)存,Linux 還給我們提供了另外一種共享內(nèi)存的方法,就是:

  mmap

  mmap() 是一個非常重要的系統(tǒng)調(diào)用,這僅從 mmap 本身的功能描述上是看不出來的。從字面上看,mmap 就是將一個文件映射進進程的虛擬內(nèi)存地址,之后就可以通過操作內(nèi)存的方式對文件的內(nèi)容進行操作。但是實際上這個調(diào)用的用途是很廣泛的。當 malloc 申請內(nèi)存時,小段內(nèi)存內(nèi)核使用 sbrk 處理,而大段內(nèi)存就會使用 mmap。當系統(tǒng)調(diào)用 exec 族函數(shù)執(zhí)行時,因為其本質(zhì)上是將一個可執(zhí)行文件加載到內(nèi)存執(zhí)行,所以內(nèi)核很自然的就可以使用 mmap 方式進行處理。我們在此僅僅考慮一種情況,就是使用 mmap 進行共享內(nèi)存的申請時,會不會跟 shmget() 一樣也使用 cache?

  同樣,我們也需要一個簡單的測試程序:

10

  這次我們干脆不用什么父子進程的方式了,就一個進程,申請一段 2G 的 mmap 共享內(nèi)存,然后初始化這段空間之后等待 100 秒,再解除影射所以我們需要在它 sleep 這 100 秒內(nèi)檢查我們的系統(tǒng)內(nèi)存使用,看看它用的是什么空間?當然在這之前要先創(chuàng)建一個 2G 的文件./mmapfile。結(jié)果如下:

11

  然后執(zhí)行測試程序:

12

  我們可以看到,在程序執(zhí)行期間,cached 一直為 18G,比之前漲了 2G,并且此時這段 cache 仍然無法被回收。然后我們等待 100 秒之后程序結(jié)束。

13

  程序退出之后,cached 占用的空間被釋放。這樣我們可以看到,使用 mmap 申請標志狀態(tài)為 MAP_SHARED 的內(nèi)存,內(nèi)核也是使用的 cache 進行存儲的。在進程對相關(guān)內(nèi)存沒有釋放之前,這段 cache 也是不能被正常釋放的。實際上,mmap 的 MAP_SHARED 方式申請的內(nèi)存,在內(nèi)核中也是由 tmpfs 實現(xiàn)的。由此我們也可以推測,由于共享庫的只讀部分在內(nèi)存中都是以 mmap 的 MAP_SHARED 方式進行管理,實際上它們也都是要占用 cache 且無法被釋放的。

  最后

  我們通過三個測試例子,發(fā)現(xiàn) Linux 系統(tǒng)內(nèi)存中的 cache 并不是在所有情況下都能被釋放當做空閑空間用的。并且也也明確了,即使可以釋放 cache,也并不是對系統(tǒng)來說沒有成本的。總結(jié)一下要點,我們應(yīng)該記得這樣幾點:

  1.當 cache 作為文件緩存被釋放的時候會引發(fā) IO 變高,這是 cache 加快文件訪問速度所要付出的成本。

  2.tmpfs 中存儲的文件會占用 cache 空間,除非文件刪除否則這個 cache 不會被自動釋放。

  3.使用 shmget 方式申請的共享內(nèi)存會占用 cache 空間,除非共享內(nèi)存被 ipcrm 或者使用 shmctl 去 IPC_RMID,否則相關(guān)的 cache 空間都不會被自動釋放。

  4.使用 mmap 方法申請的 MAP_SHARED 標志的內(nèi)存會占用 cache 空間,除非進程將這段內(nèi)存 munmap,否則相關(guān)的 cache 空間都不會被自動釋放。

  5.實際上 shmget、mmap 的共享內(nèi)存,在內(nèi)核層都是通過 tmpfs 實現(xiàn)的,tmpfs 實現(xiàn)的存儲用的都是 cache。

  當理解了這些的時候,希望大家對 free 命令的理解可以達到我們說的第三個層次。我們應(yīng)該明白,內(nèi)存的使用并不是簡單的概念,cache 也并不是真的可以當成空閑空間用的。如果我們要真正深刻理解你的系統(tǒng)上的內(nèi)存到底使用的是否合理,是需要理解清楚很多更細節(jié)知識,并且對相關(guān)業(yè)務(wù)的實現(xiàn)做更細節(jié)判斷的。我們當前實驗場景是 Centos 6 的環(huán)境,不同版本的 Linux 的 free 現(xiàn)實的狀態(tài)可能不一樣,大家可以自己去找出不同的原因。

  當然,本文所述的也不是所有的 cache 不能被釋放的情形。那么,在你的應(yīng)用場景下,還有那些 cache 不能被釋放的場景呢?

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
工業(yè)機器人、自動化、PLC三者是什么關(guān)系?

一、工業(yè)機器人和自動化工業(yè)機器人是自動化技術(shù)的一部分,是自動化生產(chǎn)線的關(guān)鍵組件之一。在自動化生產(chǎn)線中,工業(yè)機器人被廣泛應(yīng)用于執(zhí)行各種任...詳情>>

2023-10-15 01:41:38
為什么Redis要對一種數(shù)據(jù)類型存儲兩次呢?

一、實現(xiàn)快速數(shù)據(jù)訪問Redis是一種高性能的內(nèi)存數(shù)據(jù)庫,將數(shù)據(jù)存儲在內(nèi)存中可以實現(xiàn)非常快速的數(shù)據(jù)讀取和訪問。為了進一步提高數(shù)據(jù)的訪問速度,R...詳情>>

2023-10-15 01:40:32
什么是編程思想?

一、編程思想的定義和理念編程思想可以理解為一套指導(dǎo)編程活動的理念和原則。它包括如何定義問題,如何設(shè)計解決方案,以及如何實現(xiàn)和測試這個解...詳情>>

2023-10-15 01:22:38
迭代開發(fā)模型中最容易出問題的階段是什么?

一、迭代開發(fā)模型中最容易出問題的階段是什么 在迭代開發(fā)模型中,最容易出問題的階段通常是需求收集和分析階段。在這個階段,開發(fā)團隊需要與客...詳情>>

2023-10-15 01:03:52
軟件測試中bug管理工具Jira怎么樣?

一、Jira是什么 Jira是一款由澳大利亞軟件公司Atlassian開發(fā)的項目管理和問題跟蹤工具。它是一種用于敏捷項目開發(fā)和軟件開發(fā)過程中的工具,廣泛...詳情>>

2023-10-15 01:02:32
色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍
国产精品亚洲人在线观看| 国产精品天美传媒| 一区二区三区日韩| 欧美日韩一区二区欧美激情| 亚洲高清免费视频| 日韩精品一区二区三区在线| 国产激情一区二区三区四区| 中文字幕免费一区| 欧美特级限制片免费在线观看| 亚洲成人福利片| 精品国产一区久久| 成人高清伦理免费影院在线观看| 亚洲激情图片小说视频| 日韩一区二区三区在线| 国产成人精品1024| 亚洲福利一区二区三区| wwww国产精品欧美| 91在线免费看| 麻豆精品一区二区| 中文字幕五月欧美| 日韩亚洲欧美综合| 91视视频在线直接观看在线看网页在线看| 午夜久久久久久电影| 久久久久国产成人精品亚洲午夜| 色婷婷久久综合| 精品一二三四区| 亚洲一区二区三区在线播放| 精品国产一区二区三区忘忧草| caoporn国产精品| 强制捆绑调教一区二区| 中文字幕亚洲精品在线观看| 欧美va天堂va视频va在线| 在线观看亚洲精品视频| 国产一区二区三区免费看| 亚洲国产一区二区三区| 欧美激情一区二区三区| 欧美一级二级三级蜜桃| 色婷婷综合久久| 国产精品一区在线观看你懂的| 亚洲va欧美va人人爽| 国产精品久久三| 精品99999| 5566中文字幕一区二区电影| aaa亚洲精品| 国产在线麻豆精品观看| 五月婷婷综合激情| 亚洲欧美日本在线| 国产视频在线观看一区二区三区| 欧美二区在线观看| 在线看日韩精品电影| 懂色av中文字幕一区二区三区| 全部av―极品视觉盛宴亚洲| 一区二区在线免费| 综合久久一区二区三区| 国产欧美日韩视频在线观看| 精品国产一二三区| 欧美一区二区成人6969| 欧美日韩在线不卡| 欧美这里有精品| 91香蕉视频mp4| 成人成人成人在线视频| 国产精品一区二区三区99| 老司机精品视频线观看86 | 欧美日韩成人综合天天影院| 色悠久久久久综合欧美99| 不卡的电视剧免费网站有什么| 国产精品一级片在线观看| 久久99久久99精品免视看婷婷| 天堂蜜桃一区二区三区| 天天综合色天天| 日韩二区三区在线观看| 日韩制服丝袜av| 日本欧美一区二区| 久久国产精品第一页| 国产在线精品一区二区不卡了| 紧缚奴在线一区二区三区| 激情深爱一区二区| 国产麻豆视频精品| 国产精品99久| av在线播放不卡| 91美女视频网站| 欧美亚洲一区二区在线观看| 欧美性做爰猛烈叫床潮| 欧美男同性恋视频网站| 这里只有精品99re| 欧美大肚乱孕交hd孕妇| 久久久久久久久久美女| 国产欧美精品一区二区色综合| 国产视频亚洲色图| 亚洲人一二三区| 亚洲妇熟xx妇色黄| 久草这里只有精品视频| 粉嫩aⅴ一区二区三区四区五区| 99精品视频免费在线观看| 91精彩视频在线观看| 欧美精品自拍偷拍| www国产成人免费观看视频 深夜成人网| www国产成人| 亚洲色图.com| 日日夜夜免费精品| 国产精品18久久久| 91久久人澡人人添人人爽欧美| 7777精品伊人久久久大香线蕉经典版下载| 日韩午夜激情免费电影| 欧美国产亚洲另类动漫| 亚洲一二三区视频在线观看| 另类小说欧美激情| 粗大黑人巨茎大战欧美成人| 在线观看av一区二区| 欧美变态口味重另类| 国产精品美女一区二区在线观看| 亚洲乱码一区二区三区在线观看| 丝袜美腿高跟呻吟高潮一区| 国产美女在线精品| 欧美少妇bbb| 久久久久久毛片| 亚洲黄色免费网站| 国产精品一级在线| 欧美美女一区二区在线观看| 久久精品在线观看| 亚洲午夜成aⅴ人片| 久久精品国产精品亚洲红杏 | 欧美激情一二三区| 亚洲第一综合色| 国产高清精品网站| 欧美日韩高清在线| 久久精品视频在线免费观看| 亚洲一级二级三级| 国产91丝袜在线观看| 欧美日本精品一区二区三区| 国产欧美精品在线观看| 日韩av电影天堂| 91黄色激情网站| 中文字幕欧美激情| 久久精品国产免费看久久精品| 色综合久久中文综合久久97 | 久久99精品网久久| 欧美日韩精品福利| 亚洲欧美一区二区视频| 国产精品一区二区不卡| 日韩视频永久免费| 夜夜揉揉日日人人青青一国产精品| 激情偷乱视频一区二区三区| 欧美日韩一卡二卡三卡 | 成人精品高清在线| 精品久久99ma| 日韩国产欧美三级| 欧美系列日韩一区| 亚洲色图制服丝袜| 成人v精品蜜桃久久一区| 久久综合av免费| 久久精品国产成人一区二区三区| 欧洲在线/亚洲| 亚洲色图制服诱惑 | 精品一区二区三区视频| 欧美日韩国产影片| 成人欧美一区二区三区1314| 国产精品18久久久久久久网站| 日韩免费观看2025年上映的电影| 午夜电影网一区| 欧美亚洲一区二区在线观看| 亚洲视频电影在线| 97久久精品人人做人人爽50路| 国产欧美日韩三级| 国产白丝网站精品污在线入口| 2019国产精品| 韩国av一区二区| 精品国产成人系列| 韩国av一区二区| 久久免费国产精品| 国产精品99久久久久久有的能看| 精品国产污污免费网站入口| 久久精品国产99国产精品| 精品国产一区二区三区久久影院| 久久精品国产99久久6| 精品国产免费人成电影在线观看四季| 日本特黄久久久高潮| 日韩一区二区在线观看视频播放| 日韩电影网1区2区| 日韩欧美高清dvd碟片| 精品一区二区三区欧美| 久久精品这里都是精品| 99精品视频一区二区| 亚洲九九爱视频| 欧美人伦禁忌dvd放荡欲情| 午夜伦理一区二区| 欧美成人伊人久久综合网| 国产在线观看一区二区 | 91精品国产综合久久精品| 久久精品国产一区二区三| 久久久另类综合| 99国产精品国产精品久久| 一级中文字幕一区二区| 91精品欧美一区二区三区综合在| 久久精品国产色蜜蜜麻豆| 欧美激情综合五月色丁香小说| 99精品久久只有精品| 亚洲国产一区二区三区青草影视| 欧美电影免费观看高清完整版| 国产高清不卡二三区|