亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

詳解Docker 容器使用 cgroups 限制資源使用

2024-09-01 13:50:14
字體:
來源:轉載
供稿:網友

上一篇文章將到 Docker 容器使用 linux namespace 來隔離其運行環境,使得容器中的進程看起來就像愛一個獨立環境中運行一樣。但是,光有運行環境隔離還不夠,因為這些進程還是可以不受限制地使用系統資源,比如網絡、磁盤、CPU以及內存 等。為了讓容器中的進程更加可控,Docker 使用 Linux cgroups 來限制容器中的進程允許使用的系統資源。

1. 基礎知識:Linux control groups

1.1 概念

  Linux Cgroup 可???讓???您???為???系???統???中???所???運???行???任???務???(進???程???)的???用???戶???定???義???組???群???分???配???資???源??? — 比???如??? CPU 時???間???、???系???統???內???存???、???網???絡???帶???寬???或???者???這???些???資???源???的???組???合???。???您???可???以???監???控???您???配???置???的??? cgroup,拒???絕??? cgroup 訪???問???某???些???資???源???,甚???至???在???運???行???的???系???統???中???動???態???配???置???您???的??? cgroup。所以,可以將 controll groups 理解為 controller (system resource) (for) (process)groups,也就是是說它以一組進程為目標進行系統資源分配和控制。

它主要提供了如下功能:

  • Resource limitation: 限制資源使用,比如內存使用上限以及文件系統的緩存限制。
  • Prioritization: 優先級控制,比如:CPU利用和磁盤IO吞吐。
  • Accounting: 一些審計或一些統計,主要目的是為了計費。
  • Control: 掛起進程,恢復執行進程。

使???用??? cgroup,系???統???管???理???員???可???更???具???體???地???控???制???對???系???統???資???源???的???分???配???、???優???先???順???序???、???拒???絕???、???管???理???和???監???控???。???可???更???好???地???根???據???任???務???和???用???戶???分???配???硬???件???資???源???,提???高???總???體???效???率???。

在實踐中,系統管理員一般會利用CGroup做下面這些事(有點像為某個虛擬機分配資源似的):

  • 隔離一個進程集合(比如:nginx的所有進程),并限制他們所消費的資源,比如綁定CPU的核。
  • 為這組進程分配其足夠使用的內存
  • 為這組進程分配相應的網絡帶寬和磁盤存儲限制
  • 限制訪問某些設備(通過設置設備的白名單)

Linux 系統中,一切皆文件。Linux 也將 cgroups 實現成了文件系統,方便用戶使用。在我的 Ubuntu 14.04 測試環境中:

root@devstack:/home/sammy# mount -t cgroupcgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset)cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu)systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)root@devstack:/home/sammy# lssubsys -mcpuset /sys/fs/cgroup/cpusetcpu /sys/fs/cgroup/cpucpuacct /sys/fs/cgroup/cpuacctmemory /sys/fs/cgroup/memorydevices /sys/fs/cgroup/devicesfreezer /sys/fs/cgroup/freezerblkio /sys/fs/cgroup/blkioperf_event /sys/fs/cgroup/perf_eventhugetlb /sys/fs/cgroup/hugetlbroot@devstack:/home/sammy# ls /sys/fs/cgroup/ -ltotal 0drwxr-xr-x 3 root root 0 Sep 18 21:46 blkiodrwxr-xr-x 3 root root 0 Sep 18 21:46 cpudrwxr-xr-x 3 root root 0 Sep 18 21:46 cpuacctdrwxr-xr-x 3 root root 0 Sep 18 21:46 cpusetdrwxr-xr-x 3 root root 0 Sep 18 21:46 devicesdrwxr-xr-x 3 root root 0 Sep 18 21:46 freezerdrwxr-xr-x 3 root root 0 Sep 18 21:46 hugetlbdrwxr-xr-x 3 root root 0 Sep 18 21:46 memorydrwxr-xr-x 3 root root 0 Sep 18 21:46 perf_eventdrwxr-xr-x 3 root root 0 Sep 18 21:46 systemd

我們看到 /sys/fs/cgroup 目錄中有若干個子目錄,我們可以認為這些都是受 cgroups 控制的資源以及這些資源的信息。

  • blkio — 這???個???子???系???統???為???塊???設???備???設???定???輸???入???/輸???出???限???制???,比???如???物???理???設???備???(磁???盤???,固???態???硬???盤???,USB 等???等???)。
  • cpu — 這???個???子???系???統???使???用???調???度???程???序???提???供???對??? CPU 的??? cgroup 任???務???訪???問???。???
  • cpuacct — 這???個???子???系???統???自???動???生???成??? cgroup 中???任???務???所???使???用???的??? CPU 報???告???。???
  • cpuset — 這???個???子???系???統???為??? cgroup 中???的???任???務???分???配???獨???立??? CPU(在???多???核???系???統???)和???內???存???節???點???。???
  • devices — 這???個???子???系???統???可???允???許???或???者???拒???絕??? cgroup 中???的???任???務???訪???問???設???備???。???
  • freezer — 這???個???子???系???統???掛???起???或???者???恢???復??? cgroup 中???的???任???務???。???
  • memory — 這???個???子???系???統???設???定??? cgroup 中???任???務???使???用???的???內???存???限???制???,并???自???動???生???成?????內???存???資???源使用???報???告???。???
  • net_cls — 這???個???子???系???統???使???用???等???級???識???別???符???(classid)標???記???網???絡???數???據???包???,可???允???許??? Linux 流???量???控???制???程???序???(tc)識???別???從???具???體??? cgroup 中???生???成???的???數???據???包???。???
  • net_prio — 這個子系統用來設計網絡流量的優先級
  • hugetlb — 這個子系統主要針對于HugeTLB系統進行限制,這是一個大頁文件系統。

默認的話,在 Ubuntu 系統中,你可能看不到 net_cls 和 net_prio 目錄,它們需要你手工做 mount:

root@devstack:/sys/fs/cgroup# modprobe cls_cgrouproot@devstack:/sys/fs/cgroup# mkdir net_clsroot@devstack:/sys/fs/cgroup# mount -t cgroup -o net_cls none net_clsroot@devstack:/sys/fs/cgroup# modprobe netprio_cgrouproot@devstack:/sys/fs/cgroup# mkdir net_prioroot@devstack:/sys/fs/cgroup# mount -t cgroup -o net_prio none net_prioroot@devstack:/sys/fs/cgroup# ls net_prio/cgroup.clone_children cgroup.procs     net_prio.ifpriomap notify_on_release taskscgroup.event_control  cgroup.sane_behavior net_prio.prioidx  release_agentroot@devstack:/sys/fs/cgroup# ls net_cls/cgroup.clone_children cgroup.event_control cgroup.procs cgroup.sane_behavior net_cls.classid notify_on_release release_agent tasks

1.2 實驗

1.2.1 通過 cgroups 限制進程的 CPU

寫一段最簡單的 C 程序:

int main(void){  int i = 0;  for(;;) i++;  return 0;}

編譯,運行,發現它占用的 CPU 幾乎到了 100%:

top - 22:43:02 up  1:14,  3 users,  load average: 0.24, 0.06, 0.06  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 2304 root      20   0    4188    356    276 R 99.6  0.0   0:11.77 hello

接下來我們做如下操作:

root@devstack:/home/sammy/c# mkdir /sys/fs/cgroup/cpu/helloroot@devstack:/home/sammy/c# cd /sys/fs/cgroup/cpu/helloroot@devstack:/sys/fs/cgroup/cpu/hello# lscgroup.clone_children cgroup.procs    cpu.cfs_quota_us cpu.stat      taskscgroup.event_control  cpu.cfs_period_us cpu.shares    notify_on_releaseroot@devstack:/sys/fs/cgroup/cpu/hello# cat cpu.cfs_quota_us-1root@devstack:/sys/fs/cgroup/cpu/hello# echo 20000 > cpu.cfs_quota_usroot@devstack:/sys/fs/cgroup/cpu/hello# cat cpu.cfs_quota_us20000root@devstack:/sys/fs/cgroup/cpu/hello# echo 2428 > tasks

然后再來看看這個進程的 CPU 占用情況:

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 2428 root      20   0    4188    356    276 R 19.9  0.0   0:46.03 hello

它占用的 CPU 幾乎就是 20%,也就是我們預設的閾值。這說明我們通過上面的步驟,成功地將這個進程運行所占用的 CPU 資源限制在某個閾值之內了。

如果此時再啟動另一個 hello 進程并將其 id 加入 tasks 文件,則兩個進程會共享設定的 CPU 限制:

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 2428 root      20   0    4188    356    276 R 10.0  0.0 285:39.54 hello
12526 root      20   0    4188    356    276 R 10.0  0.0   0:25.09 hello

1.2.2 通過 cgroups 限制進程的 Memory

同樣地,我們針對它占用的內存做如下操作:

root@devstack:/sys/fs/cgroup/memory# mkdir helloroot@devstack:/sys/fs/cgroup/memory# cd hello/root@devstack:/sys/fs/cgroup/memory/hello# cat memory.limit_in_bytes18446744073709551615root@devstack:/sys/fs/cgroup/memory/hello# echo 64k > memory.limit_in_bytesroot@devstack:/sys/fs/cgroup/memory/hello# echo 2428 > tasksroot@devstack:/sys/fs/cgroup/memory/hello#

上面的步驟會把進程 2428 說占用的內存閾值設置為 64K。超過的話,它會被殺掉。

1.2.3 限制進程的 I/O

運行命令:

sudo dd if=/dev/sda1 of=/dev/null

通過 iotop 命令看 IO (此時磁盤在快速轉動),此時其寫速度為 242M/s:

 TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 2555 be/4 root      242.60 M/s    0.00 B/s  0.00 % 61.66 % dd if=/dev/sda1 of=/dev/null

接著做下面的操作:

root@devstack:/home/sammy# mkdir /sys/fs/cgroup/blkio/ioroot@devstack:/home/sammy# cd /sys/fs/cgroup/blkio/ioroot@devstack:/sys/fs/cgroup/blkio/io# ls -l /dev/sda1brw-rw---- 1 root disk 8, 1 Sep 18 21:46 /dev/sda1root@devstack:/sys/fs/cgroup/blkio/io# echo '8:0 1048576' > /sys/fs/cgroup/blkio/io/blkio.throttle.read_bps_deviceroot@devstack:/sys/fs/cgroup/blkio/io# echo 2725 > /sys/fs/cgroup/blkio/io/tasks

結果,這個進程的IO 速度就被限制在 1Mb/s 之內了:

 TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 2555 be/4 root      990.44 K/s    0.00 B/s  0.00 % 96.29 % dd if=/dev/sda1 of=/dev/null

1.3 術語

cgroups 的術語包括:

  • 任務(Tasks):就是系統的一個進程。
  • 控制組(Control Group):一組按照某種標準劃分的進程,比如官方文檔中的Professor和Student,或是WWW和System之類的,其表示了某進程組。Cgroups中的資源控制都是以控制組為單位實現。一個進程可以加入到某個控制組。而資源的限制是定義在這個組上,就像上面示例中我用的 hello 一樣。簡單點說,cgroup的呈現就是一個目錄帶一系列的可配置文件。
  • 層級(Hierarchy):控制組可以組織成hierarchical的形式,既一顆控制組的樹(目錄結構)??刂平M樹上的子節點繼承父結點的屬性。簡單點說,hierarchy就是在一個或多個子系統上的cgroups目錄樹。
  • 子系統(Subsystem):一個子系統就是一個資源控制器,比如CPU子系統就是控制CPU時間分配的一個控制器。子系統必須附加到一個層級上才能起作用,一個子系統附加到某個層級以后,這個層級上的所有控制族群都受到這個子系統的控制。Cgroup的子系統可以有很多,也在不斷增加中。

2. Docker 對 cgroups 的使用

2.1 默認情況

默認情況下,Docker 啟動一個容器后,會在 /sys/fs/cgroup 目錄下的各個資源目錄下生成以容器 ID 為名字的目錄(group),比如:

/sys/fs/cgroup/cpu/docker/03dd196f415276375f754d51ce29b418b170bd92d88c5e420d6901c32f93dc14

此時 cpu.cfs_quota_us 的內容為 -1,表示默認情況下并沒有限制容器的 CPU 使用。在容器被 stopped 后,該目錄被刪除。

運行命令 docker run -d --name web41 --cpu-quota 25000 --cpu-period 100 --cpu-shares 30 training/webapp python app.py 啟動一個新的容器,結果:

root@devstack:/sys/fs/cgroup/cpu/docker/06bd180cd340f8288c18e8f0e01ade66d066058dd053ef46161eb682ab69ec24# cat cpu.cfs_quota_us25000root@devstack:/sys/fs/cgroup/cpu/docker/06bd180cd340f8288c18e8f0e01ade66d066058dd053ef46161eb682ab69ec24# cat tasks3704root@devstack:/sys/fs/cgroup/cpu/docker/06bd180cd340f8288c18e8f0e01ade66d066058dd053ef46161eb682ab69ec24# cat cpu.cfs_period_us2000

Docker 會將容器中的進程的 ID 加入到各個資源對應的 tasks 文件中。表示 Docker 也是以上面的機制來使用 cgroups 對容器的 CPU 使用進行限制。

相似地,可以通過 docker run 中 mem 相關的參數對容器的內存使用進行限制:

   --cpuset-mems string     MEMs in which to allow execution (0-3, 0,1)   --kernel-memory string    Kernel memory limit -m, --memory string        Memory limit   --memory-reservation string  Memory soft limit   --memory-swap string     Swap limit equal to memory plus swap: '-1' to enable unlimited swap   --memory-swappiness int    Tune container memory swappiness (0 to 100) (default -1)

比如  docker run -d --name web42 --blkio-weight 100 --memory 10M --cpu-quota 25000 --cpu-period 2000 --cpu-shares 30 training/webapp python app.py:

root@devstack:/sys/fs/cgroup/memory/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410# cat memory.limit_in_bytes10485760 root@devstack:/sys/fs/cgroup/blkio/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410# cat blkio.weight 100

目前 docker 已經幾乎支持了所有的 cgroups 資源,可以限制容器對包括 network,device,cpu 和 memory 在內的資源的使用,比如:

root@devstack:/sys/fs/cgroup# find -iname ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./net_prio/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./net_cls/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./systemd/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./hugetlb/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./perf_event/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./blkio/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./freezer/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./devices/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./memory/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./cpuacct/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./cpu/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410./cpuset/docker/ec8d850ebbabaf24df572cb5acd89a6e7a953fe5aa5d3c6a69c4532f92b57410

 2.2 net_cls

   net_cls 和 tc 一起使用可用于限制進程發出的網絡包所使用的網絡帶寬。當使用 cgroups network controll net_cls 后,指定進程發出的所有網絡包都會被加一個 tag,然后就可以使用其他工具比如 iptables 或者 traffic controller (TC)來根據網絡包上的 tag 進行流量控制。關于 TC 的文檔,網上很多,這里不再贅述,只是用一個簡單的例子來加以說明。

  關于 classid,它的格式是 0xAAAABBBB,其中,AAAA 是十六進制的主ID(major number),BBBB 是十六進制的次ID(minor number)。因此,0X10001 表示 10:1,而 0x00010001 表示 1:!。

  (1)首先在host 的網卡 eth0 上做如下設置:

tc qdisc del dev eth0 root   #刪除已有的規則tc qdisc add dev eth0 root handle 10: htb default 12       tc class add dev eth0 parent 10: classid 10:1 htb rate 1500kbit ceil 1500kbit burst 10k     #限速tc filter add dev eth0 protocol ip parent 10:0 prio 1 u32 match ip protocol 1 0xff flowid 10:1 #只處理 ping 參數的網絡包

其結果是:

  • 在網卡 eth0 上創建了一個 HTB root 隊列,hangle 10: 表示隊列句柄也就是major number 為 10
  • 創建一個分類 10:1,限制它的出發網絡帶寬為 80 kbit (千比特每秒)
  • 創建一個分類器,將 eth0 上 IP IMCP 協議 的 major ID 為 10 的 prio 為 1 的網絡流量都分類到 10:1 類別

(2)啟動容器

容器啟動后,其 init 進程在host 上的 PID 就被加入到 tasks 文件中了:

root@devstack:/sys/fs/cgroup/net_cls/docker/ff8d9715b7e11a5a69446ff1e3fde3770078e32a7d8f7c1cb35d51c75768fe33# ps -ef | grep 10047231072  10047 10013 1 07:08 ?    00:00:00 python app.py

設置 net_cls classid:

echo 0x100001 > net_cls.classid

再在容器啟動一個 ping 進程,其 ID 也被加入到 tasks 文件中了。

(3)查看tc 情況: tc -s -d class show dev eth0

Every 2.0s: tc -s class ls dev eth0 Wed Sep 21 04:07:56 2016class htb 10:1 root prio 0 rate 1500Kbit ceil 1500Kbit burst 10Kb cburst 1599b Sent 17836 bytes 182 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 182 borrowed: 0 giants: 0 tokens: 845161 ctokens: 125161

我們可以看到 tc 已經在處理 ping 進程產生的數據包了。再來看一下 net_cls 和 ts 合作的限速效果:

10488 bytes from 192.168.1.1: icmp_seq=35 ttl=63 time=12.7 ms
10488 bytes from 192.168.1.1: icmp_seq=36 ttl=63 time=15.2 ms
10488 bytes from 192.168.1.1: icmp_seq=37 ttl=63 time=4805 ms
10488 bytes from 192.168.1.1: icmp_seq=38 ttl=63 time=9543 ms

其中:

后兩條說使用的 tc class 規則是 tc class add dev eth0 parent 10: classid 10:1 htb rate 1500kbit ceil 15kbit burst 10k

前兩條所使用的 tc class 規則是 tc class add dev eth0 parent 10: classid 10:1 htb rate 1500kbit ceil 10Mbit burst 10k

3. Docker run 命令中 cgroups 相關命令

block IO:   --blkio-weight value     Block IO (relative weight), between 10 and 1000   --blkio-weight-device value  Block IO weight (relative device weight) (default [])   --cgroup-parent string    Optional parent cgroup for the containerCPU:   --cpu-percent int       CPU percent (Windows only)   --cpu-period int       Limit CPU CFS (Completely Fair Scheduler) period   --cpu-quota int        Limit CPU CFS (Completely Fair Scheduler) quota -c, --cpu-shares int       CPU shares (relative weight)   --cpuset-cpus string     CPUs in which to allow execution (0-3, 0,1)   --cpuset-mems string     MEMs in which to allow execution (0-3, 0,1)Device:     --device value        Add a host device to the container (default [])   --device-read-bps value    Limit read rate (bytes per second) from a device (default [])   --device-read-iops value   Limit read rate (IO per second) from a device (default [])   --device-write-bps value   Limit write rate (bytes per second) to a device (default [])   --device-write-iops value   Limit write rate (IO per second) to a device (default [])Memory:      --kernel-memory string    Kernel memory limit -m, --memory string        Memory limit   --memory-reservation string  Memory soft limit   --memory-swap string     Swap limit equal to memory plus swap: '-1' to enable unlimited swap   --memory-swappiness int    Tune container memory swappiness (0 to 100) (default -1)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日本精品| 久久视频这里只有精品| 精品国产成人av| 精品福利在线视频| 在线电影欧美日韩一区二区私密| 亚洲国产一区二区三区在线观看| 国产成人鲁鲁免费视频a| 国产精品丝袜久久久久久高清| 国产女同一区二区| 日韩在线观看免费av| 亚洲一区第一页| 久久综合亚洲社区| 亲爱的老师9免费观看全集电视剧| 欧美大全免费观看电视剧大泉洋| 亚洲午夜小视频| 欧美激情第一页xxx| 日韩女优在线播放| 欧美精品电影免费在线观看| 欧美日韩亚洲视频一区| 奇门遁甲1982国语版免费观看高清| 国产精品久久久久久久app| 欧美中文在线观看| 国外成人在线直播| 亚洲伊人一本大道中文字幕| 久久在线观看视频| 国产精品xxxxx| 日韩不卡在线观看| 亚洲国产天堂久久综合| 成人a级免费视频| 两个人的视频www国产精品| 日韩精品999| 在线成人一区二区| 亚洲精品久久7777777| 精品国产一区二区三区久久| 色先锋资源久久综合5566| 国产精品夜间视频香蕉| 欧美怡春院一区二区三区| 久久艹在线视频| 欧美影院久久久| 亚洲成人黄色在线观看| 日韩免费电影在线观看| 国产精品一区二区三区在线播放| 国产欧美精品一区二区三区-老狼| 亚洲一区二区三区在线免费观看| 最新国产精品拍自在线播放| 亚洲人成五月天| 日韩久久免费电影| 国产精品99久久久久久白浆小说| 亚洲人成欧美中文字幕| 欧美日韩国产成人| 欧美成人精品在线视频| 国产日本欧美视频| 亚洲va久久久噜噜噜| 色婷婷av一区二区三区久久| 日韩av在线高清| 亚洲免费电影一区| 中文字幕久热精品视频在线| 91夜夜未满十八勿入爽爽影院| 日韩欧美国产高清91| 欧美日韩999| 欧美二区乱c黑人| 欧美一级淫片aaaaaaa视频| 亚洲已满18点击进入在线看片| 成人国产精品免费视频| 国产精品黄页免费高清在线观看| 国产日产久久高清欧美一区| 欧美片一区二区三区| 亚洲国产精品久久| 热99精品里视频精品| 欧美在线观看视频| 欧美交受高潮1| 久久人人爽人人爽爽久久| 国产在线观看精品| 亚洲乱码国产乱码精品精天堂| 亚洲精品美女久久| 亚洲国产中文字幕久久网| 91亚洲人电影| 久久精品小视频| 国产婷婷色综合av蜜臀av| 中文字幕免费国产精品| xvideos成人免费中文版| 欧美午夜www高清视频| 国产精品网站视频| 日韩美女免费线视频| 精品国偷自产在线视频99| 亚洲成人精品久久久| 亚洲色图色老头| 国产亚洲欧洲黄色| 国产在线播放不卡| 久久久国产视频| 麻豆国产va免费精品高清在线| 亚洲美女av电影| 中文字幕亚洲字幕| 97国产精品久久| 欧美午夜美女看片| 成人在线一区二区| 国产精品国语对白| 久久精品国产电影| 日韩在线视频国产| 91av视频在线观看| 九九热精品在线| 国产视频久久网| 亚洲精品日韩久久久| 欧美一级大片视频| 日韩欧美在线看| 久久久99免费视频| 国产在线一区二区三区| 国产精品成熟老女人| 韩剧1988免费观看全集| 黑人巨大精品欧美一区免费视频| 日韩在线观看成人| 久热爱精品视频线路一| 欧美午夜精品在线| 久久精品国产清自在天天线| 91精品视频大全| 国产成人精品久久| 国产美女久久精品香蕉69| 国产一区视频在线播放| 正在播放欧美一区| 18一19gay欧美视频网站| 亚洲性xxxx| 精品美女国产在线| 懂色av影视一区二区三区| 国产91精品久久久久久| 国产精品视频导航| 亚州成人av在线| 91精品久久久久久久久久久久久久| 日韩精品日韩在线观看| 57pao成人永久免费视频| 欧美日本中文字幕| 亚洲精品美女在线观看| 国产69精品久久久久久| 777精品视频| 成人免费视频网| 精品日本美女福利在线观看| 国产精品成人va在线观看| 91色琪琪电影亚洲精品久久| 国产精品第2页| 国产亚洲人成a一在线v站| 欧美激情乱人伦一区| 亚洲男人av在线| 欧美午夜电影在线| 2019日本中文字幕| 九色91av视频| 伊人久久大香线蕉av一区二区| 91经典在线视频| 国模极品一区二区三区| 日韩在线观看精品| 成人网在线免费看| 欧美日韩精品在线视频| 亚洲经典中文字幕| 成人中心免费视频| 久久精品99久久久久久久久| 日本成熟性欧美| 国产精品久久久久久婷婷天堂| 国产视频福利一区| 在线免费看av不卡| 国产精品国语对白| 日韩欧美在线国产| 欧美最猛性xxxxx亚洲精品| 国产精品久久久久久久久久ktv| 日韩人在线观看| 国产精品一区二区3区| 中文国产成人精品|