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

OS近距離:Linux的時間,可能并不像你想的那么可靠!

系統(tǒng) Linux
計算機對時間的控制比人的感覺更加準確一些,但我們依然難以做到絕對精確的調(diào)度,這涉及到了終極的哲學(xué)問題。了解問題產(chǎn)生的原因,比問題本身的現(xiàn)象更加有難度,下面我們就來聊一下這個問題。

如果你想周期性的做一些事情,那么必然,會與時間產(chǎn)生聯(lián)系。比如,每天早晨7點吃早餐,每天晚上10點進入夢鄉(xiāng)。當(dāng)然,如果你有伴侶的話,晚上這個時間可能不會這么固定。

計算機對時間的控制比人的感覺更加準確一些,但我們依然難以做到絕對精確的調(diào)度,這涉及到了終極的哲學(xué)問題。了解問題產(chǎn)生的原因,比問題本身的現(xiàn)象更加有難度,下面我們就來聊一下這個問題。

假設(shè),我有一個任務(wù),要求每60秒執(zhí)行一次,你要如何設(shè)計?

很多Javaer會自然的想到Timer和ScheduledExecutorService,不過,這也只能說明你了解一些API而已,在絕對精度的調(diào)度面前,它們都不能滿足需求。

一個例子

下面這段代碼,將開啟一個5秒間隔的執(zhí)行器,然后記錄實際的間隔時間和期望的偏移量。

public class Main {
private static ScheduledExecutorService schedule = Executors.newScheduledThreadPool(1);
private static LinkedBlockingDeque<Long> q = new LinkedBlockingDeque<>();

public static void main(String[] args) {
final long rateNano = TimeUnit.SECONDS.toNanos(5);
final Random r = new Random();
final AtomicLong offset = new AtomicLong(0);
final AtomicLong max = new AtomicLong(0);
schedule.scheduleAtFixedRate(()->{
try {
long eventTime = System.nanoTime();
long nanoOffset = q.size() == 0 ? rateNano : (eventTime - q.pollLast());
offset.addAndGet(nanoOffset);
offset.addAndGet(-rateNano);
max.set(Math.max(max.get(), Math.abs(offset.get())));
System.out.println(TimeUnit.NANOSECONDS.toSeconds(eventTime)+ "(s) #"
+ nanoOffset + "(us),"
+ offset.get() + "(us),"
+ max.get() + "(us)"
);
q.offer(eventTime);
Thread.sleep(r.nextInt(500));
} catch (InterruptedException e) {
e.printStackTrace();
}
}, 0, rateNano, TimeUnit.NANOSECONDS);
}
}

我們把時間細分一下,然后打印每個間隔之間的秒數(shù)和納秒數(shù),你將發(fā)現(xiàn)一些不同尋常的東西。

978048(s) #4996295958(us),-688459(us),57185541(us)
978053(s) #5002982917(us),2294458(us),57185541(us)
978058(s) #5000489208(us),2783666(us),57185541(us)
978063(s) #4997937167(us),720833(us),57185541(us)
978068(s) #5002287042(us),3007875(us),57185541(us)
978073(s) #4999411375(us),2419250(us),57185541(us)

可以看到,秒數(shù)是以5秒5秒的速度增長,但實際的執(zhí)行時間,如果放大到納秒,它表現(xiàn)出很沒有規(guī)律的分布。

為了得到較為可信的數(shù)據(jù),實際上,我把這個任務(wù)跑了1天,到最后,整個偏移量最大達了57ms。

先不談Java線程的調(diào)度,在操作系統(tǒng)上有誤差。就拿操作系統(tǒng)本身來說,由于有虛擬內(nèi)存、線程池、各種驅(qū)動的存在,我們常用的Windows和Linux,都不是實時操作系統(tǒng)。

其主要等待方法,就是在DelayedWorkQueue的take方法里,使用了ConditionObject的awaitNanos方法。

再往下找的話,那就是LockSupport的parkNanos方法。繼續(xù)向下跟,那就是unsafe,本質(zhì)上是一個native函數(shù)。

public native void park(boolean isAbsolute, long time);

第一個參數(shù)是是否是絕對時間,第二個參數(shù)是等待時間值。如果isAbsolute是true則會實現(xiàn)毫秒定時。如果isAbsolute是false則會實現(xiàn)納秒定時。納秒,可以說是精度很高了。

在jdk源碼中,我們找到了具體的native函數(shù)。就拿linux來說,文件就躺在./os/posix/os_posix.cpp,最終就是調(diào)用pthread_cond_timedwait。

所有的編程都是面向glibc編程,沒跑了。

pthread_cond_timedwait

一般來說,平臺會提供sleep、pthread_cond_wait、pthread_cond_timedwait等函數(shù)供用戶使用,實現(xiàn)線程的等待和喚醒。

其中pthread_cond_timedwait就是使用最廣泛的那一枚。通過使用perf記錄堆棧調(diào)用,我們可以看到大體的函數(shù)調(diào)用棧。

javac Main
java Main
ps -ef| grep java
perf record -g -a -p 2019961
perf report

對于了解Linux內(nèi)部運行原理的同學(xué)來說,通過上面的函數(shù)調(diào)用,就可以看出這里主要是使用了Linux的futex機制,而futex的兩個主要方法就是futex_wait和futex_wake。

我們先不管這些亂七八糟的同步術(shù)語和函數(shù)的版本差異,在kernel/futex/waitwake.c (Linux-5.16.12)中,我們能夠看到相關(guān)的函數(shù)調(diào)用。

所謂的等待計數(shù)器,就是在下面這段代碼中設(shè)置的。

struct hrtimer_sleeper *
futex_setup_timer(ktime_t *time, struct hrtimer_sleeper *timeout,
int flags, u64 range_ns)
{
if (!time)
return NULL;

hrtimer_init_sleeper_on_stack(timeout, (flags & FLAGS_CLOCKRT) ?
CLOCK_REALTIME : CLOCK_MONOTONIC,
HRTIMER_MODE_ABS);
/*
* If range_ns is 0, calling hrtimer_set_expires_range_ns() is
* effectively the same as calling hrtimer_set_expires().
*/
hrtimer_set_expires_range_ns(&timeout->timer, *time, range_ns);

return timeout;
}

時間輪

所以問題終于聚焦到我們本文的主題上了。

hrtimers,是Linux下一個高分辨率的定時器。hrtimer結(jié)構(gòu)(也就是上面代碼的&timeout->timer),其中有一個function參數(shù),會接受一個回調(diào)函數(shù),在定時器觸發(fā)時,將會被調(diào)用。

在聊高分辨率的定時器之前,得首先聊一下低分辨率的定時器。在早期的Linux版本中,定時器是基于CPU的HZ來實現(xiàn)的,也就是tick周期。

很明顯的,這個tick的周期的最小值,就是1/CPU主頻。不過現(xiàn)在的CPU主頻都是GHz來算了,所以精度相對來說還不錯,能達到納秒級別。

1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz

一個jiffy = 1/HZ

低分辨率的定時器,還有一個非常著名的時間輪算法,將定時任務(wù)散列在長度有限的環(huán)形數(shù)組中。然后,在此基礎(chǔ)上再參考日常生活中水表的方式,通過低刻度走得快的輪子帶動高一級刻度輪子走動的方法,像齒輪一樣帶動更高級別的齒輪,這樣就可以避免輪子過大的問題。

其實這個也很好理解。假如我們把1天的時間,每一秒都刻在鐘表上,需要86400個刻度。但其實,我們的鐘表只需要60個刻度就能完成一天的循環(huán)。

Linux的定時器,將時間輪分為了9層,可以說精度很高了。

#define WHEEL_SIZE (LVL_SIZE * LVL_DEPTH)

/* Level depth */
#if HZ > 100
# define LVL_DEPTH 9
# else
# define LVL_DEPTH 8
#endif

這些細節(jié)很多,我們抽另外的文章講解,別忘了關(guān)注xjjdog。

hrtimer

相比較低精度(也不算低了)的時間輪設(shè)計,hrtimer又做了哪些,才稱之為高精度呢?

組織hrtimer的,其實是一棵紅黑樹(timerqueue_node),這是在比較了hash、跳表、堆等數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上的最終選擇。高精度的代碼幾乎全是重寫的,大多數(shù)能夠?qū)崿F(xiàn)O(1)時間復(fù)雜度的操作。

高精度定時器的主要任務(wù),不是實現(xiàn)時間片上的精度,而是在執(zhí)行增刪改查的時候,能夠提供穩(wěn)定、快速的功能。即使是排序,也應(yīng)該盡量的減少時間耗費,因為調(diào)度代碼執(zhí)行時間的不穩(wěn)定,同樣會影響整個調(diào)度系統(tǒng)的穩(wěn)定性。

timerqueue_head結(jié)構(gòu)在紅黑樹的基礎(chǔ)上,增加了一個next字段,用于保存樹中最先到期的定時器節(jié)點,算是對紅黑樹小小的改造。這些改造在效率上都是立竿見影的,效果就像B+ Tree對B Tree的改造一樣。

從下面這些結(jié)構(gòu)體,可以大體看出紅黑樹的組織方式。

struct timerqueue_node {
struct rb_node node;
ktime_t expires;
};

struct timerqueue_head {
struct rb_root_cached rb_root;
};

struct rb_root_cached {
struct rb_root rb_root;
struct rb_node *rb_leftmost;
};

struct rb_node {
unsigned long __rb_parent_color;
struct rb_node *rb_right;
struct rb_node *rb_left;
} __attribute__((aligned(sizeof(long))));

我們再來看一下hrtimer的結(jié)構(gòu)體,發(fā)現(xiàn)里面有一個_softexpires,同時,它的成員變量node里,也有一個叫做expires的變量。

struct hrtimer {
struct timerqueue_node node;
ktime_t _softexpires;
enum hrtimer_restart (*function)(struct hrtimer *);
struct hrtimer_clock_base *base;
u8 state;
u8 is_rel;
u8 is_soft;
u8 is_hard;
};

這是hrtimer為了增加調(diào)度的效率所做的一些妥協(xié)。它表示,我們的任務(wù),可以在_softexpires和expires之間的任何時刻到期。expires被稱作硬到期時間,是任務(wù)到期的最后時間。有了這樣的設(shè)計,就可以避免進程被hrtimer頻繁的喚醒,減少contextswitch。

我們可以從perf得到的hrtimer_set_expires_range_ns函數(shù)中窺探到這兩個時間點的設(shè)定。這本質(zhì)上也是一種對時間齊功能。

static inline void hrtimer_set_expires_range_ns(struct hrtimer *timer, ktime_t time, u64 delta)
{
timer->_softexpires = time;
timer->node.expires = ktime_add_safe(time, ns_to_ktime(delta));
}

delta的設(shè)定非常有意思,在不同的硬件設(shè)備上,它的值都不同,表示最小的調(diào)度精度。這也是我們最上面的Java程序,在執(zhí)行的時候,引起時間抖動的根本原因。

End

聊到這里,我想你應(yīng)該能夠想到,世界上根本就沒有準確的調(diào)度。只不過隨著主頻的增加,我們可以將精度控制在一定范圍內(nèi)。

且不說時間本身準不準,僅僅是這時間片的細分,就使得目前的PC機,在微觀世界上的時間誤差將變的無比巨大,進行高頻率的的精度調(diào)度幾乎是不可能完成的事。

世界上最準的鐘表,每150億年才會減少一秒。但1秒也是時間,我們依然能夠用語言表達出來。糾結(jié)準實時性是一個永遠沒有盡頭的答案,除非我們能夠操縱原子。再加上任務(wù)調(diào)度代碼本身耗時的不確定性,目前的調(diào)度器維持在納秒精度,已經(jīng)算是一個奇跡。

世界本身就是人粗略的觀測,何況是人所造出的機器呢。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

責(zé)任編輯:武曉燕 來源: 小姐姐味道
相關(guān)推薦

2022-02-28 19:32:27

I/O磁盤

2020-06-27 17:33:42

云計算技術(shù)安全

2023-07-28 14:41:07

技術(shù)方案

2025-06-30 00:05:00

2023-11-27 17:03:45

syncGo

2015-01-19 09:13:39

CloudStack云計算架構(gòu)虛擬機管理

2024-11-29 09:00:00

云計算應(yīng)用

2025-04-03 07:00:00

網(wǎng)絡(luò)安全物聯(lián)網(wǎng)安全智能安全

2010-09-02 09:32:26

私有云

2018-12-18 09:14:13

區(qū)塊鏈開源比特幣

2010-10-07 20:57:37

2013-04-23 09:15:59

Windows 8.1

2011-03-02 15:10:43

國產(chǎn)數(shù)據(jù)庫

2015-06-04 16:35:00

2021-08-15 19:00:14

算法floydDijkstra

2011-05-06 15:28:00

SMB數(shù)據(jù)中心

2023-11-29 11:28:21

智能視覺

2009-09-29 11:23:53

互聯(lián)網(wǎng)

2013-07-16 14:36:43

天河2號超級計算機國防科技大學(xué)

2020-09-30 10:40:56

人工智能AI
點贊
收藏

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

久久久久亚洲av成人毛片韩| 久久96国产精品久久99软件| 国产三级aaa| 成人在线日韩| 欧美日韩另类字幕中文| 玛丽玛丽电影原版免费观看1977| 中文字幕永久在线| 亚洲综合婷婷| 亚洲男女自偷自拍图片另类| 91视频这里只有精品| 欧美aaaaaaa| 国产日韩精品一区| y111111国产精品久久婷婷| 国产又大又黄视频| 一区二区三区四区在线观看国产日韩 | 久久国产日韩| 久久久精品国产一区二区| jjzzjjzz欧美69巨大| 深夜视频一区二区| 亚洲国产一区视频| 中文字幕日韩精品久久| 视频一区二区三区在线看免费看| 久久91精品久久久久久秒播| 欧美孕妇毛茸茸xxxx| 放荡的美妇在线播放| 久久成人av| 亚洲高清视频在线| 91久久精品美女高潮| 日本在线播放视频| 欧美一区高清| 日韩小视频网址| 国产视频1区2区3区| 九色porny丨国产首页在线| 亚洲欧美偷拍三级| 天堂精品视频| 欧美孕妇性xxxⅹ精品hd| 国产91精品精华液一区二区三区 | 日本大胆欧美| 亚洲精品一区在线观看| 九九热视频免费| 草莓福利社区在线| 国产精品你懂的在线欣赏| 久久99精品久久久久久三级 | 久久久久久久精| 国产日韩在线一区二区三区| 精品区在线观看| 久久www免费人成看片高清| 国产精品福利网站| 亚洲国产精品无码久久久| 午夜亚洲伦理| 91国内在线视频| 日韩女优在线观看| 亚洲国产精品一区制服丝袜| 久久久欧美精品| 日本学生初尝黑人巨免费视频| 综合国产精品| 欧美高清视频在线播放| 国产一级片久久| 免费成人蒂法| 亚洲精品久久久久| 影音先锋黄色资源| 日韩深夜影院| 欧美蜜桃一区二区三区| 手机在线看福利| avav成人| 91精品欧美综合在线观看最新| 亚洲涩涩在线观看| 97人人爽人人澡人人精品| 一区二区高清在线| 日韩精品资源| 98在线视频| 自拍偷在线精品自拍偷无码专区 | 亚洲精品乱码久久| 综合亚洲色图| 亚洲一二在线观看| 潘金莲一级淫片aaaaa| 国产一区二区高清在线| 欧美岛国在线观看| 女同毛片一区二区三区| 精品国产一区二区三区噜噜噜 | 精品视频高清无人区区二区三区| 日韩私人影院| 国产精品久久久久天堂| 国产欧美精品aaaaaa片| 爱啪视频在线观看视频免费| 一本久道中文字幕精品亚洲嫩| 午夜免费福利在线| 麻豆视频在线看| 色一情一伦一子一伦一区| 九色porny自拍| 99久久免费精品国产72精品九九| 日韩精品极品在线观看| 我想看黄色大片| 你懂的国产精品| 欧美一区二区影院| 91麻豆成人精品国产| 成人精品免费网站| 日产精品一线二线三线芒果| av软件在线观看| 国产精品久久久久久久久免费桃花| 一区二区三区一级片| av资源在线播放| 精品视频一区二区不卡| 国产69视频在线观看| 成人av国产| 久久久噜噜噜久噜久久| 一级特黄色大片| 91一区一区三区| 穿情趣内衣被c到高潮视频| 僵尸再翻生在线观看免费国语| 欧美日产国产精品| 熟女俱乐部一区二区视频在线| 久久久久亚洲| 国产精品成人aaaaa网站| 亚洲av无码国产精品永久一区| 久久精品一区二区三区不卡| 男人c女人视频| 福利精品一区| 日韩精品欧美国产精品忘忧草| 国产又粗又长又黄的视频| 久久国产精品久久w女人spa| 古典武侠综合av第一页| 免费高清在线观看| 色八戒一区二区三区| 亚洲第一黄色网址| 亚洲欧美综合国产精品一区| 国产欧美精品一区二区| 美女欧美视频在线观看免费 | 色综合综合色| 97免费视频在线| 性一交一乱一色一视频麻豆| 中文字幕日韩av资源站| wwwwww.色| 精品国产一区二区三区久久久樱花| 91成人在线观看国产| 亚洲av无码一区二区三区dv| 综合亚洲深深色噜噜狠狠网站| 天天爽夜夜爽一区二区三区| 国产成人手机高清在线观看网站| 综合网日日天干夜夜久久| 亚洲黄色小说图片| 日本美女视频一区二区| 欧美xxxx黑人又粗又长密月| 黄在线观看免费网站ktv| 精品国产乱码久久| 麻豆91精品91久久久| 国产美女视频91| 欧美美女黄色网| 国产一区二区三区免费在线| 久久视频精品在线| 99国产成人精品| 国产精品不卡一区| 青青草久久伊人| 综合国产精品| 国产精品免费视频一区二区| 国产精品偷拍| 精品亚洲一区二区三区在线播放 | 日本成人在线不卡视频| 日韩欧美一区二区三区四区| abab456成人免费网址| 中文字幕亚洲欧美日韩高清| 国产精品嫩草影院桃色| 亚洲人成在线播放网站岛国| 亚洲av无一区二区三区久久| 国产精品av一区二区| 国模精品视频一区二区| 欧美一区二区三区激情| 欧美日韩一区二区精品| 天天躁日日躁aaaa视频| 欧美三级第一页| 国产精品免费一区二区三区观看| 97超碰免费在线| 亚洲色图日韩av| 日韩欧美大片在线观看| 久久亚洲免费视频| 国产wwwxx| 欧美国产免费| 久久99精品久久久水蜜桃| 亚洲色成人www永久在线观看| 亚洲精品一区在线| 97热精品视频官网| 激情小说 在线视频| 欧美日精品一区视频| 91久久国产综合| jiyouzz国产精品久久| 北条麻妃av高潮尖叫在线观看| 久久一本综合| 国产伦精品一区二区三区高清| 欧美91看片特黄aaaa| 色老头一区二区三区在线观看| www.五月婷| 色综合色综合色综合色综合色综合| 一级片久久久久| 国产高清在线观看免费不卡| 18禁男女爽爽爽午夜网站免费 | 国产一区二区精品久久91| 成人免费毛片在线观看| 日本a口亚洲| 久久99国产精品| 农村妇女一区二区| 性欧美xxxx交| 国产写真视频在线观看| 亚洲国产成人av在线| 中文字幕人妻互换av久久| 亚洲国产视频一区| 国产三级在线观看完整版| www.亚洲色图| 欧美日韩精品区别| 亚洲综合电影一区二区三区| 免费观看国产视频在线| 欧美码中文字幕在线| 国产日韩一区二区| 国产欧美日韩电影| 国产精品久久久久久久久久久久久| 青春草在线视频| 精品国模在线视频| 男人久久精品| 亚洲精品二三区| 亚洲国产www| 91精品婷婷国产综合久久竹菊| 波多野结衣高清在线| 五月激情综合婷婷| 国产一级做a爰片在线看免费| 国产精品白丝在线| 免费看污片的网站| 26uuu欧美| 欲求不满的岳中文字幕| 粉嫩aⅴ一区二区三区四区 | 国产中文字幕二区| 国产精品v日韩精品v欧美精品网站| 97超视频免费观看| a黄色片在线观看| 日韩中文视频免费在线观看| 国产午夜精品一区理论片| 欧美三级午夜理伦三级中视频| 日韩黄色a级片| 亚洲一区二区三区中文字幕| 国产日韩欧美在线观看视频| 日本一区二区三区视频视频| 人人妻人人藻人人爽欧美一区| 99国产欧美另类久久久精品 | 国产一区二区三区成人| 欧美午夜电影在线播放| 国产精品xxxxxx| 欧洲人成人精品| 国产精品sm调教免费专区| 色婷婷精品久久二区二区蜜臀av | 中文在线免费视频| 欧美亚洲视频在线看网址| 亚洲精品88| 国产91色在线|免| 欧美被日视频| 俺去啦;欧美日韩| 久久久久久久久免费视频| 久久精品久久精品亚洲人| 美女隐私在线观看| 不卡av日日日| 国产精品69xx| 欧美在线一级视频| 欧美精品高清| 成人久久久久久| 成人h动漫免费观看网站| 国产精品一区二区三区免费观看| 欧美成人午夜77777| 欧美婷婷久久| 色999国产精品| 麻豆av一区二区三区久久| 亚洲福利网站| 一区二区视频在线播放| 欧美日本一区| 国产91在线视频观看| 日韩av中文字幕一区二区| 欧美成人三级在线播放| 国产精品自在在线| 91视频啊啊啊| 国产精品美女视频| 国产在线成人精品午夜| 色久综合一二码| 国产男男gay体育生白袜| 亚洲电影免费观看高清| 成年人在线看| 亚洲全黄一级网站| 久cao在线| 国产91|九色| 亚洲精品tv| 狠狠综合久久av| 99精品视频在线观看免费播放| 日本一区二区三区精品视频| 97国产精品| 鲁一鲁一鲁一鲁一澡| 久久99在线观看| 国产高清自拍视频| 亚洲精品日韩一| 欧美一区二区三区不卡视频| 精品国产乱码久久久久久天美| 国产成人麻豆免费观看| 日韩欧美中文字幕制服| 国产乱视频在线观看| 欧美极品美女视频网站在线观看免费| 免费电影日韩网站| 97av自拍| 99国产**精品****| 日本黄色三级大片| 国产精品夜夜嗨| 欧美乱大交做爰xxxⅹ小说| 精品国产精品自拍| a天堂在线观看视频| 国产亚洲日本欧美韩国| www成人免费观看| 92看片淫黄大片看国产片| 国产成人高清| 人妻少妇精品无码专区二区| 久久99精品久久久久久| 国产激情在线免费观看| 天天影视涩香欲综合网| 精品国产av一区二区| 中文字幕免费精品一区| 毛片免费看不卡网站| 国产精品日本一区二区| 综合久久99| 99日在线视频| 国产精品灌醉下药二区| 69xxxx国产| 亚洲人成网站免费播放| 涩涩av在线| 国产一区免费视频| 国语自产精品视频在线看8查询8| 欧洲美女亚洲激情| 国产精品黄色在线观看| 波多野结衣mp4| 尤物精品国产第一福利三区| 在线人成日本视频| 乱一区二区三区在线播放| 亚洲韩日在线| 97精品人妻一区二区三区蜜桃| 一级特黄大欧美久久久| 草逼视频免费看| 欧美大片免费看| 综合视频一区| 亚洲精品无码国产| 国产99一区视频免费 | 午夜欧美在线一二页| 91久久国产综合久久91| 日韩精品免费在线视频| 成人av三级| 欧美色图亚洲自拍| 日韩制服丝袜先锋影音| 国产精品久久免费观看| 欧美日韩小视频| 免费a级人成a大片在线观看| 91九色综合久久| 综合国产在线| 一级黄色电影片| 黄色一区二区三区| 黄色美女网站在线观看| 国产精品激情av电影在线观看 | 中文字幕在线观看不卡| 国产精品无码久久av| 欧美日韩第一页| 美腿丝袜亚洲图片| 日韩精品视频久久| 国产精品伦理在线| av片免费播放| 97视频在线观看网址| 国产精品羞羞答答在线观看 | 国产精品美女久久久久| 中文字幕の友人北条麻妃| 成人自拍视频在线观看| 99精品视频99| 综合久久五月天| 成人黄色av网址| 免费在线观看毛片网站| 亚洲欧洲99久久| 老牛影视av牛牛影视av| 庆余年2免费日韩剧观看大牛| 久久激情电影| 丰满少妇xbxb毛片日本| 色视频欧美一区二区三区| 一级毛片视频在线| 国产精品成人一区二区三区| 日韩精品亚洲一区二区三区免费| 欧美另类videoxo高潮| 337p日本欧洲亚洲大胆精品 | 精品视频在线视频| 手机在线免费看av| 日本电影一区二区三区| 国产精品亚洲综合一区在线观看| √资源天堂中文在线| 精品国模在线视频| 欧美一性一交| 亚洲一区二区偷拍| 福利精品视频在线| fc2ppv国产精品久久| 日本高清视频一区二区三区| 国产精品一区二区视频| 黄色网址中文字幕| 国模私拍视频一区| 无需播放器亚洲| 久久久久久亚洲中文字幕无码| 欧美一区二区三区在线观看视频 |