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

通過 ftrace 來分析 Linux 內核

系統 Linux
在之前的文章里我介紹了如何使用 strace 來追蹤系統調用。然而,使用 strace 時你的視野是有限的。它允許你查看特定參數的系統調用。并在工作完成后,看到其返回值或狀態,以表明是成功還是失敗。但是你無法知道內核在這段時間內發生了什么。除了系統調用外,還有很多......

[[421874]]

通過 ftrace 來了解 Linux 內核內部工作方式是一個好方法。

操作系統的內核是最難以理解的軟件之一。自從你的系統啟動后,它會一直在后臺運行。盡管每個用戶都不與內核直接交互,但他們在內核的幫助下完成自己的計算任務。與內核的交互發生在調用系統調用或者用戶日常使用的各種庫或應用間接調用了系統調用。

在之前的文章里我介紹了如何使用 strace 來追蹤系統調用。然而,使用 strace 時你的視野是有限的。它允許你查看特定參數的系統調用。并在工作完成后,看到其返回值或狀態,以表明是成功還是失敗。但是你無法知道內核在這段時間內發生了什么。除了系統調用外,還有很多其他活動內核中發生,而你卻視而不見。

ftrace 介紹

本文的旨在通過使用一個名為 ftrace 的機制來闡明追蹤內核函數的一些情況。它使得任何 Linux 用戶可以輕松地追蹤內核,并且了解更多關于 Linux 內核內部如何工作。

ftrace 默認產生的輸出往往是巨大的,因為內核總是忙碌的。為了節省空間,很多情況下我會通過截斷來給出盡量小的輸出。

我使用 Fedora 來演示下面的例子,但是它們應該在其他最新的 Linux 發行版上同樣可以運行。

啟用 ftrace

ftrace 現在已經是內核中的一部分了,你不再需要事先安裝它了。也就是說,如果你在使用最近的 Linux 系統,那么 ftrace 是已經啟用了的。為了驗證 ftrace 是否可用,運行 mount 命令并查找 tracefs。如果你看到類似下面的輸出,表示 ftrace 已經啟用,你可以輕松地嘗試本文中下面的例子。下面有些命令需要在 root 用戶下使用(用 sudo 執行是不夠的)。

  1. # mount | grep tracefs
  2. none on /sys/kernel/tracing type tracefs (rw,relatime,seclabel)

要想使用 ftrace,你首先需要進入上面 mount 命令中找到的特定目錄中,在那個目錄下運行文章中的其他命令。

  1. # cd /sys/kernel/tracing

一般的工作流程

首先,你需要理解捕捉蹤跡和獲取輸出的一般流程。如果你直接運行 ftrace,不會運行任何特定的 ftrace 命令。相反的,基本操作是通過標準 Linux 命令來寫入或讀取一些文件。

一般的步驟如下:

  1. 通過寫入一些特定文件來啟用/結束追蹤
  2. 通過寫入一些特定文件來設置/取消追蹤時的過濾規則
  3. 從文件中讀取基于第 1 和 2 步的追蹤輸出
  4. 從文件中清除早期輸出或緩沖區
  5. 縮小到你的特定用例(你要追蹤的內核函數),重復 1、2、3、4 步

可用的追蹤器類型

有多種不同的追蹤器可供使用。之前提到,在運行任何命令前,你需要進入一個特定的目錄下,因為需要的文件在這些目錄下。我在我的例子中使用了相對路徑(而不是絕對路徑)。

你可以查看 available_tracers 文件內容來查看所有可用的追蹤器類型。你可以看下面列出了幾個。不需要擔心這些:

  1. $ pwd
  2. /sys/kernel/tracing
  3.  
  4. $ sudo cat available_tracers
  5. hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeup function nop

在所有輸出的追蹤器中,我會聚焦于下面三個特殊的:啟用追蹤的 function 和 function_graph,以及停止追蹤的 nop

確認當前的追蹤器

通常情況默認的追蹤器設定為 nop。即在特殊文件中 current_tracer 中的 “無操作”,這意味著追蹤目前是關閉的:

  1. $ pwd
  2. /sys/kernel/tracing
  3.  
  4. $ sudo cat current_tracer
  5. nop

查看追蹤輸出

在啟用任何追蹤功能之前,請你看一下保存追蹤輸出的文件。你可以用 cat 命令查看名為 trace 的文件的內容:

  1. # cat trace
  2.  
  3. # tracer: nop
  4. #
  5. # entries-in-buffer/entries-written: 0/0 #P:8
  6. #
  7. # _-----=> irqs-off
  8. # / _----=> need-resched
  9. # | / _---=> hardirq/softirq
  10. # || / _--=> preempt-depth
  11. # ||| / delay
  12. # TASK-PID CPU# |||| TIMESTAMP FUNCTION
  13. # | | | |||| | |

啟用 function 追蹤器

你可以通過向 current_tracer 文件寫入 function 來啟用第一個追蹤器 function(文件原本內容為 nop,意味著追蹤是關閉的)。把這個操作看成是啟用追蹤的一種方式:

  1. $ pwd
  2. /sys/kernel/tracing
  3.  
  4. $ sudo cat current_tracer
  5. nop
  6. $ echo function > current_tracer
  7. $
  8. $ cat current_tracer
  9. function

查看 function 追蹤器的更新追蹤輸出

現在你已啟用追蹤,是時候查看輸出了。如果你查看 trace 文件內容,你將會看到許多被連續寫入的內容。我通過管道只展示了文件內容的前 20 行。根據左邊輸出的標題,你可以看到在某個 CPU 上運行的任務和進程 ID。根據右邊輸出的內容,你可以看到具體的內核函數和其父函數。中間顯示了時間戳信息:

  1. # sudo cat trace | head -20
  2.  
  3. # tracer: function
  4. #
  5. # entries-in-buffer/entries-written: 409936/4276216 #P:8
  6. #
  7. # _-----=> irqs-off
  8. # / _----=> need-resched
  9. # | / _---=> hardirq/softirq
  10. # || / _--=> preempt-depth
  11. # ||| / delay
  12. # TASK-PID CPU# |||| TIMESTAMP FUNCTION
  13. # | | | |||| | |
  14. <idle>-0 [000] d... 2088.841739: tsc_verify_tsc_adjust <-arch_cpu_idle_enter
  15. <idle>-0 [000] d... 2088.841739: local_touch_nmi <-do_idle
  16. <idle>-0 [000] d... 2088.841740: rcu_nocb_flush_deferred_wakeup <-do_idle
  17. <idle>-0 [000] d... 2088.841740: tick_check_broadcast_expired <-do_idle
  18. <idle>-0 [000] d... 2088.841740: cpuidle_get_cpu_driver <-do_idle
  19. <idle>-0 [000] d... 2088.841740: cpuidle_not_available <-do_idle
  20. <idle>-0 [000] d... 2088.841741: cpuidle_select <-do_idle
  21. <idle>-0 [000] d... 2088.841741: menu_select <-do_idle
  22. <idle>-0 [000] d... 2088.841741: cpuidle_governor_latency_req <-menu_select

請記住當追蹤打開后,這意味著追蹤結果會被一直連續寫入直至你關閉追蹤。

關閉追蹤

關閉追蹤是簡單的。你只需要在 current_tracer 文件中用 nop 替換 function 追蹤器即可:

  1. $ sudo cat current_tracer
  2. function
  3.  
  4. $ sudo echo nop > current_tracer
  5.  
  6. $ sudo cat current_tracer
  7. nop

啟用 function_graph 追蹤器

現在嘗試第二個名為 function_graph 的追蹤器。你可以使用和上面相同的步驟:在 current_tracer 文件中寫入 function_graph

  1. $ sudo echo function_graph > current_tracer
  2.  
  3. $ sudo cat current_tracer
  4. function_graph

function_tracer 追蹤器的追蹤輸出

注意到目前 trace 文件的輸出格式已經發生變化。現在,你可以看到 CPU ID 和內核函數的執行時長。接下來,一個花括號表示一個函數的開始,以及它內部調用了哪些其他函數:

  1. # cat trace | head -20
  2.  
  3. # tracer: function_graph
  4. #
  5. # CPU DURATION FUNCTION CALLS
  6. # | | | | | | |
  7. 6) | n_tty_write() {
  8. 6) | down_read() {
  9. 6) | __cond_resched() {
  10. 6) 0.341 us | rcu_all_qs();
  11. 6) 1.057 us | }
  12. 6) 1.807 us | }
  13. 6) 0.402 us | process_echoes();
  14. 6) | add_wait_queue() {
  15. 6) 0.391 us | _raw_spin_lock_irqsave();
  16. 6) 0.359 us | _raw_spin_unlock_irqrestore();
  17. 6) 1.757 us | }
  18. 6) 0.350 us | tty_hung_up_p();
  19. 6) | mutex_lock() {
  20. 6) | __cond_resched() {
  21. 6) 0.404 us | rcu_all_qs();
  22. 6) 1.067 us | }

啟用追蹤的設置來增加追蹤的深度

你可以使用下面的步驟來調整追蹤器以看到更深層次的函數調用。完成之后,你可以查看 trace 文件的內容并發現輸出變得更加詳細了。為了文章的可讀性,這個例子的輸出被省略了:

  1. # cat max_graph_depth
  2. 0
  3.  
  4. # echo 1 > max_graph_depth ## or:
  5. # echo 2 > max_graph_depth
  6.  
  7. # sudo cat trace

查找要追蹤的函數

上面的步驟足以讓你開始追蹤。但是它產生的輸出內容是巨大的,當你想試圖找到自己感興趣的內容時,往往會很困難。通常你更希望能夠只追蹤特定的函數,而忽略其他函數。但如果你不知道它們確切的名稱,你怎么知道要追蹤哪些進程?有一個文件可以幫助你解決這個問題 —— available_filter_functions 文件提供了一個可供追蹤的函數列表:

  1. $ sudo wc -l available_filter_functions  
  2. 63165 available_filter_functions

查找一般的內核函數

現在試著搜索一個你所知道的簡單內核函數。用戶空間由 malloc 函數用來分配內存,而內核由 kmalloc 函數,它提供類似的功能。下面是所有與 kmalloc 相關的函數:

  1. $ sudo grep kmalloc available_filter_functions
  2. debug_kmalloc
  3. mempool_kmalloc
  4. kmalloc_slab
  5. kmalloc_order
  6. kmalloc_order_trace
  7. kmalloc_fix_flags
  8. kmalloc_large_node
  9. __kmalloc
  10. __kmalloc_track_caller
  11. __kmalloc_node
  12. __kmalloc_node_track_caller
  13. [...]

查找內核模塊或者驅動相關函數

在 available_filter_functions 文件的輸出中,你可以看到一些以括號內文字結尾的行,例如下面的例子中的 [kvm_intel]。這些函數與當前加載的內核模塊 kvm_intel 有關。你可以運行 lsmod 命令來驗證:

  1. $ sudo grep kvm available_filter_functions | tail
  2. __pi_post_block [kvm_intel]
  3. vmx_vcpu_pi_load [kvm_intel]
  4. vmx_vcpu_pi_put [kvm_intel]
  5. pi_pre_block [kvm_intel]
  6. pi_post_block [kvm_intel]
  7. pi_wakeup_handler [kvm_intel]
  8. pi_has_pending_interrupt [kvm_intel]
  9. pi_update_irte [kvm_intel]
  10. vmx_dump_dtsel [kvm_intel]
  11. vmx_dump_sel [kvm_intel]
  12.  
  13. $ lsmod  | grep -i kvm
  14. kvm_intel             335872  0
  15. kvm                   987136  1 kvm_intel
  16. irqbypass              16384  1 kvm

僅追蹤特定的函數

為了實現對特定函數或模式的追蹤,你可以利用 set_ftrace_filter 文件來指定你要追蹤上述輸出中的哪些函數。這個文件也接受 * 模式,它可以擴展到包括具有給定模式的其他函數。作為一個例子,我在我的機器上使用 ext4 文件系統。我可以用下面的命令指定 ext4 的特定內核函數來追蹤:

  1. # mount | grep home
  2. /dev/mapper/fedora-home on /home type ext4 (rw,relatime,seclabel)
  3.  
  4. # pwd
  5. /sys/kernel/tracing
  6.  
  7. # cat set_ftrace_filter
  8.  
  9. #### all functions enabled ####
  10. $
  11. $ echo ext4_* > set_ftrace_filter
  12. $
  13. $ cat set_ftrace_filter
  14. ext4_has_free_clusters
  15. ext4_validate_block_bitmap
  16. ext4_get_group_number
  17. ext4_get_group_no_and_offset
  18. ext4_get_group_desc
  19. [...]

現在當你可以看到追蹤輸出時,你只能看到與內核函數有關的 ext4 函數,而你之前已經為其設置了一個過濾器。所有其他的輸出都被忽略了:

  1. # cat trace |head -20
  2.  
  3. ## tracer: function
  4. #
  5. # entries-in-buffer/entries-written: 3871/3871 #P:8
  6. #
  7. # _-----=> irqs-off
  8. # / _----=> need-resched
  9. # | / _---=> hardirq/softirq
  10. # || / _--=> preempt-depth
  11. # ||| / delay
  12. # TASK-PID CPU# |||| TIMESTAMP FUNCTION
  13. # | | | |||| | |
  14. cupsd-1066 [004] .... 3308.989545: ext4_file_getattr <-vfs_fstat
  15. cupsd-1066 [004] .... 3308.989547: ext4_getattr <-ext4_file_getattr
  16. cupsd-1066 [004] .... 3308.989552: ext4_file_getattr <-vfs_fstat
  17. cupsd-1066 [004] .... 3308.989553: ext4_getattr <-ext4_file_getattr
  18. cupsd-1066 [004] .... 3308.990097: ext4_file_open <-do_dentry_open
  19. cupsd-1066 [004] .... 3308.990111: ext4_file_getattr <-vfs_fstat
  20. cupsd-1066 [004] .... 3308.990111: ext4_getattr <-ext4_file_getattr
  21. cupsd-1066 [004] .... 3308.990122: ext4_llseek <-ksys_lseek
  22. cupsd-1066 [004] .... 3308.990130: ext4_file_read_iter <-new_sync_read

排除要被追蹤的函數

你并不總是知道你想追蹤什么,但是,你肯定知道你不想追蹤什么。因此,有一個 set_ftrace_notrace —— 請注意其中的 “no”。你可以在這個文件中寫下你想要的模式,并啟用追蹤。這樣除了所提到的模式外,任何其他東西都會被追蹤到。這通常有助于刪除那些使我們的輸出變得混亂的普通功能:

  1. $ sudo cat set_ftrace_notrace
  2. #### no functions disabled ####

具有目標性的追蹤

到目前為止,你一直在追蹤內核中發生的一切。但是,它無法幫助你追蹤與某個特定命令有關的事件。為了達到這個目的,你可以按需打開和關閉跟蹤,并且在它們之間,運行我們選擇的命令,這樣你就不會在跟蹤輸出中得到額外的輸出。你可以通過向 tracing_on 寫入 1 來啟用跟蹤,寫 0 來關閉跟蹤。

  1. # cat tracing_on
  2. 0
  3.  
  4. # echo 1 > tracing_on
  5.  
  6. # cat tracing_on
  7. 1
  8.  
  9. ### Run some specific command that we wish to trace here ###
  10.  
  11. # echo 0 > tracing_on
  12.  
  13. # cat tracing_on
  14. 0

追蹤特定的 PID

如果你想追蹤與正在運行的特定進程有關的活動,你可以將該 PID 寫入一個名為 set_ftrace_pid 的文件,然后啟用追蹤。這樣一來,追蹤就只限于這個 PID,這在某些情況下是非常有幫助的。

  1. $ sudo echo $PID > set_ftrace_pid

總結

ftrace 是一個了解 Linux 內核內部工作的很好方式。通過一些練習,你可以學會對 ftrace 進行調整以縮小搜索范圍。要想更詳細地了解 ftrace 和它的高級用法,請看 ftrace 的核心作者 Steven Rostedt 寫的這些優秀文章。

 

 

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

2025-04-01 02:00:22

2018-01-24 18:51:39

Linuxftrace內核函數

2025-08-04 02:15:00

2014-07-29 15:44:33

Linux內核Crash

2024-03-15 08:54:59

Linux內核NUMA

2021-09-28 07:12:09

Linux內核入口

2017-08-16 16:20:01

Linux內核態搶占用戶態搶占

2016-09-26 13:50:52

Linux系統性能

2021-09-27 09:52:41

FacebookBOLTLinux

2019-04-29 11:14:25

MySQL存儲排序

2017-03-17 15:05:05

Linux內核源碼do_fork

2009-12-11 15:10:22

2013-11-20 10:48:47

Linux內核GRUB內核參數

2023-09-06 14:46:37

2009-08-09 20:39:11

Linux內核虛擬環境虛擬主機

2023-04-28 08:42:08

Linux內核SPI驅動

2020-11-12 08:26:38

Linux內核Unsigned Lo

2020-10-15 11:18:13

Linux內核虛擬機

2021-02-20 06:08:07

LinuxWindows內核

2013-06-19 13:02:26

點贊
收藏

51CTO技術棧公眾號

日日av拍夜夜添久久免费| 97人妻精品一区二区三区视频| 一本色道69色精品综合久久| 亚洲成av人片一区二区| 久久免费看av| 中文字幕网址在线| 自拍偷拍欧美| 日韩经典一区二区三区| 日韩视频免费在线播放| a视频在线观看免费| 高清国产一区二区| 日韩av日韩在线观看| 天天鲁一鲁摸一摸爽一爽| 亚洲午夜精品| 色乱码一区二区三区88| 亚洲天堂第一区| 水中色av综合| 国内外成人在线| 欧美一级视频一区二区| 中文字幕在线观看二区| 欧美电影完整版在线观看| 欧美色视频在线观看| 日本欧美视频在线观看| 日本在线视频观看| 久久综合成人精品亚洲另类欧美| 国产精品美女午夜av| 日韩黄色a级片| 亚洲成人精选| 中文字幕日韩综合av| 黄色国产在线视频| 国产精品一区二区三区www| 日韩欧美高清视频| 国产一级片91| 亚洲www视频| 精品人妻伦九区久久aaa片| 婷婷激情久久| 欧美不卡一区二区三区四区| 黄色永久免费网站| 波多野结衣亚洲| 亚洲风情在线资源站| eeuss中文| yourporn在线观看视频| 91视频观看视频| 大波视频国产精品久久| 国产乱码精品一区二区| 麻豆国产一区二区| 国产精品久久久久久婷婷天堂| 日韩av女优在线观看| 欧美高清日韩| 欧美不卡视频一区发布| 九一在线免费观看| 欧美码中文字幕在线| 亚洲男人天堂2023| 亚洲人人夜夜澡人人爽| 国产成人tv| 精品女同一区二区| 中文字幕乱妇无码av在线| 91亚洲精品在看在线观看高清| 欧美日韩精品电影| 在线观看亚洲色图| 激情久久一区二区| 欧美丝袜自拍制服另类| 狠狠躁夜夜躁人人爽天天天天97 | av在线精品| 欧洲av一区二区嗯嗯嗯啊| 又色又爽又高潮免费视频国产| 天堂av在线| 日韩欧美国产一区二区| 国产精彩免费视频| 日韩欧美一区二区三区在线观看 | 亚洲伊人影院| 精品久久久久久久久久久久包黑料| 97超碰人人看| jizz性欧美23| 亚洲精品视频中文字幕| 91精品国自产在线| 亚洲草久电影| 久久久久久久久久久久av| 日韩字幕在线观看| 久久久久久黄| 国产精自产拍久久久久久| 亚洲自拍第二页| 国产精品一二三区在线| 国产亚洲欧美另类一区二区三区| 亚洲色图狠狠干| 欧美国产丝袜视频| 男女爱爱视频网站| av在线小说| 一本大道久久a久久精二百| 邪恶网站在线观看| 大香伊人久久精品一区二区| 亚洲欧美色婷婷| 极品美妇后花庭翘臀娇吟小说| 中文在线日韩| 欧美最猛黑人xxxx黑人猛叫黄| 看黄色一级大片| 国产成人一区在线| 欧美性色黄大片人与善| 久草免费在线观看| 偷窥少妇高潮呻吟av久久免费| 中文字幕第36页| 538任你躁精品视频网免费| 亚洲乱码一区av黑人高潮| 免费成人深夜蜜桃视频| 伊人久久久大香线蕉综合直播| 日本伊人精品一区二区三区介绍| 99久久精品日本一区二区免费 | 欧美视频一区二区三区| 日本中文字幕有码| 国产一区二区三区日韩精品 | 午夜影视一区二区三区| 欧美精品777| free性中国hd国语露脸| 91成人精品| 国产成人激情小视频| 亚洲欧美激情另类| 欧美国产欧美综合| 青青草精品视频在线| 日韩精品一页| 亚洲欧美日韩直播| 国产性一乱一性一伧一色| 日本少妇一区二区| 久中文字幕一区| 青青青国内视频在线观看软件| 欧美日韩一二区| 日本少妇色视频| 亚洲成色精品| 91久久极品少妇xxxxⅹ软件 | 日韩三级av高清片| 中文字幕日韩欧美在线| 亚洲自拍一区在线观看| www.亚洲精品| 91网站在线观看免费| **国产精品| 国产亚洲xxx| 亚洲GV成人无码久久精品| 成人18视频日本| 高清无码视频直接看| 91久久青草| 久久亚洲精品一区| 91久久精品无码一区二区| 久久久久久久综合色一本| 国产九九九九九| 国产成人高清精品免费5388| 欧美高清第一页| 亚洲精品一区二区三区不卡| 自拍偷拍亚洲欧美日韩| 夜夜夜夜夜夜操| 日韩欧美电影| 国产欧美日韩中文字幕| 最新国产在线观看| 欧美日韩在线播放三区四区| 天天操天天舔天天射| 日韩av一二三| 亚洲最新在线| 伊人久久大香线蕉综合影院首页| 久久精品人人做人人爽| 国产免费黄色录像| 一区二区三区在线观看国产| 交换做爰国语对白| 欧美三级在线| 国产一区二区三区奇米久涩| av手机在线观看| 欧美精品一区二区三区高清aⅴ| 国产精品.www| 91伊人久久大香线蕉| 国产精品沙发午睡系列| 国产欧美日韩免费观看| 国产精品久久久久999| aaa在线免费观看| 91精品蜜臀在线一区尤物| 一本一本久久a久久| 国产毛片精品视频| 日韩中文字幕在线免费| 精品一区三区| 国产在线观看不卡| 女人天堂av在线播放| 日韩精品欧美国产精品忘忧草 | 日本天码aⅴ片在线电影网站| 精品国产一区a| 精品人妻一区二区色欲产成人| 亚洲国产精品t66y| 手机在线观看日韩av| 在线精品一区| 日本一区视频在线播放| 国产一区二区av在线| 97超碰国产精品女人人人爽| jizzjizz在线观看| 欧美一级生活片| 国产超碰人人爽人人做人人爱| 久久蜜桃av一区精品变态类天堂| 在线观看免费av网址| 91久久午夜| 亚洲国产精品毛片| 激情视频极品美女日韩| 国产精品永久免费观看| 国产精品一区hongkong| 一区二区三欧美| 亚洲经典一区二区三区| 日本乱人伦一区| 免费在线观看av网址| 国产人妖乱国产精品人妖| 潘金莲一级淫片aaaaa| 日韩二区在线观看| 一二三四视频社区在线| 天天射天天综合网| 欧美日韩在线播放一区二区| 久久的色偷偷| 国产精品成人免费视频| 日韩三级电影视频| 色综合伊人色综合网| 日中文字幕在线| 日韩一区二区三区三四区视频在线观看| 日韩在线视频免费播放| 一区二区三区在线观看视频| 长河落日免费高清观看| 91免费版在线| 制服丝袜在线第一页| 狠狠狠色丁香婷婷综合激情 | 亚洲精品中文字幕| 欧美床上激情在线观看| 国产福利片在线| 亚洲精品福利在线| 精品久久久无码中文字幕| 在线观看成人小视频| 少妇一级淫片免费放中国| 一区二区三区中文字幕| 娇小11一12╳yⅹ╳毛片| 久久色在线视频| 青青草视频网站| 国产成人久久精品77777最新版本| 无限资源日本好片| 欧美一级网站| 九色在线视频观看| 亚洲激情在线| 国产高清不卡无码视频| 91精品一区国产高清在线gif | 久热国产精品视频| 日本少妇bbwbbw精品| 亚洲精品国产第一综合99久久| 污污视频网站在线免费观看| 国产午夜久久久久| 成人免费毛片日本片视频| 成人午夜伦理影院| www.四虎精品| 粉嫩av一区二区三区| 久久久久亚洲av片无码v| 激情欧美日韩一区二区| 欧美日韩理论片| 国产乱码精品一品二品| 亚洲天堂伊人网| 国内精品自线一区二区三区视频| 99九九99九九九99九他书对| 六月丁香综合在线视频| av亚洲天堂网| 久久99久久久久久久久久久| 中文字幕在线观看日| 国产一区 二区 三区一级| 精品国产乱码久久久久久1区二区| 国产一区二区福利| 永久看看免费大片| 国产九色精品成人porny| 国产资源中文字幕| 成人动漫中文字幕| 蜜桃精品成人影片| 国产欧美日韩久久| 国产天堂av在线| 亚洲一区二区中文在线| 91精品国产乱码久久久张津瑜| 福利视频第一区| 国产91av在线播放| 5566中文字幕一区二区电影| 国产激情视频在线播放| 亚洲国产成人精品久久| 欧美色图另类| 中文字幕日韩欧美在线| 中文字幕在线播放网址| 2018中文字幕一区二区三区| 怡红院成人在线| 亚洲自拍另类欧美丝袜| 美腿丝袜亚洲图片| 清纯唯美一区二区三区| 2023国产精品久久久精品双| 国产精品久久久久久久乖乖| 快she精品国产999| 国产欧美激情视频| 91香蕉视频污在线| 极品美妇后花庭翘臀娇吟小说| 亚洲已满18点击进入久久| 久久久久久不卡| 91精品国产色综合久久不卡电影 | 日韩久久久久久久久久久久久| 国产高清一区二区| 草b视频在线观看| 男男视频亚洲欧美| 欧美精品二区三区四区免费看视频 | 国产精品啪视频| 久久的色偷偷| 欧美一区二区三区成人久久片| 国产精品成人一区二区不卡| 久久国产成人精品国产成人亚洲| 麻豆成人91精品二区三区| 成熟妇人a片免费看网站| 国产片一区二区三区| 久久久精品人妻一区二区三区四 | 美女av一区二区三区| 最新中文字幕在线播放| 99精品国产高清一区二区| 奇米狠狠一区二区三区| 97免费视频观看| 美女性感视频久久| 亚洲精品乱码久久久久久不卡 | 在线观看成人毛片| 日本道免费精品一区二区三区| 亚洲春色一区二区三区| 在线日韩第一页| 三妻四妾完整版在线观看电视剧| 亚洲va码欧洲m码| 欧美日韩精品在线一区| 人妻熟妇乱又伦精品视频| 国产一区二区三区精品视频| 无码一区二区三区在线| 精品日本高清在线播放| 精品乱子伦一区二区| 色偷偷88888欧美精品久久久| 成人性生交大片免费网站| 国产精品毛片一区视频| 午夜精品av| 岛国av免费在线| 国产精品美女久久久久久久久久久 | 极品美女一区二区三区| 欧美啪啪免费视频| 国产成人精品综合在线观看 | 天天综合天天综合色| 精品国产av鲁一鲁一区| 久久香蕉国产线看观看av| 玖玖精品在线| 水蜜桃亚洲精品| 日韩激情av在线| 色婷婷在线影院| 日韩欧美成人精品| 亚洲人在线观看视频| 欧美性在线视频| 青青久久av| 97国产精东麻豆人妻电影| 97久久超碰国产精品| 日韩av免费网址| 日韩国产在线看| 26uuu亚洲电影| 蜜桃日韩视频| 免费在线成人| 日韩毛片无码永久免费看| 色欲综合视频天天天| 亚洲a成v人在线观看| 久久久久97| 国产深夜男女无套内射| www.亚洲色图| 亚洲va在线观看| 亚洲性xxxx| 久久久久久久性潮| 热这里只有精品| 国内一区二区在线| 精品少妇久久久| 亚洲成人国产精品| 中文在线аv在线| 日本视频一区二区在线观看| 麻豆成人久久精品二区三区红 | 男人天堂网在线视频| 久久青草精品视频免费观看| 日韩aaa久久蜜桃av| 久久久久久香蕉| 最近日韩中文字幕| 丰满人妻一区二区三区免费视频| 97视频国产在线| 欧美日韩有码| 99中文字幕在线| 亚洲成人免费影院| 韩国三级在线观看久| 国产在线久久久| 黄色精品免费| 一道本在线观看| 欧美一级生活片| 成人高潮aa毛片免费| 欧美另类一区| 国产一区二区三区免费看| 国产乡下妇女做爰视频| 国产亚洲在线播放| 精品午夜视频| 欧美污视频网站| 日韩码欧中文字| 人妻少妇精品无码专区久久| 国产精品久久久久久久久久免费 | 久久天天躁狠狠躁夜夜av| 福利在线一区| 亚洲一级免费观看| 亚洲妇熟xx妇色黄| 一本一道波多野毛片中文在线| 成人免费看片网址| 欧美96一区二区免费视频| 国产精品99精品|