精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux Glibc 內(nèi)存站崗問(wèn)題及解決方法

系統(tǒng) Linux
對(duì)于嵌入式設(shè)備來(lái)說(shuō),用戶態(tài)內(nèi)存管理是一項(xiàng)基礎(chǔ)功能,目前主流的用戶態(tài)內(nèi)存管理庫(kù)有g(shù)libc、uclibc、tcmalloc、jemalloc等。

0引言

對(duì)于嵌入式設(shè)備來(lái)說(shuō),用戶態(tài)內(nèi)存管理是一項(xiàng)基礎(chǔ)功能,目前主流的用戶態(tài)內(nèi)存管理庫(kù)有g(shù)libc、uclibc、tcmalloc、jemalloc等。

本文基于glibc2.17版本進(jìn)行分析,圍繞glibc內(nèi)存分配原理、內(nèi)存站崗問(wèn)題形成原因展開討論,并對(duì)glibc緩存大量?jī)?nèi)存(高達(dá)幾十個(gè) G甚至上百 G)且不釋放的問(wèn)題給出一種解決方案。

筆者遇到的問(wèn)題是基于glibc進(jìn)行內(nèi)存管理的64 位Linux系統(tǒng)。具體現(xiàn)象如下:設(shè)備32G物理內(nèi)存,在大規(guī)格打流情況下,某用戶進(jìn)程占用的物理內(nèi)存暴漲至20G左右。

在停止打流后,觀察到業(yè)務(wù)模塊已經(jīng)釋放了絕大部分內(nèi)存,但是進(jìn)程占用的物理內(nèi)存依然達(dá)到16G左右,此后內(nèi)存狀況一直維持該狀態(tài),導(dǎo)致系統(tǒng)內(nèi)存緊張,若疊加上其他業(yè)務(wù)則出現(xiàn)了OOM的現(xiàn)象,已排除該進(jìn)程內(nèi)存泄露的可能性。

1Glibc內(nèi)存分配基本原理

Glibc使用了ptmalloc的內(nèi)存管理方式,本文在描述時(shí)均使用glibc來(lái)稱呼。Glibc申請(qǐng)內(nèi)存時(shí)是從分配區(qū)申請(qǐng)的,分為主分配區(qū)和非主分配區(qū),分配區(qū)都有鎖,在分配內(nèi)存前需要先獲取鎖,然后再去申請(qǐng)內(nèi)存。

一般進(jìn)程都是多線程的,當(dāng)多個(gè)線程同時(shí)需要申請(qǐng)內(nèi)存時(shí),如果只有一個(gè)分配區(qū),那么效率太低。

glibc為了支持多線程的內(nèi)存申請(qǐng)釋放,會(huì)在多個(gè)線程同時(shí)需要申請(qǐng)內(nèi)存時(shí)根據(jù)cpu核數(shù)分配一定數(shù)量的分配區(qū),將分配區(qū)分配給線程。如果線程數(shù)量較多,則會(huì)出現(xiàn)多個(gè)線程爭(zhēng)用一個(gè)分配區(qū)的的情況,這里不展開。

內(nèi)存申請(qǐng)基本原理:當(dāng)用戶調(diào)用malloc申請(qǐng)內(nèi)存時(shí),glibc會(huì)查看是否已經(jīng)緩存了內(nèi)存,如果有緩存則會(huì)優(yōu)先使用緩存內(nèi)存,返回一塊符合用戶請(qǐng)求大小的內(nèi)存塊。

如果沒有緩存或者緩存不足則會(huì)去向操作系統(tǒng)申請(qǐng)內(nèi)存(可通過(guò)brk、mmap申請(qǐng)內(nèi)存),然后切一塊內(nèi)存給用戶,如圖1所示。

圖 1

內(nèi)存釋放基本原理:當(dāng)業(yè)務(wù)模塊使用完畢后調(diào)用free釋放內(nèi)存時(shí),glibc會(huì)檢查該內(nèi)存塊虛擬地址上下內(nèi)存塊的使用狀態(tài)(fast bin除外)。若其上一塊內(nèi)存空閑,則與上一塊內(nèi)存進(jìn)行合并。若下一塊內(nèi)存空閑,則與下一塊內(nèi)存進(jìn)行合并。如圖2所示。

若下一塊內(nèi)存時(shí)top chunk(top chunk一直是空閑的),則看top chunk的大小是否超過(guò)一個(gè)閾值,如果超過(guò)一個(gè)閾值則將其釋放給OS,如圖3所示。

圖2

圖3

2Glibc內(nèi)存站崗及其原因

內(nèi)存站崗概念:

內(nèi)存站崗指的是glibc從OS申請(qǐng)到內(nèi)存后分配給業(yè)務(wù)模塊,業(yè)務(wù)模塊使用完畢后釋放了內(nèi)存,但是glibc沒有將這些空閑內(nèi)存釋放給OS,也就是緩存了很多空閑內(nèi)存無(wú)法歸還給系統(tǒng)的現(xiàn)象。

內(nèi)存站崗原因:

glibc設(shè)計(jì)時(shí)就確定其內(nèi)存是用于短生命周期的,因此在設(shè)計(jì)上內(nèi)存釋放給OS的時(shí)機(jī)是當(dāng)top chunk的大小超過(guò)一個(gè)閾值時(shí)會(huì)釋放top chunk的一部分內(nèi)存給OS。當(dāng)top chunk不超過(guò)閾值就不會(huì)釋放內(nèi)存給OS。

那么問(wèn)題來(lái)了,若與top chunk相鄰的內(nèi)存塊一直在使用中,那么top chunk就永遠(yuǎn)也不會(huì)超過(guò)閾值,即便業(yè)務(wù)模塊釋放了大量?jī)?nèi)存,達(dá)到幾十個(gè)G 或者上百個(gè)G,glibc也是無(wú)法將內(nèi)存還給OS的。

對(duì)于glibc來(lái)說(shuō),其有主分配和非主分配區(qū)的概念。主分配通過(guò)sbrk來(lái)增加分配區(qū)的內(nèi)存大小,而非主分配區(qū)則是通過(guò)一個(gè)或多個(gè)mmap出來(lái)的內(nèi)存塊用鏈表鏈接起來(lái)模擬主分配區(qū)的。為了更清晰的解釋內(nèi)存站崗,下面舉個(gè)例子來(lái)說(shuō)明主分配區(qū)的內(nèi)存站崗,如圖4所示。

圖4

如上有(a) (c) (e) (g)內(nèi)存塊正在使用,故而導(dǎo)致了空閑內(nèi)存(b) (d) (f)無(wú)法和top chunk連成一塊更大的空閑內(nèi)存塊,glibc的閾值(64位系統(tǒng)默認(rèn)是128K),盡管目前空閑內(nèi)存有將近130M,也無(wú)法還給OS。

接下來(lái)看非主分配區(qū)的內(nèi)存站崗,如圖 5 所示,實(shí)際的非主分配區(qū)可能有很多個(gè)heap,這里假設(shè)只有4個(gè)heap。

圖5

在定位過(guò)程中,筆者與同事討論過(guò)多次如何解決站崗。在一次討論過(guò)程中由鄧竑杰提出降低heap的size(類似于tcmalloc的做法),雖然實(shí)測(cè)后發(fā)現(xiàn)完全沒有效果,但是為后續(xù)解決問(wèn)題起到了啟示作用。

后面筆者在走讀代碼時(shí)發(fā)現(xiàn)這是glibc原生機(jī)制,同時(shí)筆者在查看內(nèi)存布局時(shí)觀察到非主分配區(qū)大量heap均為free狀態(tài)。原有機(jī)制是先釋放heap3,如果heap3有內(nèi)存在使用,盡管heap0、heap1、heap2的內(nèi)存都釋放了,那也是無(wú)法釋放給系統(tǒng)。

glibc有多個(gè)分配區(qū),每個(gè)分配區(qū)都幾百 M 空閑內(nèi)存的話,則整個(gè)進(jìn)程占用達(dá)到幾十個(gè)G也就不奇怪了。

3Glibc內(nèi)存站崗解決方法及patch

在內(nèi)存釋放時(shí),對(duì)于主分配區(qū)和非主分配其走的流程是不一樣的,我們64位系統(tǒng)的進(jìn)程內(nèi)存模型為經(jīng)典模式,棧是從高地址向低地址生長(zhǎng)的。

對(duì)于主分配區(qū)的內(nèi)存站崗我還沒有遇到過(guò),若主分配區(qū)內(nèi)存站崗,一種方法是可以嘗試madvise將主分配區(qū)的pagesize對(duì)齊的空閑內(nèi)存進(jìn)行釋放,但是這樣效果可能不太明顯。

另外一種是通過(guò)創(chuàng)建線程,然后將主線程的業(yè)務(wù)移到新線程即可,這樣主分配區(qū)就不會(huì)造成站崗了,而將站崗轉(zhuǎn)移到了非主配區(qū),而非主分配區(qū)則是我們接下來(lái)要進(jìn)行優(yōu)化的主戰(zhàn)場(chǎng)。

針對(duì)非主分配區(qū)進(jìn)行兩處優(yōu)化:

a) heap0,heap1,heap2是空閑的,那么我們就可以將heap1,heap2釋放掉;

b) heap默認(rèn)是64M,降低每個(gè)heap的size(筆者測(cè)試時(shí)設(shè)置為512K)。

圖 6

這里需要特別解釋一下為什么不釋放heap0和最后一個(gè)heap3,heap0的組成如圖7所示。圖左邊是第一個(gè)heap即heap0,圖右邊是最后一個(gè)heap即heap3。

從圖中可以清晰的看到如若釋放掉heap0那么會(huì)將struct malloc_state結(jié)構(gòu)體釋放,會(huì)造成進(jìn)程崩潰。右邊這個(gè)由于有在用的內(nèi)存,也不能釋放掉。當(dāng)然如果heap3的內(nèi)存全部被釋放了,則由glibc原生代碼進(jìn)行了處理,patch不再處理。

圖 7

經(jīng)過(guò)修改glibc源碼,優(yōu)化其釋放機(jī)制,實(shí)際打流測(cè)試。

在打流到峰值后,進(jìn)程使用了20G的內(nèi)存,在停止打流后數(shù)秒內(nèi)便恢復(fù)到了打流前的內(nèi)存水平,進(jìn)程所占用的內(nèi)存基本還給系統(tǒng)了。至此,glibc內(nèi)存站崗問(wèn)題得到解決。

以上我們介紹了如何解決內(nèi)存站崗的原理,紙上得來(lái)終覺淺,現(xiàn)在我們看patch源碼實(shí)現(xiàn)。

目前筆者已經(jīng)將該優(yōu)化的patch提交到開源社區(qū)審核,提交到社區(qū)的patch未對(duì)heap的size進(jìn)行修改,這是因?yàn)橄胍?jǐn)慎一些,畢竟開源的代碼使用場(chǎng)景較多,如有需要可自行決定heap的size。

Patch基于glibc2.17代碼

  1. 1. Index: arena.c 
  2. 2. =================================================================== 
  3. 3. --- arena.c (revision 2) 
  4. 4. +++ arena.c (working copy) 
  5. 5. @@ -652,7 +652,7 @@ 
  6. 6. 
  7. 7. static int 
  8. 8. internal_function 
  9. 9. -heap_trim(heap_info *heap, size_t pad) 
  10. 10. +heap_trim(heap_info *heap, heap_info* free_heap, size_t pad) 
  11. 11. { 
  12. 12. mstate ar_ptr = heap->ar_ptr; 
  13. 13. unsigned long pagesz = GLRO(dl_pagesize); 
  14. 14. @@ -659,7 +659,29 @@ 
  15. 15. mchunkptr top_chunk = top(ar_ptr), p, bck, fwd; 
  16. 16. heap_info *prev_heap; 
  17. 17. long new_size, top_size, extra, prev_size, misalign; 
  18. 18. + heap_info *last_heap; 
  19. 19. 
  20. 20. + /*Release heap if possible*/ 
  21. 21. + last_heap = heap_for_ptr(top_chunk); 
  22. 22. + if ((NULL != free_heap->prev) && (last_heap != free_heap)){ 
  23. 23. + p = chunk_at_offset(free_heap, sizeof(*free_heap)); 
  24. 24. + if (!inuse(p)){ 
  25. 25. + if (chunksize(p)+sizeof(*free_heap)+MINSIZE==free_heap->size){ 
  26. 26. + while (last_heap){ 
  27. 27. + if (last_heap->prev == free_heap){ 
  28. 28. + last_heap->prev == free_heap->prev; 
  29. 29. + break; 
  30. 30. + } 
  31. 31. + last_heap = last_heap->prev; 
  32. 32. + } 
  33. 33. + ar_ptr->system_mem -= free_heap->size
  34. 34. + arena_mem -= free_heap->size
  35. 35. + unlink(p, bck, fwd); 
  36. 36. + delete_heap(free_heap); 
  37. 37. + return 1; 
  38. 38. + } 
  39. 39. + } 
  40. 40. + } 
  41. 41. /* Can this heap go away completely? */ 
  42. 42. while(top_chunk == chunk_at_offset(heap, sizeof(*heap))) { 
  43. 43. prev_heap = heap->prev; 
  44. 44. Index: malloc.c 
  45. 45. =================================================================== 
  46. 46. --- malloc.c (revision 2) 
  47. 47. +++ malloc.c (working copy) 
  48. 48. @@ -915,7 +915,7 @@ 
  49. 49. # if __WORDSIZE == 32 
  50. 50. # define DEFAULT_MMAP_THRESHOLD_MAX (512 * 1024) 
  51. 51. # else 
  52. 52. - 
  53. # define DEFAULT_MMAP_THRESHOLD_MAX (4 * 1024 * 1024 * sizeof(long)) 
  54. 53. +# define DEFAULT_MMAP_THRESHOLD_MAX (256 * 1024) 
  55. 54. # endif 
  56. 55. #endif 
  57. 56. 
  58. 57. @@ -3984,7 +3984,7 @@ 
  59. 58. heap_info *heap = heap_for_ptr(top(av)); 
  60. 59. 
  61. 60. assert(heap->ar_ptr == av); 
  62. 61. - heap_trim(heap, mp_.top_pad); 
  63. 62. + heap_trim(heap, heap_for_ptr(p), mp_.top_pad); 
  64. 63. } 
  65. 64. } 

結(jié)束語(yǔ)

不同的內(nèi)存管理方式均有其優(yōu)勢(shì)和缺陷,由于工作需要,筆者有幸研究過(guò)glibc、tcmalloc、uclibc內(nèi)存管理,本文討論了glibc內(nèi)存管理存在的一個(gè)共性問(wèn)題,并給出可行的解決方案。

對(duì)于內(nèi)存站崗問(wèn)題,一般的做法是用戶自己緩存一些長(zhǎng)時(shí)間不釋放的內(nèi)存。另一種是干脆將glibc替換為tcmalloc。因?yàn)?tcmalloc 的 span比較小,所以站崗發(fā)生的概率極低,即便發(fā)生也就站崗一個(gè)span的大小。若由于某些原因不能用tcmalloc代替glibc的場(chǎng)景,如上的解決思路可以嘗試一下,該問(wèn)題也困擾我們多時(shí)了,花費(fèi)了較長(zhǎng)時(shí)間和較多精力去定位。

 

在glibc2.28的版本中,glibc有了tcache的特性,對(duì)于業(yè)務(wù)進(jìn)程使用大量小內(nèi)存的場(chǎng)景則更加容易出現(xiàn)內(nèi)存站崗問(wèn)題。在撰寫本文時(shí)查看了glibc2.33版本,開源社區(qū)還未對(duì)該問(wèn)題進(jìn)行修改(或許是開源社區(qū)大神認(rèn)為這不是glibc的問(wèn)題,而是用戶不釋放內(nèi)存)。

 

責(zé)任編輯:武曉燕 來(lái)源: Linux閱碼場(chǎng)
相關(guān)推薦

2009-07-01 18:14:36

JSP亂碼

2010-08-12 09:30:08

Flex內(nèi)存泄露

2022-04-02 20:27:30

ETS操作系統(tǒng)鴻蒙

2010-06-21 09:54:50

Linux Aplay

2011-05-06 17:25:58

硒鼓

2011-08-24 17:41:16

MySQL死鎖

2011-06-16 10:27:55

.NET內(nèi)存泄漏

2010-08-10 10:10:34

Flex內(nèi)存泄露

2018-11-01 15:26:38

開源軟件安全

2019-10-11 19:45:28

SparkSQLHiveHadoop

2025-04-07 07:20:35

SQL慢查詢性能

2016-11-14 10:06:04

大數(shù)據(jù)max位圖

2009-03-04 10:38:36

Troubleshoo桌面虛擬化Xendesktop

2010-08-31 13:49:12

CSS

2009-08-24 10:37:11

Silverlight

2017-06-14 22:11:57

數(shù)據(jù)庫(kù)MySQL死鎖

2022-04-06 10:09:17

云服務(wù)云計(jì)算

2021-01-12 11:40:12

SonarQube平臺(tái)數(shù)據(jù)項(xiàng)目授權(quán)

2010-12-27 10:48:10

VirtualboxFreedos

2011-04-29 12:54:09

IBM內(nèi)存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美色图天堂网| 国产激情一区二区三区桃花岛亚洲| 亚洲国产欧美久久| 亚洲精品久久久久久久蜜桃臀| 欧美 日韩 中文字幕| 亚洲深爱激情| 日韩在线观看免费网站 | 51精品久久久久久久蜜臀| 8x8ⅹ国产精品一区二区二区| 欧美 日韩 国产 成人 在线| 丝袜美腿亚洲色图| 久久99热精品这里久久精品| 一女三黑人理论片在线| 91九色综合| 亚洲五码中文字幕| 区一区二区三区中文字幕| 国产又大又长又粗| 国产精品一卡| 久久国产精品亚洲| 丰满少妇高潮一区二区| 亚洲码欧美码一区二区三区| 欧美日韩国内自拍| 国产免费色视频| 亚洲欧洲视频在线观看| 国产一区二区三区免费在线观看 | 国产真实夫妇交换视频| 精品美女久久| 亚洲电影中文字幕| 亚洲天堂伊人网| 香蕉视频亚洲一级| 亚洲国产你懂的| 天天成人综合网| 成人性爱视频在线观看| 福利电影一区二区三区| 国产日本欧美一区二区三区| 亚洲久久在线观看| 欧美午夜影院| 伦伦影院午夜日韩欧美限制| 蜜桃传媒一区二区亚洲| 清纯唯美亚洲经典中文字幕| 欧美一二三区在线观看| 国产免费又粗又猛又爽| 在线人成日本视频| 亚洲国产视频一区| 激情成人开心网| 国产在线看片| 亚洲欧洲精品一区二区三区不卡| 欧美午夜精品久久久久免费视| 动漫av一区二区三区| 国产一区二区三区免费看 | 成人免费视频国产免费| 99国产精品| 欧美极品少妇xxxxⅹ裸体艺术| 日韩av手机在线免费观看| 精品久久91| 亚洲天堂男人天堂| 日本高清www| 天海翼亚洲一区二区三区| 欧美精品一区二区三| 国产精品二区视频| 亚洲一区 二区| 欧美成人女星排行榜| 在线观看网站黄| 精品国产亚洲一区二区在线观看 | 亚洲欧美日韩电影| 成年人黄色在线观看| 岛国成人毛片| 一区二区三区小说| www.成年人视频| 成av人片在线观看www| 亚洲一区二区三区中文字幕在线| 高清无码视频直接看| 男女在线视频| 亚欧色一区w666天堂| 无码专区aaaaaa免费视频| 理论不卡电影大全神| 精品久久久久久中文字幕| 国产黄色一级网站| 欧美人与性动交xxⅹxx| 欧美亚州韩日在线看免费版国语版| 三年中国国语在线播放免费| 国外成人福利视频| 欧美一区二区播放| 国产激情第一页| 国产欧美一区| www.亚洲一区| 久久精品性爱视频| 久久久久国产精品一区二区| 国产精品毛片a∨一区二区三区|国| 亚洲视屏在线观看| 国产一区二区在线看| 高清不卡日本v二区在线| 色噜噜一区二区三区| 久久久综合精品| ijzzijzzij亚洲大全| 丰满大乳少妇在线观看网站| 欧美丝袜一区二区| 免费在线观看污网站| 97se亚洲国产一区二区三区| 亚洲欧美国内爽妇网| 永久免费看片直接| 亚洲国产激情| 国产精品日韩欧美综合| 午夜美女福利视频| 久久精品夜色噜噜亚洲aⅴ| 公共露出暴露狂另类av| 自拍偷拍欧美视频| 日韩三级视频在线观看| 色无极影院亚洲| 亚洲精品a级片| 日韩免费视频在线观看| 精品国产无码一区二区| 久久精品一区二区三区四区| 日韩欧美猛交xxxxx无码| 欧美极品免费| 日韩美女一区二区三区四区| 国产黄色录像视频| av成人黄色| 147欧美人体大胆444| 国产在线一二| 性欧美疯狂xxxxbbbb| 极品粉嫩美女露脸啪啪| 日韩a级大片| 久久综合久久美利坚合众国| 免费黄色片视频| 波多野结衣视频一区| 26uuu成人| 欧美日一区二区三区| 亚洲福利在线视频| 国产一二三区精品| 久久精品国产亚洲一区二区三区| 久久久人人爽| 高清视频在线观看三级| 欧美一区二区三区视频免费| 欧美做受高潮6| 国产精品尤物| 久久久久久高清| av电影在线免费| 欧美大胆一级视频| 日韩一级片大全| 精品一区二区三区免费毛片爱| 日本不卡高清视频一区| 午夜裸体女人视频网站在线观看| 欧美精品一区二区在线播放 | 天天色天天爱天天射综合| 日本美女久久久| 99久久影视| 成人精品一区二区三区电影免费 | 精品在线观看免费| 91亚洲精品丁香在线观看| 欧美69xxxx| 欧美四级电影网| 国产一二三四区在线| 日韩高清一级片| 日韩久久在线| 日本欧美韩国| 在线日韩中文字幕| 中文字幕av久久爽| 中文字幕亚洲一区二区va在线| 999精彩视频| 色综合蜜月久久综合网| 成人黄色在线观看| 久久精品视频观看| 日韩午夜精品电影| 国产精品99精品| 99re这里只有精品视频首页| 丰满人妻中伦妇伦精品app| 亚洲v天堂v手机在线| 日韩美女在线播放| 色老头视频在线观看| 7777精品伊人久久久大香线蕉最新版| 天海翼在线视频| 东方aⅴ免费观看久久av| aa视频在线播放| 欧美人妖在线| 91精品国产综合久久久久久久久| 黄色在线视频网站| 精品国产乱码久久久久久牛牛| 国产精品第56页| 久久美女高清视频| www.com污| 国内精品嫩模av私拍在线观看| 含羞草久久爱69一区| 天堂中文最新版在线中文| 亚洲丝袜在线视频| 国产喷水吹潮视频www| 亚洲一区二区三区四区在线 | 中文无码精品一区二区三区| 中文字幕一区二区三区在线不卡| 成人在线短视频| 国产精品久久777777毛茸茸 | 一本色道久久加勒比精品| 国产毛片欧美毛片久久久| 精品一区二区三区在线视频| 欧美乱大交xxxxx潮喷l头像| 国产精品欧美在线观看| 91在线观看免费高清| 韩日毛片在线观看| 色妞在线综合亚洲欧美| 囯产精品久久久久久| 91福利国产精品| 免费在线观看av网址| 国产视频一区在线观看| 中文字幕第10页| 久久久国产亚洲精品| 欧美一级中文字幕| 成人动漫免费在线观看| wwwxx欧美| 日韩在线电影| 欧美一级电影久久| 制服丝袜在线播放| 亚洲最新av在线网站| 狠狠躁日日躁夜夜躁av| 欧美精品免费视频| 少妇高潮av久久久久久| 亚洲综合一二区| 亚洲欧美综合7777色婷婷| 91丨国产丨九色丨pron| 日韩精品xxx| 久久99精品一区二区三区| 浮妇高潮喷白浆视频| 欧美 亚欧 日韩视频在线 | 国产精品久久久久久亚洲av| 美日韩一区二区| 免费日韩视频在线观看| 精品1区2区3区4区| 亚洲国产精品女人| 欧美色就是色| 清纯唯美一区二区三区| 欧美调教网站| 国产伦精品一区二区三区视频免费 | 日韩中文字幕影院| 日韩欧美国产午夜精品| 中文字幕日韩经典| 在线一区二区观看| 亚洲天堂男人av| 偷拍日韩校园综合在线| 久久久久久国产精品免费播放| 亚洲视频在线观看三级| 少妇太紧太爽又黄又硬又爽小说| 久久久久久久久97黄色工厂| 少妇精品一区二区| 成人国产精品免费观看动漫| 特黄视频免费观看| 久久精品国产网站| 日韩不卡一二三| 麻豆成人久久精品二区三区小说| 热久久精品免费视频| 日韩国产精品91| wwwwww.色| 日本欧美久久久久免费播放网| 成人午夜视频免费在线观看| 亚洲欧美日韩专区| caopor在线视频| 国产精品女主播一区二区三区| 免费在线观看亚洲视频| 香蕉成人久久| 国产女女做受ⅹxx高潮| 久久三级视频| 麻豆三级在线观看| 国产又黄又大久久| 美女被爆操网站| 大陆成人av片| 泷泽萝拉在线播放| 国产欧美精品一区aⅴ影院| 亚洲第一综合网| 国产精品国产精品国产专区不蜜| 国产精品久久免费观看| 国产精品不卡在线观看| 印度午夜性春猛xxx交| 一二三区精品福利视频| 日本少妇吞精囗交| 色屁屁一区二区| 91麻豆国产在线| 日韩美女天天操| 毛片免费在线| 久久精彩免费视频| 欧美xxx黑人xxx水蜜桃| 欧美一级电影免费在线观看| 91p九色成人| 99精品欧美一区二区三区| 精品按摩偷拍| 天天综合色天天综合色hd| 亚洲一区欧美| av天堂永久资源网| 麻豆国产欧美日韩综合精品二区| 黄色片子免费看| 精品系列免费在线观看| 免费a v网站| 国产精品私人自拍| 国产在线一区视频| 欧美性xxxxxxxx| 性少妇videosexfreexxx片| 亚洲精品日韩久久久| 日本天堂在线观看| 国内精品小视频| 欧美综合影院| 亚洲a成v人在线观看| 日本亚洲不卡| 警花观音坐莲激情销魂小说| 欧美aa国产视频| 草草草在线视频| 高清视频一区二区| 国产7777777| 国产精品亚洲一区二区三区在线观看| 国产精品99久久久久久白浆小说| 狂野欧美xxxx韩国少妇| 欧美亚洲免费在线| 欧美日韩亚洲一区| 色婷婷狠狠18| 99re热这里只有精品视频| 任你操精品视频| 色婷婷亚洲综合| 日本国产在线观看| 日韩在线免费视频观看| 丝袜老师在线| 国产伦精品一区二区三区| 天天综合亚洲| 九热视频在线观看| 97久久人人超碰| 国产亚洲欧美久久久久| 欧美久久久久免费| 国产高清视频在线播放| 777777777亚洲妇女| 亚洲日本va中文字幕| 秋霞在线一区二区| 免费人成在线不卡| 无码国产69精品久久久久同性| 洋洋成人永久网站入口| 国产精品毛片久久久久久久av| 亚洲视频自拍偷拍| 成人片免费看| 久久久久一区二区三区| 国模吧视频一区| 国产精品果冻传媒| 一区二区三区.www| 国产又大又粗又长| 精品久久久999| 日韩成人免费av| 国产精品99久久久久久大便| 麻豆精品在线观看| 亚洲精品国产精品国自| 欧美探花视频资源| av大片在线观看| 国产精品一区二区三区成人| 精品国精品国产自在久国产应用 | 日韩欧美成人激情| 黄色片网站在线| 成人福利网站在线观看11| 欧美亚洲精品在线| 最新中文字幕免费视频| 国产欧美日韩麻豆91| 五月婷婷丁香在线| 中文字幕av一区二区| 不卡亚洲精品| 亚洲一区二区三区免费观看| 麻豆免费看一区二区三区| 九九这里只有精品视频| 欧美精品视频www在线观看| 老司机在线视频二区| 5566中文字幕一区二区| 激情久久一区| 自拍视频一区二区| 色综合久久中文字幕综合网| 国产片在线观看| 国产欧美日韩中文字幕在线| 欧美xxx在线观看| 无码国产69精品久久久久网站| 福利一区福利二区微拍刺激| 免费福利在线视频| 国产精品丝袜久久久久久不卡| 99久久久国产精品美女| 亚洲天堂小视频| 无吗不卡中文字幕| 福利小视频在线观看| 成人性教育视频在线观看| 中文在线播放一区二区| 亚洲av网址在线| 欧美亚洲精品一区| 成人黄视频在线观看| 国产在线精品二区| 老司机午夜精品视频| 我要看黄色一级片| 亚洲国产一区二区三区在线观看| 免费成人直播| 日本精品免费视频| 97久久人人超碰| 中日精品一色哟哟| 久久久免费精品视频| 狠狠做深爱婷婷综合一区| 九九久久久久久| 婷婷成人综合网| 视频免费一区| 精品国产综合久久| 久久黄色级2电影| 亚洲第一精品在线观看| 日韩中文在线不卡| 三级精品视频| 超碰在线免费av| 色婷婷一区二区|