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

ftrace:跟蹤你的內核函數!

系統 Linux
ftrace 是一個 Linux 內核特性,它可以讓你去跟蹤 Linux 內核的函數調用。為什么要這么做呢?好吧,假設你調試一個奇怪的問題,而你已經得到了你的內核版本中這個問題在源代碼中的開始的位置,而你想知道這里到底發生了什么?

[[218222]]

大家好!今天我們將去討論一個調試工具:ftrace,之前我的博客上還沒有討論過它。還有什么能比一個新的調試工具更讓人激動呢?

這個非常棒的 ftrace 并不是個新的工具!它大約在 Linux 的 2.6 內核版本中就有了,時間大約是在 2008 年。這一篇是我用谷歌能找到的最早的文檔。因此,如果你是一個調試系統的“老手”,可能早就已經使用它了!

我知道,ftrace 已經存在了大約 2.5 年了(LCTT 譯注:距本文初次寫作時),但是還沒有真正的去學習它。假設我明天要召開一個專題研究會,那么,關于 ftrace 應該討論些什么?因此,今天是時間去討論一下它了!

 

什么是 ftrace?

ftrace 是一個 Linux 內核特性,它可以讓你去跟蹤 Linux 內核的函數調用。為什么要這么做呢?好吧,假設你調試一個奇怪的問題,而你已經得到了你的內核版本中這個問題在源代碼中的開始的位置,而你想知道這里到底發生了什么?

每次在調試的時候,我并不會經常去讀內核源代碼,但是,極個別的情況下會去讀它!例如,本周在工作中,我有一個程序在內核中卡死了。查看到底是調用了什么函數,能夠幫我更好的理解在內核中發生了什么,哪些系統涉及其中!(在我的那個案例中,它是虛擬內存系統)。

我認為 ftrace 是一個十分好用的工具(它肯定沒有 strace 那樣使用廣泛,也比它難以使用),但是它還是值得你去學習。因此,讓我們開始吧!

 

使用 ftrace 的***步

不像 straceperf,ftrace 并不是真正的 程序 – 你不能只運行 ftrace my_cool_function。那樣太容易了!

如果你去讀 使用 ftrace 調試內核,它會告訴你從 cd /sys/kernel/debug/tracing 開始,然后做很多文件系統的操作。

對于我來說,這種辦法太麻煩——一個使用 ftrace 的簡單例子像是這樣:

  1. cd /sys/kernel/debug/tracing
  2. echo function > current_tracer
  3. echo do_page_fault > set_ftrace_filter
  4. cat trace

這個文件系統是跟蹤系統的接口(“給這些神奇的文件賦值,然后該發生的事情就會發生”)理論上看起來似乎可用,但是它不是我的***方式。

幸運的是,ftrace 團隊也考慮到這個并不友好的用戶界面,因此,它有了一個更易于使用的界面,它就是 trace-cmd!!!trace-cmd 是一個帶命令行參數的普通程序。我們后面將使用它!我在 LWN 上找到了一個 trace-cmd 的使用介紹:trace-cmd: Ftrace 的一個前端

 

開始使用 trace-cmd:讓我們僅跟蹤一個函數

首先,我需要去使用 sudo apt-get install trace-cmd 安裝 trace-cmd,這一步很容易。

對于***個 ftrace 的演示,我決定去了解我的內核如何去處理一個頁面故障。當 Linux 分配內存時,它經常偷懶,(“你并不是真的計劃去使用內存,對嗎?”)。這意味著,當一個應用程序嘗試去對分配給它的內存進行寫入時,就會發生一個頁面故障,而這個時候,內核才會真正的為應用程序去分配物理內存。

我們開始使用 trace-cmd 并讓它跟蹤 do_page_fault 函數!

  1. $ sudo trace-cmd record -p function -l do_page_fault
  2. plugin 'function'
  3. Hit Ctrl^C to stop recording

我將它運行了幾秒鐘,然后按下了 Ctrl+C。 讓我大吃一驚的是,它竟然產生了一個 2.5MB 大小的名為 trace.dat 的跟蹤文件。我們來看一下這個文件的內容!

  1. $ sudo trace-cmd report
  2. chrome-15144 [000] 11446.466121: function: do_page_fault
  3. chrome-15144 [000] 11446.467910: function: do_page_fault
  4. chrome-15144 [000] 11446.469174: function: do_page_fault
  5. chrome-15144 [000] 11446.474225: function: do_page_fault
  6. chrome-15144 [000] 11446.474386: function: do_page_fault
  7. chrome-15144 [000] 11446.478768: function: do_page_fault
  8. CompositorTileW-15154 [001] 11446.480172: function: do_page_fault
  9. chrome-1830 [003] 11446.486696: function: do_page_fault
  10. CompositorTileW-15154 [001] 11446.488983: function: do_page_fault
  11. CompositorTileW-15154 [001] 11446.489034: function: do_page_fault
  12. CompositorTileW-15154 [001] 11446.489045: function: do_page_fault
  13.  

看起來很整潔 – 它展示了進程名(chrome)、進程 ID(15144)、CPU ID(000),以及它跟蹤的函數。

通過察看整個文件,(sudo trace-cmd report | grep chrome)可以看到,我們跟蹤了大約 1.5 秒,在這 1.5 秒的時間段內,Chrome 發生了大約 500 個頁面故障。真是太酷了!這就是我們做的***個 ftrace!

 

下一個 ftrace 技巧:我們來跟蹤一個進程!

好吧,只看一個函數是有點無聊!假如我想知道一個程序中都發生了什么事情。我使用一個名為 Hugo 的靜態站點生成器。看看內核為 Hugo 都做了些什么事情?

在我的電腦上 Hugo 的 PID 現在是 25314,因此,我使用如下的命令去記錄所有的內核函數:

  1. sudo trace-cmd record --help # I read the help!
  2. sudo trace-cmd record -p function -P 25314 # record for PID 25314

sudo trace-cmd report 輸出了 18,000 行。如果你對這些感興趣,你可以看 這里是所有的 18,000 行的輸出

18,000 行太多了,因此,在這里僅摘錄其中幾行。

當系統調用 clock_gettime 運行的時候,都發生了什么:

  1. compat_SyS_clock_gettime
  2. SyS_clock_gettime
  3. clockid_to_kclock
  4. posix_clock_realtime_get
  5. getnstimeofday64
  6. __getnstimeofday64
  7. arch_counter_read
  8. __compat_put_timespec

這是與進程調試相關的一些東西:

  1. cpufreq_sched_irq_work
  2. wake_up_process
  3. try_to_wake_up
  4. _raw_spin_lock_irqsave
  5. do_raw_spin_lock
  6. _raw_spin_lock
  7. do_raw_spin_lock
  8. walt_ktime_clock
  9. ktime_get
  10. arch_counter_read
  11. walt_update_task_ravg
  12. exiting_task
  13.  

雖然你可能還不理解它們是做什么的,但是,能夠看到所有的這些函數調用也是件很酷的事情。

“function graph” 跟蹤

這里有另外一個模式,稱為 function_graph。除了它既可以進入也可以退出一個函數外,其它的功能和函數跟蹤器是一樣的。這里是那個跟蹤器的輸出

  1. sudo trace-cmd record -p function_graph -P 25314

同樣,這里只是一個片斷(這次來自 futex 代碼):

  1. | futex_wake() {
  2. | get_futex_key() {
  3. | get_user_pages_fast() {
  4. 1.458 us | __get_user_pages_fast();
  5. 4.375 us | }
  6. | __might_sleep() {
  7. 0.292 us | ___might_sleep();
  8. 2.333 us | }
  9. 0.584 us | get_futex_key_refs();
  10. | unlock_page() {
  11. 0.291 us | page_waitqueue();
  12. 0.583 us | __wake_up_bit();
  13. 5.250 us | }
  14. 0.583 us | put_page();
  15. + 24.208 us | }

我們看到在這個示例中,在 futex_wake 后面調用了 get_futex_key。這是在源代碼中真實發生的事情嗎?我們可以檢查一下!!這里是在 Linux 4.4 中 futex_wake 的定義 (我的內核版本是 4.4)。

為節省時間我直接貼出來,它的內容如下:

  1. static int
  2. futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
  3. {
  4. struct futex_hash_bucket *hb;
  5. struct futex_q *this, *next;
  6. union futex_key key = FUTEX_KEY_INIT;
  7. int ret;
  8. WAKE_Q(wake_q);
  9.  
  10. if (!bitset)
  11. return -EINVAL;
  12.  
  13. ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_READ);

如你所見,在 futex_wake 中的***個函數調用真的是 get_futex_key! 太棒了!相比閱讀內核代碼,閱讀函數跟蹤肯定是更容易的找到結果的辦法,并且讓人高興的是,還能看到所有的函數用了多長時間。

 

如何知道哪些函數可以被跟蹤

如果你去運行 sudo trace-cmd list -f,你將得到一個你可以跟蹤的函數的列表。它很簡單但是也很重要。

 

***一件事:事件!

現在,我們已經知道了怎么去跟蹤內核中的函數,真是太酷了!

還有一類我們可以跟蹤的東西!有些事件與我們的函數調用并不相符。例如,你可能想知道當一個程序被調度進入或者離開 CPU 時,都發生了什么事件!你可能想通過“盯著”函數調用計算出來,但是,我告訴你,不可行!

由于函數也為你提供了幾種事件,因此,你可以看到當重要的事件發生時,都發生了什么事情。你可以使用 sudo cat /sys/kernel/debug/tracing/available_events 來查看這些事件的一個列表。 

我查看了全部的 schedswitch 事件。我并不完全知道 schedswitch 是什么,但是,我猜測它與調度有關。

  1. sudo cat /sys/kernel/debug/tracing/available_events
  2. sudo trace-cmd record -e sched:sched_switch
  3. sudo trace-cmd report

輸出如下:

  1. 16169.624862: Chrome_ChildIOT:24817 [112] S ==> chrome:15144 [120]
  2. 16169.624992: chrome:15144 [120] S ==> swapper/3:0 [120]
  3. 16169.625202: swapper/3:0 [120] R ==> Chrome_ChildIOT:24817 [112]
  4. 16169.625251: Chrome_ChildIOT:24817 [112] R ==> chrome:1561 [112]
  5. 16169.625437: chrome:1561 [112] S ==> chrome:15144 [120]
  6.  

現在,可以很清楚地看到這些切換,從 PID 24817 -> 15144 -> kernel -> 24817 -> 1561 -> 15114。(所有的這些事件都發生在同一個 CPU 上)。

 

ftrace 是如何工作的?

ftrace 是一個動態跟蹤系統。當我們開始 ftrace 內核函數時,函數的代碼會被改變。讓我們假設去跟蹤 do_page_fault 函數。內核將在那個函數的匯編代碼中插入一些額外的指令,以便每次該函數被調用時去提示跟蹤系統。內核之所以能夠添加額外的指令的原因是,Linux 將額外的幾個 NOP 指令編譯進每個函數中,因此,當需要的時候,這里有添加跟蹤代碼的地方。

這是一個十分復雜的問題,因為,當不需要使用 ftrace 去跟蹤我的內核時,它根本就不影響性能。而當我需要跟蹤時,跟蹤的函數越多,產生的開銷就越大。

(或許有些是不對的,但是,我認為的 ftrace 就是這樣工作的)

 

更容易地使用 ftrace:brendan gregg 的工具及 kernelshark

正如我們在文件中所討論的,你需要去考慮很多的關于單個的內核函數/事件直接使用 ftrace 都做了些什么。能夠做到這一點很酷!但是也需要做大量的工作!

Brendan Gregg (我們的 Linux 調試工具“大神”)有個工具倉庫,它使用 ftrace 去提供關于像 I/O 延遲這樣的各種事情的信息。這是它在 GitHub 上全部的 perf-tools 倉庫。

這里有一個權衡,那就是這些工具易于使用,但是你被限制僅能用于 Brendan Gregg 認可并做到工具里面的方面。它包括了很多方面!:)

另一個工具是將 ftrace 的輸出可視化,做的比較好的是 kernelshark。我還沒有用過它,但是看起來似乎很有用。你可以使用 sudo apt-get install kernelshark 來安裝它。

 

一個新的超能力

我很高興能夠花一些時間去學習 ftrace!對于任何內核工具,不同的內核版本有不同的功效,我希望有一天你能發現它很有用!

 

ftrace 系列文章的一個索引

***,這里是我找到的一些 ftrace 方面的文章。它們大部分在 LWN (Linux 新聞周刊)上,它是 Linux 的一個極好的資源(你可以購買一個 訂閱!)

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-09-06 07:45:08

LinuxLinux內核

2025-04-01 02:00:22

2022-04-12 08:22:54

Linux內核操作系統

2022-10-30 10:31:42

i2ccpuftrace

2022-06-28 13:43:48

瀏覽器Chrome

2021-12-09 08:09:31

Linux內核臟頁

2025-08-04 02:15:00

2021-02-25 09:50:01

LinuxWindows內核

2022-04-29 09:00:00

Platform架構內核線程

2017-01-16 15:20:03

Linux內核Oops

2018-05-14 09:48:45

Linux內核模塊Kgotobed

2025-07-14 00:10:01

2011-04-25 16:35:06

Linux調用

2025-10-30 02:15:00

Linux工具調用棧

2015-09-11 15:56:52

內核構建Linux

2022-08-15 15:19:42

黑客漏洞智能手機

2012-04-09 14:51:31

2023-10-26 11:39:54

Linux系統CPU

2021-10-06 09:46:17

trace-cmd追蹤內核Linux

2020-03-04 12:55:13

Emacs待辦事項應用
點贊
收藏

51CTO技術棧公眾號

亚洲精品少妇30p| 日韩av电影天堂| 亚洲精品电影在线| 久草在在线视频| 欧美性天天影视| 国产成人免费视频网站高清观看视频| 久久免费少妇高潮久久精品99| 国产吞精囗交久久久| 久久91视频| 亚洲一二三专区| 秋霞毛片久久久久久久久| 国产精品亚洲lv粉色| 亚洲久色影视| y97精品国产97久久久久久| 日批视频免费看| 91国拍精品国产粉嫩亚洲一区| 一区二区在线观看不卡| 欧美午夜精品理论片a级大开眼界| 亚洲视频在线观看一区二区| 亚洲激情国产| 中文字幕亚洲第一| 大乳护士喂奶hd| 97色婷婷成人综合在线观看| 欧美性xxxxhd| 国产一级大片免费看| 国产大片在线免费观看| 成人免费高清视频在线观看| 成人免费看黄网站| 精品黑人一区二区三区| 亚洲激情偷拍| 欧美老少配视频| 青青草华人在线视频| 加勒比色综合久久久久久久久| 欧美日本一道本| 九九视频精品在线观看| 日韩脚交footjobhdboots| 亚洲精品午夜久久久| 婷婷四月色综合| 伦理片一区二区三区| 99久久er热在这里只有精品15 | 天天综合91| 日本韩国一区二区三区视频| 大陆极品少妇内射aaaaa| 日日夜夜天天综合入口| 亚洲男人电影天堂| 麻豆中文字幕在线观看| 午夜伦理在线| 国产精品久久久久7777按摩| 色就是色欧美| www亚洲人| 国产欧美精品在线观看| 日韩精品不卡| av中文在线| 国产精品免费网站在线观看| 日韩欧美亚洲在线| 二人午夜免费观看在线视频| 欧美极品xxx| 亚洲高清123| 婷婷视频在线| 亚洲色图另类专区| 超碰97在线看| a级片在线免费| 午夜精品久久久久久| 日韩av高清在线看片| 欧美aa在线| 色综合色综合色综合色综合色综合 | 欧美三级在线| 欧美精品激情在线观看| 日韩少妇高潮抽搐| 免费看的黄色欧美网站| 日本高清+成人网在线观看| 国产熟妇一区二区三区四区| 久久成人免费| 成人精品在线观看| 超碰在线观看99| 99re8在线精品视频免费播放| 欧美极品色图| 好操啊在线观看免费视频| 一区二区三区精品| 青青青国产在线观看| 欧美最新精品| 在线成人av影院| 波多野结衣办公室双飞 | 亚洲春色在线| a级片国产精品自在拍在线播放| 亚洲一区二区在线免费观看视频| 欧美日韩在线一| 欧美天堂一区| 亚洲精品一区二区三区香蕉 | 成人免费在线视频| 97碰在线视频| av在线一区不卡| 日韩欧美第一区| 国产高潮呻吟久久| 午夜国产精品视频| 日韩av片电影专区| 国产人妻精品一区二区三区| 91在线高清观看| 中文精品视频一区二区在线观看| 爱情岛亚洲播放路线| 在线欧美小视频| 熟女人妻一区二区三区免费看| 久久不见久久见免费视频7| 久久久国产一区二区| 日韩毛片一区二区三区| 黄页视频在线91| 欧美极品色图| 99色在线观看| 91精品国产综合久久香蕉的特点| 泷泽萝拉在线播放| 欧美精品三级| 国产精品视频导航| 成人久久久精品国产乱码一区二区| 国产日韩影视精品| 热99这里只有精品| 欧美a级大片在线| 在线观看精品国产视频| 日韩成年人视频| 国产一区二区三区美女| 日韩欧美视频一区二区| 免费h视频在线观看| 欧美一级二级三级蜜桃| 国产又粗又猛又爽又黄av| 亚洲精选在线| 国产成人成网站在线播放青青| 91在线直播| 日本久久精品电影| 特级西西人体4444xxxx| 国内精品久久久久久久97牛牛| 成人国产精品免费视频| 日韩伦理在线观看| 91高清视频免费看| 成人精品在线观看视频| 伊人激情综合| 成人免费看片网址| 中文字幕资源网在线观看| 欧美人妖巨大在线| 91香蕉国产视频| 七七婷婷婷婷精品国产| 日韩av不卡在线播放| 欧美成人资源| 亚洲天堂av女优| 波多野结衣二区三区| 久久精品综合网| 国产日韩一区二区在线观看| 欧美亚洲色图校园春色| 78m国产成人精品视频| 欧美一级特黄aaaaaa大片在线观看| 亚洲免费高清视频在线| 永久av免费在线观看| 亚洲一区二区| 999国内精品视频在线| 黄色片免费在线观看| 91精品蜜臀在线一区尤物| 永久av免费网站| 国精产品一区一区三区mba视频 | 91超碰免费在线| 亚洲国产成人精品久久| 欧美日韩精品区| 2017欧美狠狠色| 蜜臀久久99精品久久久酒店新书| 国产一区毛片| 国产欧美日韩亚洲精品| 九义人在线观看完整免费版电视剧| 91.成人天堂一区| 久久黄色免费网站| 99天天综合性| 91色国产在线| 亚洲啊v在线观看| av免费观看久久| 国产资源在线观看入口av| 亚洲欧美成人网| 一区二区视频网| 亚洲欧洲综合另类| 国产精品久久久久久亚洲色| 国产精品久久777777毛茸茸 | 中文成人无字幕乱码精品区| 久久99伊人| 日本成人性视频| 丁香婷婷成人| 国产精品99久久99久久久二8| 午夜视频在线免费观看| 精品久久人人做人人爱| 六月丁香婷婷综合| 中文字幕亚洲不卡| 精品1卡二卡三卡四卡老狼| 国产精品普通话对白| 一本久道久久综合狠狠爱亚洲精品| 精品国产不卡一区二区| 97久久国产精品| 最新国产在线观看| 欧美变态口味重另类| 无码人妻精品一区二区三区蜜桃91 | 深夜视频一区二区| 久热在线中文字幕色999舞| 偷拍精品一区二区三区| 欧美日韩国产精选| 日产欧产va高清| 自拍视频在线观看一区二区| 精品无码国产一区二区三区51安| 老司机精品视频导航| 奇米影视亚洲色图| 成久久久网站| 激情视频一区二区| 欧美在线se| 欧美亚洲成人网| 91最新在线视频| 亚洲网在线观看| 色综合视频在线| 欧美精品 国产精品| 亚洲精品中文字幕乱码三区91| 国产精品久99| av黄色免费网站| 成人免费的视频| 欧美在线a视频| 青青青爽久久午夜综合久久午夜| 亚洲美免无码中文字幕在线| 影音先锋日韩精品| 亚洲视频导航| 精品免费在线| 欧美日韩国产综合视频在线| 成人另类视频| 超碰97国产在线| 国产不卡精品| 成人精品视频在线| 国产精品4hu.www| 青青精品视频播放| 黄色在线免费观看网站| 欧美精品videossex88| 成年人网站在线| 日韩视频免费大全中文字幕| 岛国在线大片| 国产亚洲美女精品久久久| 天天舔天天干天天操| 精品精品国产高清一毛片一天堂| 国产情侣自拍小视频| 在线播放91灌醉迷j高跟美女| 在线观看毛片av| 欧美视频一区二区在线观看| 少妇久久久久久久| 色综合久久综合网欧美综合网 | 欧美色男人天堂| 在线免费观看av网址| 欧美性20hd另类| 少妇高潮av久久久久久| 一本久久a久久精品亚洲| 一级黄色免费网站| 欧美性猛交xxxx富婆| 日本少妇在线观看| 欧美日韩国产一区二区| 五月天婷婷久久| 一本一道久久a久久精品 | a'aaa级片在线观看| 久久久亚洲精选| 国产污视频在线播放| 欧美性视频在线| 午夜精品久久久久久久久久蜜桃| 国产成人91久久精品| 日韩经典一区| 成人乱色短篇合集| 亚洲高清在线一区| 国产午夜精品在线| 亚洲成aⅴ人片久久青草影院| 欧美亚洲另类在线一区二区三区| heyzo久久| 艳母动漫在线免费观看| 国产精品chinese| 久久久999视频| 日韩成人免费电影| 午夜不卡福利视频| 成人综合在线观看| 性欧美13一14内谢| 亚洲色图都市小说| 久久久国产成人| 欧美性猛交xxxxx水多| 亚洲一区在线观| 日韩精品中午字幕| 青梅竹马是消防员在线| 日韩视频免费在线| av在线资源| 国产精品专区一| 国产精品欧美大片| 日韩精品欧美在线| 欧美福利影院| av无码精品一区二区三区| 久久av资源网| 老司机福利av| 亚洲精品你懂的| 日本熟妇乱子伦xxxx| 欧美亚洲动漫精品| 黑人乱码一区二区三区av| 国产一区二区三区直播精品电影| 国产精品久久麻豆| 777午夜精品福利在线观看| 亚洲二区av| 欧美精品久久久| 欧美1区2区| 福利在线一区二区三区| 国产mv日韩mv欧美| 日本爱爱爱视频| 亚洲成人午夜影院| 在线观看国产成人| 日韩av在线精品| 国产在线1区| 国产精品88a∨| 精品福利一区| 福利在线小视频| 美美哒免费高清在线观看视频一区二区| 9.1在线观看免费| 亚洲视频图片小说| 无码任你躁久久久久久久| 精品国产一区二区三区忘忧草| 99青草视频在线播放视| 97免费中文视频在线观看| 亚洲青青久久| 日韩视频在线播放| 亚洲欧美日韩视频二区| 中文字幕一区二区三区人妻在线视频 | 蜜桃视频一区二区| 一区二区视频观看| 亚洲国产日韩精品| 国产激情无套内精对白视频| 精品国产一区av| 欧美天堂一区| 亚洲高清乱码| 日韩一区精品字幕| 国精品无码人妻一区二区三区| 亚洲午夜视频在线观看| av观看在线免费| 免费91在线视频| 91精品一久久香蕉国产线看观看| 先锋在线资源一区二区三区| 久久精品123| 中文字幕av网址| 色综合久久久久综合体| 四虎影视在线观看2413| 久久欧美在线电影| 国产精品99久久免费观看| 国产成a人亚洲精v品在线观看| 国产精品自拍一区| 天天干中文字幕| 日韩美一区二区三区| 久久www人成免费看片中文| 91精品黄色| 国产一区亚洲| www.美色吧.com| 香蕉乱码成人久久天堂爱免费| 国产成人手机在线| 国模叶桐国产精品一区| 日韩系列在线| 爱福利视频一区二区| 久久久av毛片精品| www.久久网| www.亚洲人.com| 国产专区精品| 全黄性性激高免费视频| 99国产精品久久久久久久久久 | 欧美日韩国产美| 麻豆传媒视频在线观看免费| 91人人爽人人爽人人精88v| 综合天天久久| xxxxxx黄色| 日本久久电影网| 国产在线观看a| 国产精品久久久久免费| 国产精品久久久久久久免费软件 | 一本色道久久综合亚洲精品按摩| 精品久久av| 成人国产精品av| 日韩五码在线| 精品人妻中文无码av在线| 91精品国产综合久久精品app| 激情网站在线| 欧美亚洲免费在线| 国模少妇一区二区三区| 国产成人愉拍精品久久| 中文字幕日韩精品在线| 天堂av一区| 日韩a在线播放| 亚洲欧美怡红院| 天堂中文资源在线观看| 国产精品一区二区3区| 欧美日韩国产色综合一二三四| 97人妻精品一区二区三区免| 欧美日韩在线直播| 国产丝袜在线观看视频| 日本福利一区二区三区| 国产剧情在线观看一区二区| 亚洲 欧美 日韩 综合| 日韩在线观看免费| 欧美jizz19性欧美| 欧美丝袜在线观看| 精品久久久久久中文字幕| 秋霞a级毛片在线看| 精品乱码一区二区三区| 狠狠色狠狠色综合| 久久久久久无码午夜精品直播| 色综合天天狠天天透天天伊人| 欧美丝袜激情| 亚洲欧美在线不卡|