• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Linux上下文切換性能測試的一種新方法

    2018-07-28 07:18:52孫菲艷李彥峰王娜汪辰
    電腦知識與技術(shù) 2018年15期

    孫菲艷 李彥峰 王娜 汪辰

    摘要:上下文切換是Linux操作系統(tǒng)內(nèi)核優(yōu)化的一個(gè)關(guān)鍵參數(shù)指標(biāo),如何精確方便地測量上下文切換開銷顯得至關(guān)重要。本文說明了使用nanosleep()函數(shù)測試方法的不合理性,提出了一種在用戶態(tài)編寫應(yīng)用程序并且調(diào)用schedu_yield()系統(tǒng)調(diào)用主動(dòng)放棄處理器實(shí)現(xiàn)任務(wù)切換的測試方法,并且基于ARM Linux-3.2.0實(shí)驗(yàn)平臺(tái),與傳統(tǒng)的使用管道讀寫切換、在內(nèi)核態(tài)測試context_switch()函數(shù)的開銷等方法進(jìn)行了對比分析,結(jié)果表明,使用該方法測試上下文切換的準(zhǔn)確性和便捷性均有所提高。

    關(guān)鍵詞:Linux;上下文切換;系統(tǒng)調(diào)用;用戶態(tài);內(nèi)核態(tài)

    中圖分類號:TP316 文獻(xiàn)標(biāo)志碼:A 文章編號:1009-3044(2018)15-0047-04

    A New Method for Testing the Performance of Linux Context Switch

    SUN Fei-yan, LI Yan-feng, WANG Na, WANG Chen

    (Nanjing Software Institute, Jinling Institute of Technology, Nanjing 211100, China)

    Abstract: Context switch is a key parameter of the kernel optimization of Linux operating system. It is very important to measure the cost of context switch accurately and conveniently. This paper illustrates the irrationality of the test method using the nanosleep () function and presents a method, which is to write an user mode application program and use schedu_yield () system call to take the initiative to give up processor, and also compared with other methods like using traditional read / write with pipes to switch, using nanosleep() and testing the context_switch() function cost in the kernel mode directly based on the experimental platform of arm Linux - 3.2.0. And results show that this new method can improve the accuracy and convenience of the context switch testing.

    Key words: Linux-3.2.0; context switch; system call; user mode; kernel mode

    隨著信息技術(shù)、嵌入式技術(shù)的快速發(fā)展,Linux作為一種可裁剪、廣泛支持、易開發(fā)的通用操作系統(tǒng),也得到了越來越廣泛的應(yīng)用[1][2]。上下文切換延時(shí)作為linux操作系統(tǒng)內(nèi)核的任務(wù)調(diào)度子系統(tǒng)的主要性能指標(biāo),測試上下文切換延時(shí)已是一項(xiàng)重要的工作。上下文切換是保存上一個(gè)任務(wù)的執(zhí)行環(huán)境,準(zhǔn)備下一個(gè)將要運(yùn)行的任務(wù)的環(huán)境的必要操作。研究表明,上下文切換操作在操作系統(tǒng)中,每秒會(huì)發(fā)生幾十至幾百次,其帶來的時(shí)間開銷不可忽略[3]。有的測試程序采用nanosleep等睡眠函數(shù)來測試上下文切換[4][5],但是由于內(nèi)核中進(jìn)入睡眠狀態(tài)的實(shí)時(shí)任務(wù)是在軟中斷中被喚醒,在軟中斷沒有到來前實(shí)際上并不能保證兩個(gè)實(shí)時(shí)任務(wù)交替切換;也有很多測試程序采用創(chuàng)建管道讀寫的方式來測試上下文切換[6][7],該方法程序編寫相對復(fù)雜,所得到的測試結(jié)果是上下文切換延時(shí)和管道讀寫延時(shí)的總和,而管道讀寫延時(shí)的開銷相對較大,會(huì)使得測試結(jié)果不夠精確。本文提出了一種在用戶態(tài)編寫應(yīng)用程序調(diào)用schedu_yield()系統(tǒng)調(diào)用主動(dòng)放棄處理器實(shí)現(xiàn)任務(wù)切換的測試方法來提高上下文切換測試的精確度,同時(shí)也采用了在內(nèi)核態(tài)插樁的方法來進(jìn)行對比實(shí)驗(yàn),結(jié)果表明該方法相比在內(nèi)核態(tài)插樁測試操作更方便。

    1 上下文切換

    1.1 上下文切換

    上下文切換又稱為任務(wù)上下文切換(包括進(jìn)程或者線程),是指CPU從一個(gè)任務(wù)切換到另一個(gè)任務(wù)的過程,在這個(gè)過程中,需要保存當(dāng)前任務(wù)的狀態(tài)和恢復(fù)另一個(gè)任務(wù)的狀態(tài),即當(dāng)前運(yùn)行任務(wù)轉(zhuǎn)為就緒(或者掛起、刪除)狀態(tài),另一個(gè)被選定的就緒任務(wù)成為運(yùn)行狀態(tài)。

    1.2上下文切換開銷

    上下文切換是操作系統(tǒng)內(nèi)核優(yōu)化的一個(gè)關(guān)鍵參數(shù)指標(biāo)。在任務(wù)間發(fā)生切換需要花費(fèi)大量的時(shí)間用于處理諸如:保存和恢復(fù)寄存器和內(nèi)存頁表、更新內(nèi)核相關(guān)數(shù)據(jù)結(jié)構(gòu)等操作[8][9]。上下文切換通常是計(jì)算密集型的。也就是說,它需要相當(dāng)可觀的處理器時(shí)間,在每秒幾十上百次的切換中,每次切換都需要納秒量級的時(shí)間。所以,上下文切換對系統(tǒng)來說意味著消耗大量的 CPU 時(shí)間。

    從Linux內(nèi)核內(nèi)部實(shí)現(xiàn)來看,如圖1所示,上下文切換所花費(fèi)的延遲時(shí)間是從調(diào)度器選好要調(diào)度的任務(wù)(任務(wù)1)后到把任務(wù)上下文切換到另一個(gè)任務(wù)(任務(wù)2)所花費(fèi)的時(shí)間。即context_switch()函數(shù)的開銷[3]。

    2 三種傳統(tǒng)的上下文切換測試機(jī)制

    2.1 采用睡眠函數(shù)切換

    有的學(xué)者采用睡眠函數(shù)實(shí)現(xiàn)切換的主要機(jī)制是:創(chuàng)建兩個(gè)實(shí)時(shí)任務(wù)TASK1和TASK2,在每個(gè)實(shí)時(shí)任務(wù)中插入代碼探測段,通過頻繁切換兩個(gè)實(shí)時(shí)任務(wù)來測試上下文切換時(shí)間,調(diào)度策略設(shè)置為SHCED_RR,優(yōu)先級設(shè)置為最高,主要偽代碼實(shí)現(xiàn)如下:

    實(shí)時(shí)TASK1:

    while(loops){

    t1 = clock_gettime();

    nanosleep(0);

    t2 = clock_gettime();

    switch_time = (t2 – t1)/2;

    loops--;

    }

    實(shí)時(shí)TASK2:

    while(loops){

    nanosleep(0);

    loops--;

    }

    通過在ARM Linux-3.2.0平臺(tái)上測試發(fā)現(xiàn),該方法并不能保證上下文切換在兩個(gè)實(shí)時(shí)任務(wù)之間交替發(fā)生,CPU實(shí)際上是在內(nèi)核線程ksoftirqd、TASK1、TASK2三個(gè)任務(wù)之間交替切換,主要原因是當(dāng)實(shí)時(shí)任務(wù)調(diào)用nanosleep()睡眠時(shí),會(huì)激活一個(gè)高精度定時(shí)器,同時(shí)在hrtimer_enqueue_reprogram()函數(shù)中會(huì)調(diào)用raise_softirq_irqoff(HRTIMER_SOFTIRQ)來喚醒hrtimer的軟中斷,而睡眠函數(shù)中的定時(shí)器到期檢查是在HRTIMER_SOFTIRQ軟中斷中,當(dāng)其中一個(gè)實(shí)時(shí)任務(wù)睡眠的時(shí)候,恰好另外一個(gè)實(shí)時(shí)任務(wù)已經(jīng)處于睡眠狀態(tài)且還沒有被HRTIMER_SOFTIRQ軟中斷喚醒,因此狀態(tài)仍然是TASK_INTERRUPTIBLE,而此時(shí)由于CPU中沒有其他的任務(wù)可以運(yùn)行,調(diào)度器會(huì)選擇內(nèi)核線程ksoftirqd來執(zhí)行HRTIMER_SOFTIRQ軟中斷,在ksoftirqd被執(zhí)行的時(shí)候會(huì)檢查實(shí)時(shí)任務(wù)是否到期進(jìn)而喚醒兩個(gè)實(shí)時(shí)任務(wù),則兩個(gè)實(shí)時(shí)任務(wù)接下來會(huì)輪流搶到CPU,因此是三個(gè)任務(wù)之間的切換,主要原因是實(shí)時(shí)任務(wù)被喚醒是在HRTIMER_SOFTIRQ軟中斷中,只有在軟中斷被執(zhí)行過之后才能喚醒兩個(gè)實(shí)時(shí)任務(wù)使其得到運(yùn)行,用該方法測試的時(shí)候內(nèi)核中的切換順序如下:

    TASK1

    TASK2

    ksoftirqd

    TASK1

    TASK2

    ksoftirqd

    ……

    因此此時(shí)測試出來的上下文切換實(shí)際上也包括了內(nèi)核線程ksoftirqd的運(yùn)行時(shí)間,是不精確的。因此用該方法測試上下文切換是不合理的。

    2.2 采用管道讀寫切換

    管道測試是當(dāng)前被廣泛使用的上下文切換延時(shí)測試方法。主要實(shí)現(xiàn)機(jī)制也是創(chuàng)建兩個(gè)實(shí)時(shí)任務(wù),將實(shí)時(shí)任務(wù)調(diào)度策略設(shè)置為SCHED_FIFO,實(shí)時(shí)優(yōu)先級設(shè)置為最高,兩個(gè)任務(wù)利用管道循環(huán)讀寫n次,讀寫一個(gè)int,以此來進(jìn)行上下文切換,這樣測試出的上下文切換時(shí)間包括了管道讀寫的時(shí)間,同時(shí)編程相對復(fù)雜,實(shí)驗(yàn)發(fā)現(xiàn),該方法測試得到的上下文切換時(shí)間相對較大(見下述),精確度有待提高。

    2.3 在內(nèi)核代碼中插樁測試

    內(nèi)核中上下文切換主要是通過context_switch()函數(shù)來實(shí)現(xiàn)的,該函數(shù)位于kernel/sched.c中的schedule()函數(shù)中,該方法的主要機(jī)制是:運(yùn)行用戶態(tài)的應(yīng)用程序來實(shí)現(xiàn)兩個(gè)實(shí)時(shí)任務(wù)之間的相互切換,在內(nèi)核源碼的context_switch()函數(shù)前后插樁來獲取上下文切換前后的時(shí)間戳進(jìn)而得到上下文切換的時(shí)間,這里使用了ftrace提供的一個(gè)向ftrace跟蹤緩沖區(qū)輸出跟蹤信息的工具函數(shù)trace_printk(),ftrace是Linux內(nèi)核中提供的一種調(diào)試工具,使用ftrace可以對內(nèi)核中發(fā)生的事情進(jìn)行跟蹤,這在調(diào)試bug或者分析內(nèi)核時(shí)非常有用。trace_printk()的函數(shù)原型定義在內(nèi)核頭文件include/linux/kernel.h中,在激活配置CONFIG_TRACING后可以使用[10],如下:

    schedule() {

    ……

    trace_printk(“t1\n”);

    context_switch;

    trace_printk(“t2\n”);

    ……

    }

    運(yùn)行應(yīng)用程序來使兩個(gè)實(shí)時(shí)任務(wù)交替切換,得到的打印結(jié)果如下:

    TASK TIMESTAMP

    TASK1 t1

    TASK2 t2

    TASK2 t1

    TASK1 t2

    ……

    在上下文切換過程中,TASK1經(jīng)過context_switch()函數(shù)之后,會(huì)切換至TASK2,并且直接跳轉(zhuǎn)至TASK2被切換之前的代碼運(yùn)行處即trace_printk(“t2\n”)處,TASK2->t2 – TASK1->t1這個(gè)時(shí)間段內(nèi)即上下文切換一次的時(shí)間。

    使用該方法測試雖然結(jié)果會(huì)相對更精確,但是需要修改內(nèi)核源碼,重新編譯內(nèi)核,相比用戶態(tài)測試操作更復(fù)雜更耗時(shí)。

    3 采用sched_yield()實(shí)現(xiàn)上下文切換延時(shí)測試

    3.1 測試原理分析

    編寫用戶態(tài)應(yīng)用來實(shí)現(xiàn)內(nèi)核上下文切換的測試。應(yīng)用的主體是創(chuàng)建了兩個(gè)實(shí)時(shí)任務(wù)(進(jìn)程),調(diào)度策略設(shè)置為SCHED_FIFO,實(shí)時(shí)優(yōu)先級設(shè)置為最高(99)。這兩個(gè)任務(wù)都會(huì)調(diào)用sched_yield()系統(tǒng)調(diào)用函數(shù),按照man手冊說明,該函數(shù)主要是讓調(diào)用者放棄CPU,將其移動(dòng)到運(yùn)行隊(duì)列的尾部,調(diào)用其他任務(wù)來運(yùn)行。

    子進(jìn)程起輔助作用,唯一的作用就是配合父進(jìn)程完成任務(wù)切換,主要代碼如下:

    while (TRUE) {

    ......

    sched_yield();

    ......

    }

    主要的延時(shí)計(jì)算在父進(jìn)程中實(shí)現(xiàn),主體代碼如下:

    for (count = 0; count < MAX_ITERATIONS; ++count) {

    ......

    clock_gettime(CLOCK_MONOTONIC, &before;); // (1)

    sched_yield(); // (2)

    clock_gettime(CLOCK_MONOTONIC, &after;); // (3)

    diff = calcdiff_ns(after, before) / 2000.0; // (4)

    /* cost = diff – overhead; */

    ......

    }

    父進(jìn)程控制整個(gè)測量的運(yùn)行周期,通過一個(gè)循環(huán)運(yùn)行MAX_ITERATIONS 次,每次執(zhí)行四步操作:

    第(1)步:父進(jìn)程調(diào)用系統(tǒng)調(diào)用函數(shù)clock_gettime()以納秒級別的精度獲取調(diào)用sched_yield()前的絕對時(shí)間并存入before變量。

    第(2)步:父進(jìn)程調(diào)用sched_yield() 讓出處理器,此時(shí)其他任務(wù),也就是子進(jìn)程的任務(wù)會(huì)被調(diào)度(其他任務(wù)不會(huì)被調(diào)度器選中,因?yàn)楸緶y試環(huán)境中創(chuàng)建的父子進(jìn)程是兩個(gè)實(shí)時(shí)任務(wù),其他非實(shí)時(shí)任務(wù)的調(diào)度優(yōu)先級都低于實(shí)時(shí)任務(wù))。此時(shí)內(nèi)核發(fā)生一次任務(wù)調(diào)度和上下文切換,執(zhí)行流切換到子進(jìn)程的任務(wù)。參考前面子進(jìn)程的執(zhí)行邏輯,當(dāng)子進(jìn)程獲得處理器后馬上又調(diào)用一次sched_yield() 讓出處理器,內(nèi)核再次發(fā)生任務(wù)切換,即第二次任務(wù)切換后父進(jìn)程再次獲得處理器執(zhí)行第三步。

    第(3)步:父進(jìn)程再次調(diào)用系統(tǒng)調(diào)用函數(shù)clock_gettime()以納秒級別的精度獲取調(diào)用此時(shí)的絕對時(shí)間并存入after變量。

    第(4)步:calcdiff_ns()是自己編寫的一個(gè)函數(shù)可以用來計(jì)算after和before兩個(gè)絕對時(shí)間之間的時(shí)間間隔diff,之所以要除以2000,原因有二,一是最終的結(jié)果單位筆者希望采用微秒,其次是根據(jù)前面第二步的描述,before和after之間實(shí)際執(zhí)行了兩次上下文切換。最后要注意的是,由于此方法是在用戶態(tài)編寫程序計(jì)算內(nèi)核上下文切換的時(shí)間,所以為了精確計(jì)算,原理上獲得的diff值還包含了系統(tǒng)調(diào)用等其他指令的開銷overhead,所以最終的一次上下文切換的開銷cost應(yīng)該還應(yīng)該從diff值中減去overhead的值,但經(jīng)過實(shí)際計(jì)算,由于diff的值本身已經(jīng)很低,而overhead的值幾乎可以忽略不計(jì),所以用diff值代替cost的值也是合理的。

    一次完整的在兩個(gè)進(jìn)程之間兩次上下文切換的流程如圖2所示:

    3.2 測試環(huán)境

    測試的開發(fā)板使用的處理器型號為ARM架構(gòu)的 Cortex-A8,軟件環(huán)境為linux-3.2.0的內(nèi)核版本及測試需要的應(yīng)用程序,具體如表1所示[11]:

    3.3 測試結(jié)果及分析

    在Linux-3.2.0內(nèi)核下進(jìn)行了2000000次的測試,測試結(jié)果如圖2所示,圖的橫坐標(biāo)代表測試序列次,縱坐標(biāo)代表上下文切換延時(shí),單位是微秒(us),且圖中給出了延時(shí)的最小值(Min),平均值(Avg),最大值(Max),抖動(dòng)值(Jitter)。

    從圖3,圖4可以看出,使用sched_yield()系統(tǒng)調(diào)用來進(jìn)行上下文切換測試得到的上下文切換Avg為2.8us,而使用管道讀寫的方式來測試得到的上下文切換Avg為8.6us,即采用sched_yield()系統(tǒng)調(diào)用測試使得上下文切換的開銷相比使用管道讀寫的方式減小很多;同時(shí),為了進(jìn)一步對比,本文也采用在上述2.3中介紹的在內(nèi)核態(tài)中插樁的方法來測試context_switch()函數(shù)的開銷,經(jīng)實(shí)驗(yàn)得到,內(nèi)核中插樁跟蹤得到的上下文切換的平均延時(shí)為2.5us(其中也包含跟蹤工具帶來的延時(shí)),可見,使用sched_yield()系統(tǒng)調(diào)用來切換的方法測試結(jié)果更接近內(nèi)核態(tài)中測試的context_switch()函數(shù)的開銷,結(jié)果更精確。

    圖3,圖4中所給出的上下文測試結(jié)果中也包括了sched_yield()系統(tǒng)調(diào)用的開銷和管道讀寫的開銷。為了進(jìn)一步追求結(jié)果的精度,表2給出了通過編寫程序測量得到的sched_yield()和read()/write()的開銷,由表2可以看出,sched_yield()系統(tǒng)調(diào)用的開銷為1.5us,而使用管道讀寫的read()和write()的系統(tǒng)調(diào)用的開銷為3.8us,sched_yield()系統(tǒng)調(diào)用的開銷更小,可以近似忽略不計(jì),因此在不去掉系統(tǒng)調(diào)用開銷的情況下,采用sched_yield()測試上下文切換的結(jié)果相對更精確。

    4 總結(jié)

    本文利用sched_yield()系統(tǒng)調(diào)用函數(shù)可以主動(dòng)放棄CPU的特點(diǎn),提出了一種在用戶態(tài)測試上下文切換的新方法。將該方法與在用戶態(tài)使用管道讀寫切換的方法在ARM Linux-3.2.0的平臺(tái)上進(jìn)行了對比實(shí)驗(yàn)并且分析了使用nanosleep()睡眠函數(shù)測試不合理的原因,發(fā)現(xiàn)使用sched_yield()系統(tǒng)調(diào)用來進(jìn)行切換可以顯著提高測試結(jié)果的精度,而且sched_yield()系統(tǒng)調(diào)用的開銷與read()/write()系統(tǒng)調(diào)用的開銷相比要小很多,甚至可以忽略不計(jì)。同時(shí)也采用了在內(nèi)核態(tài)插樁的方法來測試上下文切換時(shí)間,發(fā)現(xiàn)使用sched_yield()函數(shù)的測試結(jié)果更接近于context_switch()函數(shù)的開銷,同時(shí)采用編寫用戶態(tài)應(yīng)用程序的方法操作更方便更快捷。本文提到的采用sched_yield()系統(tǒng)調(diào)用函數(shù)來編寫用戶態(tài)應(yīng)用程序的方法來測試上下文切換延時(shí)也可以應(yīng)用到操作系統(tǒng)的實(shí)時(shí)性等方面的測試。

    參考文獻(xiàn):

    [1] Cede?o W, Laplante P A. An Overview of Real-time Operating Systems[J]. Journal of the Association for Laboratory Automation, 2007, 12(12):40-45.

    [2] Jinhui Q, Hui L D, Junchao Y. The Application of Qt/Embedded on Embedded Linux[C]// International Conference on Industrial Control and Electronics Engineering. IEEE Computer Society, 2012:1304-1307.

    [3] Context switch, https://en.wikipedia.org/wiki/Context_switch

    [4] 吳章金. Linux實(shí)時(shí)搶占補(bǔ)丁的研究與實(shí)踐[D]. 蘭州大學(xué), 2010.

    [5] 張曉龍, 郭銳鋒, 陶耀東,等. Linux實(shí)時(shí)搶占補(bǔ)丁研究及實(shí)時(shí)性能測試[J]. 計(jì)算機(jī)工程, 2014, 40(10):304-307.

    [6] 胡志剛, MAHAMMED M E, 余正軍,等. 嵌入式Linux實(shí)時(shí)性方法[J]. 中南大學(xué)學(xué)報(bào)(自然科學(xué)版), 2004, 35(4):638-642.

    [7] 陽國貴, 姜波. 線程切換開銷分析工具的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用, 2010, 30(8):2052-2055.

    [8] RobertLove. Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M]. 機(jī)械工業(yè)出版社, 2011.

    [9] DANIEL P.BOVET \& MARCO CESATI.深入理解LINUX內(nèi)核:第3版[M].中國電力出版社,2006.

    [10] Debugging the kernel using Ftrace - part 1. (2009-12-09) https://lwn.net/Articles/365835/

    [11] MYC-AM335X 產(chǎn)品數(shù)據(jù)手冊(V2.0)光盤路徑MYD-AM335X_V14_2\01-Document\UserManual\Chinese

    精品久久久久久久毛片微露脸| 69av精品久久久久久| 99热只有精品国产| 91成年电影在线观看| 午夜福利免费观看在线| 高清毛片免费观看视频网站| 精品无人区乱码1区二区| 欧美黄色淫秽网站| 中文在线观看免费www的网站 | 欧美黑人巨大hd| 日韩av在线大香蕉| 少妇裸体淫交视频免费看高清 | 欧美激情 高清一区二区三区| 波多野结衣高清作品| 成人免费观看视频高清| 叶爱在线成人免费视频播放| 亚洲aⅴ乱码一区二区在线播放 | 可以在线观看的亚洲视频| 中文字幕精品亚洲无线码一区 | 国产精品电影一区二区三区| 久久精品亚洲精品国产色婷小说| 人人妻人人澡欧美一区二区| 免费女性裸体啪啪无遮挡网站| 99精品久久久久人妻精品| xxx96com| 亚洲 欧美 日韩 在线 免费| АⅤ资源中文在线天堂| 午夜福利视频1000在线观看| 国产亚洲精品久久久久久毛片| 亚洲精品久久成人aⅴ小说| 亚洲性夜色夜夜综合| 国产国语露脸激情在线看| 最新美女视频免费是黄的| 日本成人三级电影网站| 国产av一区二区精品久久| 国产成人精品无人区| 久久久国产成人精品二区| 亚洲国产欧美网| 男人舔女人的私密视频| 欧美黑人欧美精品刺激| 俺也久久电影网| 黄色丝袜av网址大全| 亚洲色图av天堂| 男人舔女人下体高潮全视频| 亚洲精华国产精华精| 国产精品久久电影中文字幕| 熟女电影av网| 99在线人妻在线中文字幕| 麻豆国产av国片精品| 夜夜躁狠狠躁天天躁| 日本黄色视频三级网站网址| 99热只有精品国产| 亚洲国产欧美一区二区综合| xxx96com| 日韩欧美国产一区二区入口| 欧美激情高清一区二区三区| e午夜精品久久久久久久| 精品卡一卡二卡四卡免费| 伊人久久大香线蕉亚洲五| 久久久久久国产a免费观看| 久99久视频精品免费| 国产99久久九九免费精品| 亚洲中文字幕一区二区三区有码在线看 | 成人亚洲精品av一区二区| 欧美绝顶高潮抽搐喷水| 日韩成人在线观看一区二区三区| 大型av网站在线播放| 成人三级做爰电影| 日韩精品中文字幕看吧| 成人国产一区最新在线观看| 搡老岳熟女国产| 一边摸一边抽搐一进一小说| 国产成人欧美在线观看| 国产精品一区二区免费欧美| 欧美精品啪啪一区二区三区| 18禁观看日本| 国产一卡二卡三卡精品| 久久久水蜜桃国产精品网| or卡值多少钱| 中文字幕另类日韩欧美亚洲嫩草| 久久久久久久精品吃奶| 国产成人影院久久av| 一级作爱视频免费观看| 国产v大片淫在线免费观看| xxx96com| 欧美绝顶高潮抽搐喷水| 熟女电影av网| 精品电影一区二区在线| 2021天堂中文幕一二区在线观 | e午夜精品久久久久久久| www.熟女人妻精品国产| 久久精品国产综合久久久| 丝袜在线中文字幕| 男人舔女人下体高潮全视频| 国产亚洲欧美在线一区二区| 久久精品国产亚洲av高清一级| 亚洲五月天丁香| 日韩一卡2卡3卡4卡2021年| 欧美另类亚洲清纯唯美| 最新美女视频免费是黄的| 99久久99久久久精品蜜桃| 国产精品一区二区精品视频观看| 日韩欧美 国产精品| 一a级毛片在线观看| 欧美性猛交黑人性爽| 视频在线观看一区二区三区| 欧美一级毛片孕妇| 中文字幕高清在线视频| 精品电影一区二区在线| 国产三级黄色录像| 久9热在线精品视频| 成人18禁高潮啪啪吃奶动态图| 久久国产精品影院| 99re在线观看精品视频| 亚洲精品美女久久久久99蜜臀| 黑丝袜美女国产一区| 欧美乱妇无乱码| 国产单亲对白刺激| 国产激情偷乱视频一区二区| 在线观看www视频免费| 欧美黑人精品巨大| 大型av网站在线播放| 欧美乱妇无乱码| 午夜激情福利司机影院| 色综合欧美亚洲国产小说| 91老司机精品| 一本综合久久免费| 亚洲成人久久性| 在线永久观看黄色视频| 免费女性裸体啪啪无遮挡网站| 国产色视频综合| av片东京热男人的天堂| 99精品在免费线老司机午夜| 国产精品一区二区精品视频观看| 日韩欧美国产一区二区入口| 亚洲精品色激情综合| 国产黄色小视频在线观看| 久久精品成人免费网站| 精品无人区乱码1区二区| 精品日产1卡2卡| 国产精品亚洲美女久久久| 欧美在线黄色| av福利片在线| 精品福利观看| 天堂动漫精品| 国产v大片淫在线免费观看| 又紧又爽又黄一区二区| 亚洲熟妇中文字幕五十中出| 国产成年人精品一区二区| 欧美人与性动交α欧美精品济南到| 黑人操中国人逼视频| 精品国产一区二区三区四区第35| 一级作爱视频免费观看| 中文字幕精品免费在线观看视频| 免费高清视频大片| 欧美丝袜亚洲另类 | 黄色a级毛片大全视频| 国产爱豆传媒在线观看 | 亚洲第一欧美日韩一区二区三区| 黄色 视频免费看| 香蕉丝袜av| 99热这里只有精品一区 | 国产精品电影一区二区三区| 一a级毛片在线观看| 成人手机av| 中文字幕高清在线视频| 一a级毛片在线观看| 欧美成狂野欧美在线观看| 99久久99久久久精品蜜桃| 日韩精品免费视频一区二区三区| 18禁黄网站禁片午夜丰满| 一本综合久久免费| 丰满的人妻完整版| 18禁黄网站禁片午夜丰满| 又黄又爽又免费观看的视频| 日韩三级视频一区二区三区| √禁漫天堂资源中文www| 12—13女人毛片做爰片一| 制服丝袜大香蕉在线| 伦理电影免费视频| 97碰自拍视频| 久久性视频一级片| 国产伦在线观看视频一区| 日韩欧美一区二区三区在线观看| 日韩一卡2卡3卡4卡2021年| 亚洲精品一卡2卡三卡4卡5卡| 一二三四社区在线视频社区8| 国产亚洲欧美98| 免费看十八禁软件| 波多野结衣巨乳人妻| 午夜福利欧美成人| 久久午夜亚洲精品久久| 亚洲专区字幕在线| 精品乱码久久久久久99久播| 两人在一起打扑克的视频| 国产精品1区2区在线观看.| 一二三四社区在线视频社区8| 亚洲一区高清亚洲精品| 黄网站色视频无遮挡免费观看| 亚洲狠狠婷婷综合久久图片| 国产精品一区二区免费欧美| 国产主播在线观看一区二区| 国产真实乱freesex| 天天一区二区日本电影三级| 久久久久久大精品| 91麻豆av在线| 嫩草影视91久久| 中亚洲国语对白在线视频| 国产1区2区3区精品| 99re在线观看精品视频| 中文字幕人妻熟女乱码| 亚洲一区中文字幕在线| 国产黄a三级三级三级人| 欧美成人免费av一区二区三区| 每晚都被弄得嗷嗷叫到高潮| 亚洲七黄色美女视频| 中文字幕久久专区| 国产不卡一卡二| 久9热在线精品视频| 亚洲午夜精品一区,二区,三区| 亚洲精品美女久久av网站| 中出人妻视频一区二区| 一进一出抽搐gif免费好疼| 日日干狠狠操夜夜爽| 看免费av毛片| 他把我摸到了高潮在线观看| 精品欧美一区二区三区在线| 亚洲成人久久性| 免费人成视频x8x8入口观看| 真人做人爱边吃奶动态| 两个人免费观看高清视频| 国产麻豆成人av免费视频| 国语自产精品视频在线第100页| 国产三级黄色录像| 国产人伦9x9x在线观看| 亚洲真实伦在线观看| 18禁裸乳无遮挡免费网站照片 | 天堂√8在线中文| 老司机福利观看| 男人舔女人的私密视频| 俺也久久电影网| 欧美 亚洲 国产 日韩一| 变态另类丝袜制服| 亚洲国产精品久久男人天堂| 亚洲成人精品中文字幕电影| 精品无人区乱码1区二区| 亚洲三区欧美一区| 狠狠狠狠99中文字幕| 成人一区二区视频在线观看| 久久久久久久久久黄片| 精品午夜福利视频在线观看一区| 男女午夜视频在线观看| 亚洲一卡2卡3卡4卡5卡精品中文| 欧美成人午夜精品| 狠狠狠狠99中文字幕| 成人精品一区二区免费| 免费电影在线观看免费观看| 狂野欧美激情性xxxx| 一区二区三区高清视频在线| 国产色视频综合| 亚洲午夜精品一区,二区,三区| or卡值多少钱| 欧美久久黑人一区二区| 嫩草影视91久久| 日韩三级视频一区二区三区| 2021天堂中文幕一二区在线观 | 国产97色在线日韩免费| 男男h啪啪无遮挡| 色在线成人网| 男女视频在线观看网站免费 | 1024手机看黄色片| 成人欧美大片| 久久精品人妻少妇| 女性生殖器流出的白浆| 免费在线观看黄色视频的| 99精品在免费线老司机午夜| 天天躁夜夜躁狠狠躁躁| 久久香蕉国产精品| 国内精品久久久久久久电影| 在线观看舔阴道视频| 在线视频色国产色| 欧美日韩乱码在线| 免费在线观看亚洲国产| 精品卡一卡二卡四卡免费| 日本五十路高清| 制服丝袜大香蕉在线| 欧美一级毛片孕妇| 成年版毛片免费区| 在线天堂中文资源库| 可以在线观看的亚洲视频| 国产视频一区二区在线看| 国产高清有码在线观看视频 | 亚洲精品色激情综合| 亚洲avbb在线观看| 在线视频色国产色| 国内精品久久久久久久电影| 此物有八面人人有两片| 麻豆国产av国片精品| 久久香蕉精品热| 人成视频在线观看免费观看| 亚洲一区中文字幕在线| 中文字幕另类日韩欧美亚洲嫩草| 香蕉久久夜色| 国产一区二区在线av高清观看| 欧美大码av| 亚洲国产看品久久| 十分钟在线观看高清视频www| 日本免费一区二区三区高清不卡| 别揉我奶头~嗯~啊~动态视频| 亚洲人成网站在线播放欧美日韩| 又大又爽又粗| 亚洲五月色婷婷综合| 狠狠狠狠99中文字幕| 久久久久免费精品人妻一区二区 | 欧美日韩亚洲国产一区二区在线观看| 欧美在线黄色| 亚洲av电影不卡..在线观看| 一a级毛片在线观看| 十分钟在线观看高清视频www| 亚洲 国产 在线| 国产熟女午夜一区二区三区| 亚洲成人久久性| 成人手机av| 在线观看免费视频日本深夜| 亚洲黑人精品在线| 欧美激情久久久久久爽电影| 大型av网站在线播放| 亚洲自偷自拍图片 自拍| 亚洲性夜色夜夜综合| 99国产精品99久久久久| 国产午夜精品久久久久久| 黄片播放在线免费| 免费电影在线观看免费观看| 欧美久久黑人一区二区| 亚洲国产精品sss在线观看| 久久九九热精品免费| 不卡av一区二区三区| 中文字幕人妻丝袜一区二区| 亚洲一区高清亚洲精品| 精品少妇一区二区三区视频日本电影| 亚洲精品美女久久久久99蜜臀| 黄色丝袜av网址大全| 久久亚洲精品不卡| 色av中文字幕| av欧美777| 中出人妻视频一区二区| 天天躁狠狠躁夜夜躁狠狠躁| 国产单亲对白刺激| 亚洲国产毛片av蜜桃av| 性欧美人与动物交配| 欧美日本亚洲视频在线播放| av片东京热男人的天堂| 2021天堂中文幕一二区在线观 | 久久精品aⅴ一区二区三区四区| 久久草成人影院| 2021天堂中文幕一二区在线观 | 国产精品久久久人人做人人爽| 特大巨黑吊av在线直播 | 黄色a级毛片大全视频| 日韩欧美三级三区| 久久久久久久久免费视频了| 天堂动漫精品| 免费一级毛片在线播放高清视频| 琪琪午夜伦伦电影理论片6080| 可以在线观看毛片的网站| 亚洲国产欧洲综合997久久, | 99国产综合亚洲精品| 亚洲av片天天在线观看| 黑丝袜美女国产一区| 久久精品国产综合久久久| 国产一区二区三区在线臀色熟女| 欧美日本视频| 18禁美女被吸乳视频| 搞女人的毛片| 日韩av在线大香蕉| 日本熟妇午夜| 99久久无色码亚洲精品果冻| 又紧又爽又黄一区二区| 一区二区三区精品91| 亚洲电影在线观看av| 成人手机av| 亚洲精品中文字幕在线视频| 女警被强在线播放| 99久久久亚洲精品蜜臀av| 别揉我奶头~嗯~啊~动态视频| 99久久久亚洲精品蜜臀av| av福利片在线| 亚洲真实伦在线观看| 国产97色在线日韩免费| 精品久久久久久,| 女人被狂操c到高潮| 丁香欧美五月| 日韩欧美在线二视频| 国产av一区二区精品久久| √禁漫天堂资源中文www| 他把我摸到了高潮在线观看| 我的亚洲天堂| 国产欧美日韩一区二区三| 精品久久久久久成人av| 国内揄拍国产精品人妻在线 | 国产亚洲精品久久久久久毛片| 少妇裸体淫交视频免费看高清 | 俄罗斯特黄特色一大片| 色播在线永久视频| 91成年电影在线观看| 久久午夜综合久久蜜桃| 男人舔奶头视频| 一区二区三区精品91| 白带黄色成豆腐渣| 亚洲国产精品成人综合色| 女人爽到高潮嗷嗷叫在线视频| 女性生殖器流出的白浆| 日韩大尺度精品在线看网址| 国产三级黄色录像| 我的亚洲天堂| 免费电影在线观看免费观看| 国产av一区在线观看免费| 国产免费男女视频| 亚洲人成77777在线视频| 久久久久精品国产欧美久久久| 亚洲美女黄片视频| 99在线视频只有这里精品首页| 国产激情偷乱视频一区二区| 国产一卡二卡三卡精品| 欧美另类亚洲清纯唯美| 国产成人欧美| 免费看美女性在线毛片视频| 高潮久久久久久久久久久不卡| 国产91精品成人一区二区三区| www.熟女人妻精品国产| 亚洲第一av免费看| 久9热在线精品视频| 超碰成人久久| 国产伦人伦偷精品视频| 韩国av一区二区三区四区| 免费看美女性在线毛片视频| 少妇熟女aⅴ在线视频| 听说在线观看完整版免费高清| 99精品在免费线老司机午夜| 欧美激情极品国产一区二区三区| 日日摸夜夜添夜夜添小说| 欧美黑人欧美精品刺激| 亚洲在线自拍视频| 久久精品国产清高在天天线| 制服人妻中文乱码| 1024香蕉在线观看| 国内精品久久久久精免费| 岛国视频午夜一区免费看| 久久伊人香网站| 美女大奶头视频| 亚洲avbb在线观看| 黄片小视频在线播放| 亚洲欧美日韩高清在线视频| 黄色视频不卡| 久久精品亚洲精品国产色婷小说| 亚洲黑人精品在线| 色哟哟哟哟哟哟| 国内精品久久久久久久电影| 日韩精品免费视频一区二区三区| 精品久久久久久久久久免费视频| 国产精品爽爽va在线观看网站 | 亚洲精品色激情综合| 亚洲av中文字字幕乱码综合 | 午夜激情av网站| 久久久久九九精品影院| 少妇粗大呻吟视频| 久久九九热精品免费| 成人特级黄色片久久久久久久| 亚洲国产精品成人综合色| 亚洲一区二区三区不卡视频| videosex国产| 91老司机精品| 亚洲成av片中文字幕在线观看| 国产成人av激情在线播放| АⅤ资源中文在线天堂| 脱女人内裤的视频| 1024香蕉在线观看| 成人18禁在线播放| 少妇被粗大的猛进出69影院| 久久草成人影院| 午夜影院日韩av| 国产视频内射| 日韩欧美 国产精品| 真人一进一出gif抽搐免费| 精品国产亚洲在线| 亚洲黑人精品在线| 中文字幕精品免费在线观看视频| 99精品欧美一区二区三区四区| 欧美一级毛片孕妇| 午夜福利高清视频| 亚洲成a人片在线一区二区| 亚洲精品久久成人aⅴ小说| 午夜免费鲁丝| 国产黄色小视频在线观看| 一边摸一边做爽爽视频免费| 国产麻豆成人av免费视频| 国产真人三级小视频在线观看| xxx96com| 久久人妻福利社区极品人妻图片| 亚洲人成网站在线播放欧美日韩| 精品一区二区三区四区五区乱码| 国产主播在线观看一区二区| 国产激情偷乱视频一区二区| 日韩av在线大香蕉| 少妇粗大呻吟视频| 成人亚洲精品av一区二区| 亚洲国产欧洲综合997久久, | 一级片免费观看大全| 老汉色∧v一级毛片| 国产97色在线日韩免费| 久久久国产欧美日韩av| 叶爱在线成人免费视频播放| 免费女性裸体啪啪无遮挡网站| 国产精品野战在线观看| 美女高潮喷水抽搐中文字幕| 麻豆一二三区av精品| 欧美zozozo另类| 妹子高潮喷水视频| 成人国语在线视频| 久久久久久久久久黄片| 国产成+人综合+亚洲专区| 99riav亚洲国产免费| 国产精品影院久久| 国内久久婷婷六月综合欲色啪| 日韩三级视频一区二区三区| 国产精品国产高清国产av| 国产av又大| 美女大奶头视频| 我的亚洲天堂| 日日干狠狠操夜夜爽| 欧美亚洲日本最大视频资源| 中出人妻视频一区二区| 长腿黑丝高跟| 亚洲国产精品合色在线| 欧美日韩一级在线毛片| 日韩精品免费视频一区二区三区| 久久 成人 亚洲| 夜夜爽天天搞| 日韩精品青青久久久久久| 国产久久久一区二区三区| videosex国产| 精品少妇一区二区三区视频日本电影| 亚洲欧美激情综合另类| 久久中文看片网| 美国免费a级毛片| 高清毛片免费观看视频网站| 午夜福利18| 亚洲在线自拍视频| 最近最新中文字幕大全免费视频| ponron亚洲| 亚洲国产中文字幕在线视频| 色综合站精品国产| 一级a爱视频在线免费观看| 人人妻人人澡人人看| 久久精品夜夜夜夜夜久久蜜豆 | 久久精品国产99精品国产亚洲性色| 亚洲第一青青草原| 成人永久免费在线观看视频| 香蕉国产在线看| 搡老岳熟女国产| 亚洲 欧美一区二区三区| 色播亚洲综合网| 欧美+亚洲+日韩+国产| 国产精品久久电影中文字幕| 一个人免费在线观看的高清视频| 国产亚洲精品久久久久久毛片| 欧美黄色淫秽网站| 国产欧美日韩精品亚洲av| 激情在线观看视频在线高清| 99久久国产精品久久久| 国产91精品成人一区二区三区| 国产伦一二天堂av在线观看| 欧美色视频一区免费| 亚洲国产看品久久| 看黄色毛片网站| 桃红色精品国产亚洲av| 巨乳人妻的诱惑在线观看| 99精品在免费线老司机午夜| 亚洲五月天丁香| 男女午夜视频在线观看| 精品国产乱子伦一区二区三区| 最近最新中文字幕大全免费视频| 91字幕亚洲| 中文字幕最新亚洲高清| 一夜夜www| 亚洲全国av大片| 级片在线观看| 搡老妇女老女人老熟妇| 一进一出抽搐gif免费好疼| 国产精品永久免费网站| 黑丝袜美女国产一区| 亚洲一区二区三区色噜噜| 国产成人啪精品午夜网站| 欧美性猛交╳xxx乱大交人| 亚洲精品国产区一区二| 欧洲精品卡2卡3卡4卡5卡区| 亚洲性夜色夜夜综合| 欧美亚洲日本最大视频资源| 国产久久久一区二区三区| 久久中文字幕一级| 午夜视频精品福利| 精品久久久久久成人av| 国产成年人精品一区二区| 久久久久久久久中文| 美女免费视频网站| 男女视频在线观看网站免费 | 国产精品98久久久久久宅男小说| 欧美黑人巨大hd| 侵犯人妻中文字幕一二三四区| 在线观看日韩欧美| 精品人妻1区二区| 午夜成年电影在线免费观看| 亚洲,欧美精品.| 男男h啪啪无遮挡| 99国产精品一区二区蜜桃av|