国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

一文看懂 Linux 性能分析|perf 源碼實現(xiàn)

共 13902字,需瀏覽 28分鐘

 ·

2022-10-15 00:35

我們在《一文看懂Linux性能分析|perf 原理》一文中介紹過,perf 是基于采樣來對程序進(jìn)行分析的。采樣的步驟如下:

  • 通過設(shè)置一個定時器,定時器的觸發(fā)時間可以由用戶設(shè)定。

  • 定時器被觸發(fā)后,將會調(diào)用采集函數(shù)收集當(dāng)前運行環(huán)境的數(shù)據(jù)(如當(dāng)前正在執(zhí)行的進(jìn)程和函數(shù)等)。

  • 將采集到的數(shù)據(jù)寫入到一個環(huán)形緩沖區(qū)(ring buffer)中。

  • 應(yīng)用層可以通過內(nèi)存映射來讀取環(huán)形緩沖區(qū)中的采樣數(shù)據(jù)。

上述步驟如下圖所示:

接下來,我們將會介紹 perf 在 Linux 內(nèi)核中的實現(xiàn)。

事件

perf 是基于事件進(jìn)行采樣的,上面所說的定時器就是其中一種事件,被稱為:CPU時鐘事件。除了 CPU 時鐘事件外,perf 還支持多種事件,如:

  • 上下文切換事件:當(dāng)調(diào)度器切換進(jìn)程時觸發(fā)。

  • 缺頁異常事件:當(dāng)進(jìn)程訪問還沒有映射到物理內(nèi)存的虛擬內(nèi)存地址時觸發(fā)。

  • CPU遷移事件:當(dāng)進(jìn)程從一個 CPU 遷移到另一個 CPU 時觸發(fā)。

  • ...

由于 perf 支持的事件眾多,所以本文只挑選 CPU時鐘事件 進(jìn)行分析。

1. perf_event 結(jié)構(gòu)體

Linux 內(nèi)核使用 perf_event 結(jié)構(gòu)體來描述一個事件(如 CPU 時鐘事件),其定義如下(由于 perf_event 結(jié)構(gòu)體過于龐大,所以對其進(jìn)行簡化):

struct perf_event {
    ...
    struct list_head                event_entry;
    const struct pmu                *pmu;
    enum perf_event_active_state    state;
    atomic64_t                      count;  // 事件被觸發(fā)的次數(shù)
    ...
    struct perf_event_attr          attr;   // 事件的屬性(由用戶提供)
    struct hw_perf_event            hw;
    struct perf_event_context       *ctx;   // 事件所屬的上下文
    ...
};

我們現(xiàn)在只需關(guān)注其中的兩個成員變量:count 和 ctx。

  • count:表示事件被觸發(fā)的次數(shù)。

  • ctx:表示當(dāng)前事件所屬的上下文。

count 成員變量容易理解,所以就不作詳細(xì)介紹了。我們注意到 ctx 成員變量的類型為 perf_event_context 結(jié)構(gòu),那么這個結(jié)構(gòu)代表什么?

2. perf_event_context 結(jié)構(gòu)體

因為一個進(jìn)程可以同時分析多種事件,所以就使用 perf_event_context 結(jié)構(gòu)來記錄屬于進(jìn)程的所有事件。我們來看看 perf_event_context 結(jié)構(gòu)的定義,如下所示:

struct perf_event_context {
    ...
    struct list_head            event_list; // 連接所有屬于當(dāng)前上下文的事件
    int                         nr_events;  // 屬于當(dāng)前上下文的所有事件的總數(shù)
    ...
    struct task_struct          *task;      // 當(dāng)前上下文屬于的進(jìn)程
    ...
};

我們對 perf_event_context 結(jié)構(gòu)進(jìn)行了簡化,下面介紹一下各個成員的作用:

  • event_list:連接所有屬于當(dāng)前上下文的事件。

  • nr_events:屬于當(dāng)前上下文的所有事件的總數(shù)。

  • task:當(dāng)前上下文所屬的進(jìn)程。

perf_event_context 結(jié)構(gòu)通過 event_list 字段把所有屬于本上下文的事件連接起來,如下圖所示:

另外,在進(jìn)程描述結(jié)構(gòu)體 task_struct 中,有個指向 perf_event_context 結(jié)構(gòu)的指針。如下所示:

struct task_struct {
    ...
    struct perf_event_context *perf_event_ctxp;
    ...
};

這樣,內(nèi)核就能通過進(jìn)程描述結(jié)構(gòu)體的 perf_event_ctxp 成員,來獲取屬于此進(jìn)程的事件列表。

3. pmu 結(jié)構(gòu)體

前面我們說過 perf 支持多種事件,而不同的事件應(yīng)該有不同的啟用和禁用動作。為了讓不同的事件有不同的啟用和禁用動作,所以內(nèi)核定義了 pmu 結(jié)構(gòu)。其定義如下:

struct pmu {
    int (*enable)   (struct perf_event *event);
    void (*disable) (struct perf_event *event);
    void (*read)    (struct perf_event *event);
    ...
};

下面介紹一下各個字段的作用:

  • enable:啟用事件。
  • disable:禁用事件。
  • read:事件被觸發(fā)時的回調(diào)。

perf_event 結(jié)構(gòu)的 pmu 成員是一個指向 pmu 結(jié)構(gòu)的指針。如果當(dāng)前事件是個 CPU 時鐘事件時,pmu 成員將會指向 perf_ops_cpu_clock 變量。

我們來看看 perf_ops_cpu_clock 變量的定義:

static const struct pmu perf_ops_cpu_clock = {
    .enable  = cpu_clock_perf_event_enable,
    .disable = cpu_clock_perf_event_disable,
    .read    = cpu_clock_perf_event_read,
};

也就是說:

  • 當(dāng)要啟用一個 CPU 時鐘事件時,內(nèi)核將會調(diào)用 cpu_clock_perf_event_enable() 函數(shù)來啟用這個事件。
  • 當(dāng)要禁用一個 CPU 時鐘事件時,內(nèi)核將會調(diào)用 cpu_clock_perf_event_disable() 函數(shù)來禁用這個事件。
  • 當(dāng)事件被觸發(fā)時,內(nèi)核將會調(diào)用 cpu_clock_perf_event_read() 函數(shù)來進(jìn)行特定的動作。

啟用事件

前面說過,當(dāng)要啟用一個 CPU 時鐘事件時,內(nèi)核會調(diào)用 cpu_clock_perf_event_enable() 函數(shù)來啟用它。我們來看看 cpu_clock_perf_event_enable() 函數(shù)的實現(xiàn),代碼如下:

static int
cpu_clock_perf_event_enable(struct perf_event *event)
{
    ...
    perf_swevent_start_hrtimer(event);

    return 0;
}

從上面代碼可以看出,cpu_clock_perf_event_enable() 函數(shù)實際上調(diào)用了 perf_swevent_start_hrtimer() 函數(shù)來進(jìn)行初始化工作。我們再來看看 perf_swevent_start_hrtimer() 函數(shù)的實現(xiàn):

static void
perf_swevent_start_hrtimer(struct perf_event *event)
{
    struct hw_perf_event *hwc = &event->hw;

    // 1. 初始化一個定時器,定時器的回調(diào)函數(shù)為:perf_swevent_hrtimer()
    hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
    hwc->hrtimer.function = perf_swevent_hrtimer;

    if (hwc->sample_period) {
        ...

        // 2. 啟動定時器
        __hrtimer_start_range_ns(&hwc->hrtimer, ns_to_ktime(period), 0,
                                 HRTIMER_MODE_REL, 0);
    }
}

從上面的代碼可知,perf_swevent_start_hrtimer() 函數(shù)主要完成兩件事情:

  • 初始化一個定時器,定時器的回調(diào)函數(shù)為:perf_swevent_hrtimer()。
  • 啟動定時器。

這個定時器結(jié)構(gòu)保存在 perf_event 結(jié)構(gòu)的 hwc 成員中,我們在以后的文章中將會介紹 Linux 高精度定時器的實現(xiàn)。

當(dāng)定時器被觸發(fā)時,內(nèi)核將會調(diào)用 perf_swevent_hrtimer() 函數(shù)來處理事件。我們再來分析一下 perf_swevent_hrtimer() 函數(shù)的實現(xiàn):

static enum hrtimer_restart 
perf_swevent_hrtimer(struct hrtimer *hrtimer)
{
    enum hrtimer_restart ret = HRTIMER_RESTART;
    struct perf_sample_data data;
    struct pt_regs *regs;
    struct perf_event *event;
    u64 period;

    // 獲取當(dāng)前定時器所屬的事件對象
    event = container_of(hrtimer, struct perf_event, hw.hrtimer);

    // 前面說過,如果是CPU時鐘事件,將會調(diào)用 cpu_clock_perf_event_read() 函數(shù)
    event->pmu->read(event);

    data.addr = 0;
    // 獲取定時器被觸發(fā)時所有寄存器的值
    regs = get_irq_regs();

    ...
    if (regs) {
        if (!(event->attr.exclude_idle && current->pid == 0)) {
            // 最重要的地方:對數(shù)據(jù)進(jìn)行采樣
            if (perf_event_overflow(event, 0, &data, regs))
                ret = HRTIMER_NORESTART;
        }
    }
    ...
    return ret;
}

perf_swevent_hrtimer() 函數(shù)最重要的操作就是:調(diào)用 perf_event_overflow() 函數(shù)對數(shù)據(jù)進(jìn)行采樣與收集。perf_event_overflow() 函數(shù)在后面將會介紹,我們暫時跳過。

那什么時候會啟用事件呢?答案就是:進(jìn)程被調(diào)度到 CPU 運行時。調(diào)用鏈如下:

schedule()
└→ context_switch()
└→ finish_task_switch()
└→ perf_event_task_sched_in()
└→ __perf_event_sched_in()
└→ group_sched_in()
└→ event_sched_in()
└→ event->pmu->enable()
└→ cpu_clock_perf_event_enable()

內(nèi)核通過調(diào)用 schedule() 函數(shù)來完成調(diào)度工作。從上面的調(diào)用鏈可知,當(dāng)進(jìn)程選中被調(diào)度到 CPU 運行時,最終會調(diào)用 cpu_clock_perf_event_enable() 函數(shù)來啟用這個 CPU 時鐘事件。

啟用事件的過程如下圖所示:

所以,當(dāng)進(jìn)程被選中并且被調(diào)度運行時,內(nèi)核會啟用屬于此進(jìn)程的 perf 事件。不難看出,當(dāng)進(jìn)程被調(diào)度出 CPU 時(停止運行),內(nèi)核會禁用屬于此進(jìn)程的 perf 事件。

數(shù)據(jù)采樣

最后,我們來看看 perf 是怎么進(jìn)行數(shù)據(jù)采樣的。

通過上面的分析,我們知道 perf 最終會調(diào)用 perf_event_overflow() 函數(shù)來進(jìn)行數(shù)據(jù)采樣。所以我們來看看 perf_event_overflow() 函數(shù)的實現(xiàn),代碼如下:

int
perf_event_overflow(struct perf_event *event, int nmi,
                    struct perf_sample_data *data,
                    struct pt_regs *regs)

{
    return __perf_event_overflow(event, nmi, 1, data, regs);
}

可以看出,perf_event_overflow() 函數(shù)只是對 __perf_event_overflow() 函數(shù)的封裝。我們接著來分析 __perf_event_overflow() 函數(shù)的實現(xiàn):

static int
__perf_event_overflow(struct perf_event *event, int nmi, int throttle,
                      struct perf_sample_data *data, struct pt_regs *regs)
{
    ...
    perf_event_output(event, nmi, data, regs);

    return ret;
}

從上面代碼可知,__perf_event_overflow() 會調(diào)用 perf_event_output() 函數(shù)來進(jìn)行數(shù)據(jù)采樣。perf_event_output() 函數(shù)的實現(xiàn)如下:

static void
perf_event_output(struct perf_event *event, int nmi,
                  struct perf_sample_data *data,
                  struct pt_regs *regs)

{
    struct perf_output_handle handle;
    struct perf_event_header header;

    // 進(jìn)行數(shù)據(jù)采樣,并且把采樣到的數(shù)據(jù)保存到data變量中
    perf_prepare_sample(&header, data, event, regs);
    ...

    // 把采樣到的數(shù)據(jù)保存到環(huán)形緩沖區(qū)中
    perf_output_sample(&handle, &header, data, event);
    ...
}

perf_event_output() 函數(shù)會進(jìn)行兩個操作:

  • 調(diào)用 perf_prepare_sample() 函數(shù)進(jìn)行數(shù)據(jù)采樣,并且把采樣到的數(shù)據(jù)保存到 data 變量中。
  • 調(diào)用 perf_output_sample() 函數(shù)把采樣到的數(shù)據(jù)保存到環(huán)形緩沖區(qū)中。

我們來看看 perf 是怎么把采樣到的數(shù)據(jù)保存到環(huán)形緩沖區(qū)的:

void
perf_output_sample(struct perf_output_handle *handle,
                   struct perf_event_header *header,
                   struct perf_sample_data *data,
                   struct perf_event *event)

{
    u64 sample_type = data->type;
    ...

    // 1. 保存當(dāng)前IP寄存器地址(用于獲取正在執(zhí)行的函數(shù))
    if (sample_type & PERF_SAMPLE_IP)
        perf_output_put(handle, data->ip);

    // 2. 保存當(dāng)前進(jìn)程ID
    if (sample_type & PERF_SAMPLE_TID)
        perf_output_put(handle, data->tid_entry);

    // 3. 保存當(dāng)前時間
    if (sample_type & PERF_SAMPLE_TIME)
        perf_output_put(handle, data->time);
    ...

    // n. 保存函數(shù)的調(diào)用鏈
    if (sample_type & PERF_SAMPLE_CALLCHAIN) {
        if (data->callchain) {
            int size = 1;

            if (data->callchain)
                size += data->callchain->nr;

            size *= sizeof(u64);

            perf_output_copy(handle, data->callchain, size);
        } else {
            u64 nr = 0;
            perf_output_put(handle, nr);
        }
    }
    ...
}

perf_output_sample() 通過調(diào)用 perf_output_put() 函數(shù)把用戶感興趣的數(shù)據(jù)保存到環(huán)形緩沖區(qū)中。

用戶感興趣的數(shù)據(jù)是在創(chuàng)建事件時指定的,例如,如果我們對函數(shù)的調(diào)用鏈感興趣,那么可以在創(chuàng)建事件時指定 PERF_SAMPLE_CALLCHAIN 標(biāo)志位。

perf 事件可以通過 pref_event_open() 系統(tǒng)調(diào)用來創(chuàng)建,關(guān)于 pref_event_open() 系統(tǒng)調(diào)用的使用,讀者可以自行參考相關(guān)的資料。

當(dāng) perf 把采樣的數(shù)據(jù)保存到環(huán)形緩沖區(qū)后,用戶就可以通過 mmap() 系統(tǒng)調(diào)用把環(huán)形緩沖區(qū)的數(shù)據(jù)映射到用戶態(tài)的虛擬內(nèi)存地址來進(jìn)行讀取。由于本文只關(guān)心數(shù)據(jù)采樣部分,所以 perf 的其他實現(xiàn)細(xì)節(jié)可以參考 perf 的源代碼。

數(shù)據(jù)采樣的流程如下圖所示:

總結(jié)

本文主要介紹了 perf 的 CPU 時鐘事件的實現(xiàn)原理,另外 perf 除了需要內(nèi)核支持外,還需要用戶態(tài)應(yīng)用程序支持,例如:把采樣到的原始數(shù)據(jù)生成可視化的數(shù)據(jù)或者使用圖形化表現(xiàn)出來。

當(dāng)然,本文主要是介紹 perf 在內(nèi)核中的實現(xiàn),用戶態(tài)的程序可以參考 Linux 源碼 tools/perf 目錄下的源代碼。

當(dāng)然,perf 是非常復(fù)雜的,本文也忽略了很多細(xì)節(jié)(如果把所有細(xì)節(jié)都闡明,那么篇幅將會非常長),所以讀者如果有什么疑問也可以留言討論。


瀏覽 65
點贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 毛片在线看片| 精品人妻无码一区二区三区四川人| 超碰人人在线观看| 人妻视频网| 暗呦网一区二区三区| 三级片国产| 精品交换一区二区三区无码| 天天日天天色天天干| 第九色| 亚洲一级av| 无码精品一区二区三区在线播放 | 一区二区无码视频| 久操新在线| 婷婷高清无码| 加勒比在线| 免费黄色网址啊不卡| 日韩毛片在线免费观看| 久草手机视频在线观看| 欧美成人性爱网| 亚洲高清福利| 欧美日韩一区二区三区四区| 国产无码Av| 久久三级视频| 一区二区三区四区成人| 麻豆性爱视频| 亚洲女人天堂| 91无码人妻精品一区二区三区四 | 国产精品1区2区3区| 麻豆自拍偷拍| 99视频精品| 婷婷亚洲五月色综合| 精品国产成人a在线观看| 91成人18| 福利导航页| 欧美成人黄色小说| 蜜桃视频网| 自慰在线观看网站| 亚洲性爱一级片| 天堂在线视频| 亚洲精品在线视频观看| 成人网站一区| JlZZJLZZJlZZ亚洲女人17| 天堂久久久久| 天堂在线免费视频| 亚洲无码十八禁| 成人片无码| 99re在线| 亚洲无码视频在线免费观看| 麻豆人妻换人妻好紧| 操操操操一本到| 少妇推油呻吟白浆啪啪成人片| 国产高清视频在线观看| 大鸡巴伊人| 91人妻人人澡人人爽人人精品乱| 亚洲高清国产欧美综合s8| 蜜桃传媒一区二区亚洲A| 五月丁香成人网| 婷婷丁香五月花| 哪里能看毛片| 国产AV无码区亚洲| 国产熟女一区| 亚洲黄色视频网站| 亚洲欧美在线视频观看| 4438成人网| 四库影库| 一级a一级a爱片免费免免高潮| 成人三级电影网| 色噜噜一区二区三区| 无码一道本| 美女黄视频网站| 岛国精品在线播放| 无码精品一区二区免费| 狠狠穞A片一區二區三區| 日韩无码二级| 91麻豆精品国产91久久久吃药 | 国产在线看片| 日韩av免费| 日本中文字幕视频| 日本一级黃色大片看免费| 国产精品免费久久| 91色婷婷综合久久中文字幕二区 | 国产精品久久久久久无码人妻| 国产麻豆| 熟妇高潮| 免费A片国产毛无码A片| 182AV| 久久久久国产视频| 一级黄片免费| 成人影片在线观看网站18| 中文字幕一本道| 天堂网在线视频| 日屄电影| 欧美一级在线| 色噜噜一区二区三区| 国产成人+综合亚洲+天堂| 特黄特色大片BBBB| 色吧综合网| 激情视频免费在线观看| 亚洲国产精品成人网站| Chinese搡老女人| 精品无码在线观看视频| 亲子伦一区二区三区| 东方AV免费在线观看| 亚洲天堂综合网| 91国在线视频| 天天干天天干天天日| 91蝌蚪91九色| 蕉久中文字慕| 十八禁无码网站在线观看| 久久精品视频在线免费观看| 97色在线| 国产日韩中文字幕| 免费一区二区三区四区| 色婷婷婷| 日韩性无码| 国产欧美精品| 国产1级a毛a毛1级a毛1级| 热逼视频| 日韩AV小电影| 97视频福利| 色婷婷一区二区| 国产黄片一区二区三区| 亚洲一级电影| 亚洲自拍无码| 99久久亚洲精品日本无码| 国产无码毛片| 手机看片1024国产| 亚洲精品天堂无码| 成人在线中文字幕| 中文字幕色站| 91探花精品偷拍在线播放| 亚洲日韩av在线| 风流老熟女一区二区三区| 久久久久久97电影院电影院无码| 俺要操| 一级黄片免费| 蜜桃黄片AV在线观看| 日本精品中文字幕| 蜜桃AV在线观看| 日本少妇视频| 91精品国产麻豆国产自产在线| 麻豆91蜜桃传媒在线观看| 日韩一级A片| 91精品国产综合久久久蜜臀主演| 操逼黄视频| 亚洲黄色在线| 日韩毛片网| 黄色亚洲网站| 中字无码AV| 久久精品视频18| 五月婷婷激情五月| 五月天四房播播| 成人h在线| 久久77777| 国产最新福利| 午夜性爽视频男人的天堂| 人人妻人人爱人人操| 蜜桃传媒在线播放| 久久无码影视| 内射少妇18| 亚洲小电影在线| 91豆花在线| 逼逼AV网站-日韩电影| 黄网站免费在线观看| 东方av在线播放| 伊人9| 91五月天| 黄色激情视频网站| 亚洲精品中文字幕成人片| 996热re视频精品视频这里| 欧美日韩免费| 99热偷拍| 国产高清视频在线播放| 操操操综合| а√在线中文网新版地址在线| 中文字幕精品视频| 99精品久久久久久无码| 97视频国产| 狠狠色噜噜狠狠狠888| 国产一级大片| 中文字幕人妻互换av久久| 嫩小槡BBBB槡BBBB槡免费-百度 | 91老熟女| 亚洲无码网| 思思热视频在线观看| 超碰人人搞| 日韩操逼视频| 麻豆免费成人传媒| 久久久成人免费电影| 在线无码免费视频| 国产精品久久久久久99| 2019中文字幕mv第三季歌词| 丁香婷婷色五月激情综合三级三级片欧美日韩国 | 亚洲小说欧美激情另类A片小说 | 青青免费视频| 3级片网站| 91久久精品日日躁夜夜躁国产| 色婷婷色五月| 亚色视频| 无码水蜜桃一区二区| 国产免费操逼| 天堂无线av无码av| 成人做爰A片一区二区| 中文无码在线视频| 俺也去在线| 国产v在线观看| 国产精品同| www.日本黄色| 俺来也俺去| 中日美朝美女一级片免费看| 丰满人妻一区二区三区| 最新中文字幕在线| 中文字幕AV无码| 国产精品a久久久久| 亚洲撸撸| 久久夜色精品国产噜噜亚洲AV| 成人精品一区日本无码网站suv/| 一级片麻豆| 自拍第一页| 波多野吉衣视频| 日韩不卡在线| 91传媒在线观看| 51妺嘿嘿午夜福利| 国产亚洲精品久久久久动| 深夜福利网| 三级无码电影| 欧美激情视频一区二区| 色婷婷影视| 亚洲乱码一区二区三区| 成人性爱免费网站| 久久精品女同亚洲女同13| 二级黄色视频| 日韩色图在线观看| 青青草国产在线视频| 国产午夜影视| 91人妻无码视频| 久久撸视频| 欧美成人视频大全| 欧美成人图片视频在线| 黄片网址| 色999网址| 日本成人视频在线免费播放| 日日干视频| 亚洲狼人| 久久精品99久久久久久久久| 欧美日逼| 淫一区二区| 伊人在综合| 大香蕉在线免| 国产女人精品视频| 亚洲韩国国产| 欧美日逼超碰| 免费看欧美成人A片| 国产免费一区二区三区免费视频| 亚洲AV无码乱码AV| 无码国产传媒精品一区| 国产AV网| 午夜一本道| 国产成人V在线精品一区| 国产91嫩草乱婬A片2蜜臀| 免费国产精品视频| 3D动漫操逼视频| 国产女人在线视频| 开心激情婷婷| ThePorn-成人网站入口| 嫩BBB槡BBBB槡BBBB视频-百度 | 一区二线视频| 免费无码高清| 国产18欠欠欠一区二区| 欧美日韩中字| 国内精品人妻无码久久久影院蜜桃| 日韩中文字幕一区二区| 亚洲精品成人网站| 狠狠操2019| 五月天色色网站| 黄片在线免费播放| 淫淫五月天| 日本中文字幕在线视频| 国产精品久久久久永久免费看| 高清无码在线免费观看| 91大神在线资源观看无广告| 国产免费高清无码| 国产一级性爱| 高清无码不卡在线观看| AV小说在线观看| 欧美成人三级在线| 91亚洲视频在线观看| 影音先锋久久| 日本一级片在线播放| 国产在线观看黄| 91亚洲国产成人精品一区二区三| 国产A级视频| 中文有码在线观看| 天天操免费视频| 影音先锋麻豆| 懂色av粉嫩AV蜜臀AV| 影音先锋AV成人| 欧美成人网址在线观看| 伊人免费在线| 亚洲午夜久久久久久久久红桃| 日韩一二三区| 亚洲成人自拍| 韩无码| 亚洲伊人影院| 国产91精品久久久天天| 超碰人人草| 亚洲国产成人精品女人| 久久国产热在8| 91丨国产丨白丝| 中文字幕在线乱| 91麻豆精品传媒| 人妻精品一区二区三区| 国产欧美精品成人在线观看| 日韩在线视频二区| 99日韩精品| 操日本美女| 午夜社区| 日日干天天日| 日本一级特黄大片AAAAA级| 天天爱天天爽| 最新一区二区三区| 欧美成人网站视频| 三级无码在线播放| 黄片在线免费播放| 一区二区三区在线观看视频| 91国产福利| 樱桃性爱视频| 国产女同性系列| 无码三级片在线观看| AV女优天堂| 欧美精品乱码99久久蜜桃| 久操人妻| 91综合网| av一区在线| 黄片视频国产| 自拍偷拍视频网址| 国产欧美二区综合中文字幕精品一| 丰满人妻-区二区三区| 久久国产99| 狠狠干网| www.777熟女人妻| 蝌蚪久久| 青青草无码| 69av电影| AV婷婷五月天| 人妻视频网| 狠狠操一区| 午夜探花在线观看| 69黄色视频| 爱视频福利网| 无码欧美成人| 精品国产无码怀孕| 亚洲一卡| 中文字幕成人视频| 97超碰人人| 人妻熟女在线视频| 无码中文字幕在线播放| 日韩性爱网站| 国产三级片91| 亚州激情| 特级西西444WWW高清大视频| 日韩成人黄片| 亚洲最大黄色| 欧美色图在线观看视频| 91日日夜夜| 五月天婷婷操逼视频| 91精品婷婷国产综合久久蝌蚪| 无码操| 999国产精品视频| 日韩一级免费电影| 亚洲av在线观看| 国产农村乱婬片A片AAA图片 | 欧美熟妇一区二区三区| 色婷婷电影| 午夜免费福利视频| 北条麻妃无码一区二区| aa无码视频| 一插菊花综合视频| 在线观看黄色视频网站| 秘蜜桃色一区二区三区在线观看| 中文字幕AⅤ在线| 败火老熟女ThePorn视频| 国产一级a毛一级a毛视频在线网站) | 免费国产A片| 中文字幕在线观看一区| 黄色一级大片在线免费看产| 26uuu亚洲| 亚洲无码免费视频| 12—13女人毛片毛片| 亚洲成人AV在线| 精品三级在线观看| 国产三级自拍视频| 操女人的网站| 狠狠一区| 夜夜操天天| 草久影院| 三级国产在线| 亚洲综合国产| 嫩BBB槡BBBB槡BBBB| 久久91欧美特黄A片| 欧美成人精品A片免费一区99| 日韩精品人妻中文字幕第4区| 色色色色色色网站| 成人综合网站| 免费在线观看中文字幕| 青青视频网| 免费一级婬片AA片观看| 人妻丝袜无码视频专区| 精品国产免费观看久久久_久久天天| 2025AV在线| 中文字幕免费看高清| 水蜜桃视频免费| 国产欧美日韩三级| 亚洲久久久久久| 蜜乳AV一区二区三区| 黄色二区| 中文字幕一区二区三区人妻电影| 国产av中文字幕| 欧美日韩无| 国产成人AV在线| 欧美日韩婷婷| 好吊视频一区二区三区| 操比视频在线观看| 99cao| 无码囯无精品毛片大码| 精品国产AV鲁一鲁一区| 国产黄色视频在线免费观看| 少妇一级婬片内射视频| 黄色www| 成人无码观看| 中文字幕一区二区蜜桃| 亚洲性爱一级片| 黄色高清视频在线观看| jiujiuav| 免费Av在线| 狼友视频第二页| 污视频在线看| 国产有码在线观看| 天天爽日日澡AAAA片| 亚洲AV无码专区在线播放中文| 北条麻妃久久视频在线播放| 成人网站毛片| 另类aV| 亚洲日韩中文字幕在线观看| 喷水视频在线观看| 婷婷成人小说| 日韩欧美在线免费观看| 3D动漫精品啪啪一区二区竹笋| 久久欧洲成人精品无码区| www.精品视频| 日韩毛片大全| 白虎高清无码大尺度免费在线观看 | 欧美日韩在线观看一区二区三区| 日韩精品免费| 日韩中文字幕无码中字字幕| 国产精品视频久久久久| 亚洲vs无码秘蜜桃少妇| 久久99国产精品| 久久国产偷拍| 日韩一二三| 久久久久久久97| 亚洲无遮挡| 日本免费一区二区三区| www.97超碰| 国产真人无码| 日韩中文字幕在线播放| 亚洲成人精品视频| 欧洲性爱视频在线观看| 色天堂色天使| 无码黄色片| 京东热av| 大香蕉99热| 99国产精品| 超碰人人插| 人人操超碰在线观看| 十八禁网站在线| 日韩无码小电影| 激情人妻av| 久久久WWW成人免费无遮挡大片| 欧美成人毛片AAAAAA| 台湾成人在线| 日韩成人大片| 狼友视频免费| 日韩黄色网| 北条麻妃99| 亚洲无码一区在线| 中文字幕精品一区久久久久| 国产AV激情| 天天操人妻| 人人摸人人操人人干| 欧美激情无码炮击| 黄色www| 影音先锋av中文字幕| 国产人体视频| 刘玥精品A片在线观看| 黄色激情五月天| 日韩成人高清无码| 色综合欧美| 国产精品国产三级国产AⅤ| 欧美一区二区丁香五月天激情 | 欧美成人性爱网址| 欧美视频一区二区三区四区| 四虎精品成人无码A片| av无码一区二区| 亚洲综合中文字幕在线播放| 亚洲中文字幕人妻。| 日韩黄色电影在线观看| 亚洲视频免费在线| 中文字幕日本精品5| 天堂网中文字幕| 黄色A一级| 九九九精品| 青青草在线视频免费观看| 日韩中文字幕在线观看视频| 中文字幕日本精品5| 中文字幕国产一区| 91丨九色丨蝌蚪丨对白| 大香蕉福利视频导航| 一区二区三区中文字幕| 欧美成人性爱图片| 免费性片| 狼色AV| 天天做天天爱夜夜爽| 西西4444WWW无视频| 日韩无码第一页| 亚洲资源在线观看| 在线免费A片| 东京热小视频| 超碰操| 国产粉嫩在线观看| 风间由美大荫蒂无码AV| 青青草视频免费观看| 黄色一级生活片| 火淫玖玖免费精品| 高清无码在线视频| 国产精品成人AV在线| 夜夜狠狠擅视频| 黄色三级毛片| 黑人大荫蒂女同互磨| 九九视频免费观看| 爱逼综合| 澳门午夜| 大香蕉98| 天天日天天色天天干| 国产18水真多18精品| 午夜精品久久久久久久99热精东 | 人人干国产| 日韩在线观看av| 日韩二三区| 五月天久久久久久久| 人妻少妇精品视频一区二区三区| 欧美精品一区二区三区蜜臀| 国产免费操逼| 亚洲精品无码人妻| 无套内射在线免费观看| 天堂素人| 安徽少妇搡bbw搡bbbb| 国产黄色不卡| 日本伊人在线综合视频| 在线观看av网站中文字幕| 日韩在线免费视频| 超碰91在线| 伊人免费视频| 国产成人av| 亚洲美眉综合网| 伊人大香蕉视频| 无码操逼| 亚洲综合社区在线| 国产Av婬乱麻豆| 午夜福利啪啪啪| 一品国精和二品国精的文化意义| 中文字幕一区三区三A片密月 | 天天操天天干天天日| www.蜜桃| 久久大香蕉视频| 丁香婷婷男人天堂| 一级黄色AV片| 91麻豆精品国产91久久久久久久久| 青娱乐国产AV| 丁香五月婷婷视频| 专业操美女视频网站| 国产操逼免费看| 国产欧美日韩三级| 人人操人人爱人人摸| 日韩美女性爱| 亚洲无码中文字幕在线| 中文一线二线视频| 西西人体44www大胆无码| 青青草91视频| 丝袜人妻| 白浆av| 99激情| 欧美日韩性爰视频| 日本一本视频| 伊人大久久| 欧美日韩一区二区在线| 五月丁香婷婷基地| 久久私人影院| 精品视频免费| 人成在线免费视频| 精品久久视频| 成人激情视频A极| 中文亚洲精品字幕电影| 青娱乐亚洲视频在线| 中文字幕第23页| 亚l洲视频在线观看| 日日夜夜拍| 大香蕉日逼| 久久三级| 欧美日韩四区| 欧美性爱A片| 日本AA片视频| 91秦先生在线播放| 伊人大香蕉久久| 国产A片| 黄色一级在线| 日韩毛片一区二区| 天天射夜夜操| 国产主播在线播放| 一级电影网站| 国产精品无毛五区六区| 国产乱婬AV片免费| 欧美一级黃色A片免费看蜜桃熟了 一级a一级a免费观看免免黄‘/ | 中文在线字幕免费观看| 黄色激情视频网站| 免费黄色电影在线观看| 久久久无码精品亚洲日韩男男| 中文字幕一二三四| 三级网站视频| 久操人妻| 精品人妻一区二区三区日产| 成人小视频十八禁免费观看| 一起操影院| 五月丁香婷婷色色| 亚洲做爱视频| 国产口爆| 亚洲精品色婷婷| 亚洲最新无码| 中文字幕777| 亚洲成人免费| 国产精品色婷婷99久久精品| 全国男人的天堂网站| 无码成人精品| 免费亲子乱婬一级A片| 91大神久久| henhengan| 色妞视频| 国产在线第一页| 好吊视频一区二区三区红桃视频you| 西欧超碰在线| 无码人妻精品一区二区三区蜜桃91| 草逼网站| 高清av免费| 中文字幕视频| 国产福利美女网站| 一级特黄色| 日本人妻中文字幕| 国产人妻人伦精品1国产丝袜| 一级a一级a爰片免费| 成人在线免费| 中文字幕一区二区三区人妻电影| 杨贵妃一级婬片90分钟| 国产凹凸视频在线观看| 天天干天天在线观看| 综合色综合| A级片毛片| 亚洲视频欧洲视频| 91久久久久久久91| 日韩三级一区二区| 北条麻妃精品视频| 好爽~要尿了~要喷了~同桌| 中文字幕www一区| 综合av| 婷婷五月天免费视频| 一级片麻豆| 欧美+日产+中文| 黄色大片网址| 国产系列精品AV| 亚洲黄色视频在线观看网站| 婷婷丁香色| 国产网友自拍| 中文字幕va| 97视频国产| 久操视频免费在线观看| 久久五月视频| 少妇搡BBBB搡BBB搡造水多| 青草综合| 青青自拍视频| 亚州精品人妻一二三区| 69黄色视频| 亚洲午夜福利在线观看| 99久久久成人国产精品| 欧美激情网| 骚白虎一区| 蝌蚪窝在线免费观看视频| 日本女人高潮视频| 国产高潮视频在线观看| 91大屁股| 高清无码在线免费视频| 亚洲黄色在线看| 成年人国产| 国产高清A片| 特级艺体西西444WWw| 8x8x黄色| 北条麻妃无码| 三级黄色视频| 日韩精品免费| 亚洲中文字幕电影| 亚洲高清国产欧美综合s8| 国产另类自拍| 亚洲无遮挡| 人妻少妇综合| 中文字幕视频免费| 男人天堂新地址| 3d动漫精品H区XXXXX区| 春宵福利导航| 中文字幕在线观看AV| 草逼片| 五月天黄色电影| 久久久久久久香蕉视频| 日本三级片免费| 午夜福利AV电影| 97久久综合| 国产粉嫩在线观看| 国产无套内射视频| 无码毛片一区二区三区人口| 日本一区二区三区在线视频| 江苏妇搡BBBB搡BBB| 91AV视频| 日韩高清色| 高清无码高潮| 亚洲AV秘无码不卡在线观看| 三级网站网址| 色情片在线观看| 无码人妻精品一区二区三| 人妻无码免费视频| 国产AV高清| 久久动图| 免费观看黄色在线视频| 国产乱子伦一区二区三区免看| 少妇bbb搡bbbb搡bbbb| 午夜天堂精品久久| 午夜AV无码| 91精品电影18| 最新中文字幕一区| 777偷窥盗摄00000| 日本黄色片在线播放| jlzzzjlzzz国产免费观看| 国内精品一区二区三区| 国产一级A片久久久免费看快餐| 加勒比色综合| 国产aa| 伊人久久AV诱惑悠悠| 亚洲无遮挡| 在线观看免费黄网站| 丁香婷婷激情五月| 西西4444WWW无码精品| 亚洲人妻在线视频| 成人自拍视频| 91探花精品偷拍在线播放| 蜜桃精品一区二区| 五月婷婷六月婷婷| 99福利视频| 国产精品欧美7777777| 三级视频网站| 免费的一级A片| 亚洲一区高清无码| AV黄色在线| 久久国产片| 亚洲高清在线播放| 99热在线观看| 青草成人在线| 日本A在线播放| 亚州天堂网| 特级毛片片A片AAAAAA| 亚洲免费观看高清| 狠狠干五月| 蜜臀久久99久久久久久宅男 | 九九久热| 青青草免费在线| 黄色日逼视频| 人人爱人人爽人人操| 中国精品77777777| 超碰97免费在线| 亚洲天堂一区二区三区| 爽好紧别夹喷水欧美| AV无码毛片| 国产视频无码在线| 大香蕉婷婷五月天| 午夜丁香| 亚洲九九| 69性影院| 国产精品一区二区在线观看| 国产午夜免费| 久久精品中文字幕| 精品人妻中文字幕视频| 蜜桃免费| 特级西西444www大精品| 操一操影院| 亚洲无码免费视频| 五月丁香成人电影| 欧美日韩小电影| 丁香六月综合| 欧美午夜精品| 无码婬片A片AAA毛片艳谭| 成人免费黄色视频网站| 青娱乐AV在线| 欧美老妇性猛交| 人妻少妇中文字幕久久牛牛| 五月天婷婷网站| 狠狠干天天干| 中文字幕在线观看av| 免费操b视频| 久久久久久免费| 亚洲偷拍网| 国产高清无码在线| 蜜桃网一区二区| 另类无码| 亚洲第一毛片| 日本Sm/调教/捆绑/紧缚| 成人日韩精品| 日韩无码操逼| 精品一区二区三区四区视频| 蜜臀久久99精品久久久巴士| 一道本激情视频| 欧美高潮视频| 亚洲成人无码AV| 国产男女性爱视频播放| 中国毛片视频| 亚洲国产毛片| 色五月丁香婷婷| 97资源视频| 伊香蕉大综综综合| 国产精品久久久久久久久久久久久久| 大香蕉伊人久久| aaa国产精品| 91蜜桃在线观看| 一区在线播放| 大地8免费高清视频观看大全 | 91人妻人人澡人人爽人人精品乱| 日韩三级片网站| 444444在线观看免费高清电视剧木瓜一 | 欧美视频在线观看| 91网站在线免费观看| 高潮免费视频| av无码在线播放| 日本a一级片| 一区二区三区无码区| 日本特级片| 神马Aⅴ| 日韩欧美三级在线| 成人做爰100片免费观看视频| 亚洲四区| 国产精品乱码一区二区三区| 大香蕉婷婷五月天| 狠狠撸在线| 黄色一级片免费在线观看| 柠檬AV导航| 亚洲AV中文| 摸BBB槡BBBB搡BBB,,,,,| 永久久久久久久| 岛国免费av| 成人A片在线播放| 一区二区三区精品无码| 成人H动漫精品一区二区三区蘑菇| 手机毛片在线播放| 黄色视频毛片一一| 青青久操| 黄色大片中国一级片-免费看特一级片-亚洲黄色AV | 免费在线观看Av| 欧美午夜精品成人片在线播放| 神马午夜福利| 国产91无码精品秘入口| 巜痴漢電車~凌脔版2| 91中文字幕| 丁香六月色| 五月天欧美性爱| 最新AV在线播放| 成熟的国模冰莲[2]| 老司机免费福利视频| 怡春院熟女精品AV| 91天天爽| 人人射人人| 一级黄色av| 日韩AV无码一区二区三区| 精品欧美一区二区三区| 国产午夜成人视频| 影音先锋av资源网站| 国产精品美女| yjizz视频网| 2017天天干| 亚洲一线在线观看| 影音先锋男人资源网| 国产十八岁在线观看| 99热在线观看精品| 亚洲天堂视频在线观看免费| 免费观看毛片| 99久免费视频| 天天日天天射天天操| 日韩操逼一区|