色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實戰(zhàn)洞察。

從fork地址相同到寫時拷貝:吃透進(jìn)程地址空間與頁表機(jī)制

從fork地址相同到寫時拷貝:吃透進(jìn)程地址空間與頁表機(jī)制 在調(diào)試一個多進(jìn)程程序的時候我碰到過一個讓新手極其困惑的現(xiàn)象父進(jìn)程里打印某個全局變量的地址是0x601040fork 出來的子進(jìn)程里打印同一個變量地址還是0x601040。兩個進(jìn)程明明是兩個獨立的執(zhí)行體為什么變量地址會一模一樣更讓人想不通的是子進(jìn)程改了這個變量的值父進(jìn)程那邊紋絲不動既然地址一樣改的不應(yīng)該是同一塊內(nèi)存嗎這兩個問題指向的都是進(jìn)程地址空間這套機(jī)制。它解決了操作系統(tǒng)里最核心的矛盾之一多個進(jìn)程如何在一個物理內(nèi)存有限的機(jī)器上互不干擾地運(yùn)行。理解進(jìn)程地址空間、頁表、寫時拷貝和虛擬地址這幾件事你才能真正看懂 fork 的代價、內(nèi)存映射文件的共享語義、以及為什么一個野指針有時候崩有時候不崩。這篇內(nèi)容偏向操作系統(tǒng)底層與系統(tǒng)編程適合寫過一點 C、用過 fork 和 malloc但對背后機(jī)制還停留在“知道有這么回事”階段的讀者。我會從“為什么要設(shè)計它”講起一路拆到頁表項里的每一個標(biāo)志位和寫時拷貝觸發(fā)的那一刻中間配上可以直接跑起來的驗證代碼。1. 從一次段錯誤說起進(jìn)程地址空間到底解決了什么問題1.1 虛擬地址不是障眼法是精心設(shè)計的隔離層很多人第一次接觸虛擬地址會覺得這就是操作系統(tǒng)玩的障眼法應(yīng)用程序看到的是假的地址硬件在背后偷偷換算成真的。這個理解沒錯但只說對了表象真正值得琢磨的是為什么非要做這層換算。設(shè)想一個沒有虛擬地址的世界程序編譯出來直接操作物理地址。那么你在寫代碼時就得操心我這次 malloc 拿到的地址會不會和隔壁進(jìn)程要用的地址撞上操作系統(tǒng)加載第二個程序時得先掃描物理內(nèi)存找到一塊足夠大且連續(xù)的空洞把程序搬進(jìn)去還要把程序里所有寫死的地址重新改一遍才能跑。物理內(nèi)存一旦碎片化一個需要 100MB 連續(xù)空間的程序哪怕總空閑有 200MB 也起不來。更要命的是任何一個進(jìn)程的野指針都可以直接踩到別的進(jìn)程的數(shù)據(jù)一個 bug 能連帶毀掉整臺機(jī)器上所有在跑的東西。虛擬地址機(jī)制把“程序看到的地址”和“內(nèi)存條上的實際位置”徹底解耦。每個進(jìn)程拿到一張獨立的映射表表里寫著“我的 0x601040 對應(yīng)物理內(nèi)存的某一塊”。編譯器生成的地址是虛擬地址鏈接器算的也是虛擬地址CPU 執(zhí)行時先查表再訪存。物理內(nèi)存怎么擺放是內(nèi)核的事程序完全不用管。這就是解耦帶來的最直接的價值程序不再需要關(guān)心自己被加載到哪也不需要關(guān)心別人在哪。1.2 為什么每個進(jìn)程都以為自己獨占整臺機(jī)器的內(nèi)存虛擬地址帶來的第二個紅利是“獨占”的錯覺。在 64 位系統(tǒng)上每個用戶進(jìn)程都擁有一套從 0 到某個上限的地址范圍看起來整臺機(jī)器的地址空間都是它的。所有進(jìn)程的地址空間布局幾乎是相同的代碼段在上方數(shù)據(jù)段、堆、共享庫、棧按固定的相對位置排布。這種一致性有個巨大的好處就是可預(yù)測性。棧地址的起始位置、堆的起始位置、共享庫的加載區(qū)域內(nèi)核會做一定的隨機(jī)化處理但整體格局不變。調(diào)試器看到某個地址立刻能判斷它大概率落在哪個區(qū)程序里errno或者線程局部存儲的偏移也是基于這套布局設(shè)計的。如果地址空間不統(tǒng)一每次加載都要重新規(guī)劃調(diào)試信息和 core dump 的分析會變得極其痛苦。注意所謂“進(jìn)程看到的是連續(xù)地址空間”指的是虛擬地址連續(xù)背后的物理頁幾乎一定不連續(xù)。一個 10MB 的數(shù)組映射到物理內(nèi)存上可能是散落在幾十個頁里。把虛擬地址連續(xù)等同于物理連續(xù)是初學(xué)階段最容易帶偏后續(xù)理解的誤區(qū)。1.3 地址空間的布局不是隨機(jī)排的每一塊都有講究拿一個典型的 64 位 Linux 進(jìn)程來說用戶空間布局大致是這樣的最低地址往后是代碼段text只讀可執(zhí)行接著是已經(jīng)初始化的數(shù)據(jù)段和未初始化的 BSS 段可讀寫再往上是堆用 brk 或 mmap 向上生長中間一大片留空然后是動態(tài)鏈接庫的映射區(qū)mmap 出來的匿名頁和文件映射也落在這一帶棧從高地址往低地址生長環(huán)境變量和命令行參數(shù)就在棧頂。內(nèi)核空間和用戶空間之間有一道分界線x86-64 上這條線大約在地址的高半部分用戶空間占低 128TB內(nèi)核空間占高半部分。每個進(jìn)程的頁表里都包含內(nèi)核空間的映射但頁表項上標(biāo)記了只有特權(quán)級 0 才能訪問所以用戶代碼跑過去立刻觸發(fā)保護(hù)異常。這種設(shè)計的巧思在于發(fā)生系統(tǒng)調(diào)用或者進(jìn)程從用戶態(tài)切換到內(nèi)核態(tài)時不需要切換頁表基址寄存器內(nèi)核代碼可以直接沿用當(dāng)前進(jìn)程的頁表訪問內(nèi)核空間省掉一次代價很高的地址空間切換。2. 地址空間存在的深層原因隔離、共享與按需分配2.1 進(jìn)程隔離是底線但不能只靠邊界檢查有人會問操作系統(tǒng)不是有特權(quán)級嗎為什么不能讓用戶進(jìn)程直接用物理地址靠硬件在每個訪存指令上做邊界檢查來隔離答案在于性能和靈活性邊界檢查只能保證不越界保證不了兩個進(jìn)程不重疊。每個進(jìn)程的合法區(qū)間是動態(tài)變化的堆會漲棧會擴(kuò)mmap 會新增映射。如果靠“給每個進(jìn)程登記一個物理區(qū)間”來管理一旦堆和棧之間的空檔被別的進(jìn)程占了這個進(jìn)程就再也長不大了。物理內(nèi)存的連續(xù)性和進(jìn)程需求的不連續(xù)性天然沖突。虛擬地址把“需求”和“供給”拆開。進(jìn)程要向內(nèi)核申請內(nèi)存內(nèi)核只需要在它的地址空間里找一段空閑的虛擬區(qū)間分配幾個物理頁掛上去就行物理頁在哪完全無所謂。進(jìn)程之間的虛擬區(qū)間可以重疊只要映射到不同的物理頁即可。隔離從“物理上不碰撞”變成了“映射表上不指向同一塊”這個轉(zhuǎn)換是整套機(jī)制能成立的關(guān)鍵。2.2 共享內(nèi)存和寫時拷貝都建立在地址空間之上隔離不是目的可控的共享才是。兩個進(jìn)程想共享一塊數(shù)據(jù)有了地址空間之后變得很自然把各自的虛擬區(qū)間映射到相同的物理頁就行。共享庫的代碼段就是這么處理的同一個libc.so的代碼頁在物理內(nèi)存里只有一份幾百個進(jìn)程都映射到它只讀不寫內(nèi)存利用率直線上升。寫時拷貝也建立在同一套機(jī)制上。fork 的時候子進(jìn)程的地址空間和父進(jìn)程的地址空間內(nèi)容完全一樣但并不是把物理頁復(fù)制一遍。內(nèi)核把父子進(jìn)程的頁表都指向同一批物理頁然后把這些頁在雙方的頁表項里都標(biāo)記成只讀。任何一方要寫觸發(fā)頁保護(hù)異常內(nèi)核才真正復(fù)制出一份新的頁給寫入方。這套機(jī)制把 fork 的代價從“復(fù)制整個地址空間”降低到了“復(fù)制頁表”進(jìn)程創(chuàng)建的語義沒變開銷卻小了一個數(shù)量級。沒有虛擬地址這套間接層寫時拷貝根本無從談起。2.3 按需分配與缺頁異常內(nèi)存可以“看著有實際沒有”地址空間還有一個容易被低估的作用它讓內(nèi)存分配可以做到承諾與兌現(xiàn)分離。malloc 申請 1GB 內(nèi)存內(nèi)核可以立刻返回一個虛擬地址但一個物理頁都不給只在這段虛擬區(qū)間上做標(biāo)記。等你真正去讀或者寫某個地址時MMU 查表發(fā)現(xiàn)頁表項是空的觸發(fā)缺頁異常內(nèi)核這時候才分配物理頁、建立映射。這個動作叫按需調(diào)頁。這個設(shè)計在現(xiàn)實里的價值極高。程序習(xí)慣性地預(yù)留大塊地址空間但只用其中很小一部分或者進(jìn)程啟動時先 mmap 一大塊當(dāng)內(nèi)存池這些場景下按需分配能省下大量物理內(nèi)存。也正因為如此你才會看到進(jìn)程的虛擬內(nèi)存大小VSZ可能有幾個 G而實際駐留內(nèi)存RSS只有幾十兆。這兩者的差距不是虛胖是地址空間機(jī)制允許的“延遲兌現(xiàn)”。2.4 地址空間與安全頁表項上的權(quán)限位是最后一道閘門頁表項里除了物理頁號還有一組權(quán)限標(biāo)志位它們才是運(yùn)行時安全真正落地的地方。常見的標(biāo)志包括存在位頁面是否在物理內(nèi)存里、讀寫位、用戶/超級用戶位、可執(zhí)行位、臟位、訪問位。代碼段被標(biāo)記為只讀且可執(zhí)行你往函數(shù)體里寫數(shù)據(jù)會直接觸發(fā)段錯誤棧和堆標(biāo)記為不可執(zhí)行這是緩解緩沖區(qū)溢出攻擊的常規(guī)手段。這些標(biāo)志不是建議性的是 MMU 在每次地址轉(zhuǎn)換時強(qiáng)制性檢查的。用戶態(tài)代碼試圖訪問標(biāo)記為超級用戶的頁MMU 直接拒絕連內(nèi)核代碼路徑都不會走到。理解這一點之后你就能明白為什么緩沖區(qū)溢出攻擊過去那么容易得手而現(xiàn)在要先想方設(shè)法繞過不可執(zhí)行棧也能明白為什么某些嵌入式和實時系統(tǒng)為了性能會放松這些保護(hù)代價是什么。3. 頁表虛擬地址到物理地址的翻譯官3.1 頁表的最基本形態(tài)與地址拆分方式頁表的核心作用只有一個給定虛擬地址查出對應(yīng)的物理頁號然后拼上頁內(nèi)偏移得到物理地址。這個過程由 MMU 硬件完成內(nèi)核負(fù)責(zé)維護(hù)頁表內(nèi)容。地址被拆成“頁號”和“頁內(nèi)偏移”兩部分拆分位置由頁大小決定。假設(shè)頁大小是 4KB也就是 2 的 12 次方那么虛擬地址的低 12 位就是頁內(nèi)偏移高位是虛擬頁號。32 位地址下虛擬頁號有 20 位能索引 100 萬個頁面64 位地址下虛擬頁號有 52 位理論上有 400 多萬億個頁。如果直接用一張單級大表每個進(jìn)程一張每個條目哪怕只占 8 字節(jié)64 位下一個進(jìn)程的頁表本身就要占用幾十 TB 的空間顯然不現(xiàn)實。所以現(xiàn)實中的頁表都是多級的。32 位系統(tǒng)常用兩級頁表把 20 位虛擬頁號再拆成 10 位 10 位第一級 1024 個條目每個條目指向一張第二級頁表第二級 1024 個條目。64 位系統(tǒng)常用四級把 52 位拆成 9999剩下 16 位留給高半部分的內(nèi)核空間劃分每一級指向下一級的表。這套結(jié)構(gòu)本質(zhì)上是一棵多叉樹只有實際用到的分支才會被分配內(nèi)存。3.2 多級頁表省內(nèi)存的原理只分配用到的分支多級頁表省內(nèi)存的關(guān)鍵在于稀疏分配的天然適配。一個進(jìn)程真正用到的地址空間往往只占理論范圍的極小一部分代碼幾兆、數(shù)據(jù)幾兆、棧幾兆、堆看需求共享庫幾十兆。這些區(qū)域在 64 位地址空間里是極其稀疏地散落的。用一棵四級樹去索引大部分分支根本不存在對應(yīng)的中間層頁表壓根不用創(chuàng)建。算一筆賬就清楚了。假設(shè)一個進(jìn)程實際占用了 100MB 內(nèi)存按 4KB 一頁算有 25600 個頁。這些頁如果分布在一個完全不連續(xù)的區(qū)域里最壞情況下需要 25600 個葉子頁表條目分散在若干個葉子頁表里。每個葉子頁表能裝 512 個條目最壞需要 50 個葉子頁表。每一層向上需要的表數(shù)量繼續(xù)收縮。整個頁表占用的內(nèi)存大概是葉子層 50 張、中間層可能十幾張、再上層幾張每張 4KB總共不到 1MB。如果換成單級表64 位下要占幾十 TB差了七個數(shù)量級。這就是“用層級換空間”的經(jīng)典權(quán)衡。維度單級頁表四級頁表頁表體積與地址空間總大小成正比64 位下不可接受與實際使用量成正比稀疏場景下極小查表次數(shù)1 次訪存4 次訪存未命中緩存時分配粒度全有或全無按需逐層分配缺頁處理簡單需要逐層檢查路徑3.3 頁表項里的標(biāo)志位與訪存過程的完整鏈條一個頁表項不是只有物理頁號它是一堆字段的集合。存在位告訴你這個頁當(dāng)前是否在內(nèi)存里如果不在訪問時會觸發(fā)缺頁異常讀寫位決定這個頁是可寫還是只讀用戶位決定用戶態(tài)能不能訪問可執(zhí)行位配合硬件提供的執(zhí)行保護(hù)決定這個頁能不能當(dāng)指令執(zhí)行訪問位和臟位由 MMU 自動維護(hù)供頁面置換算法參考此外還有緩存控制位、全局位等等。一次完整的訪存長這樣CPU 發(fā)出虛擬地址MMU 先查 TLB轉(zhuǎn)換后備緩沖區(qū)本質(zhì)是頁表項的緩存命中就直接拿到物理地址沒命中就按頁表基址寄存器指向的根表逐級往下查。每一級查表都是一次內(nèi)存訪問四級頁表意味著最多四次訪存才能完成一次地址轉(zhuǎn)換。查完之后把結(jié)果塞回 TLB后續(xù)再訪問同一頁就能直接命中。這也是為什么頁表結(jié)構(gòu)的變化對性能影響很大多一級就多一次可能的訪存。提示TLB 的存在使得頁表查詢的開銷在大多數(shù)情況下被隱藏。但進(jìn)程切換時 TLB 需要刷新或者打上地址空間標(biāo)識來區(qū)分這是上下文切換成本的重要來源之一。理解這一點才能理解為什么大量的線程同進(jìn)程運(yùn)行比大量獨立進(jìn)程切換要便宜。3.4 頁表基址寄存器與進(jìn)程切換時發(fā)生了什么每個進(jìn)程都有自己的頁表樹根表的物理地址存在一個專門的寄存器里。x86-64 上是 CR3ARM64 上是 TTBR0/TTBR1。進(jìn)程切換時內(nèi)核要做的關(guān)鍵動作之一就是把這個寄存器換成新進(jìn)程的根表地址。這個動作叫切換地址空間。換完之后TLB 里緩存的老進(jìn)程的頁表項就全部失效了如果不做處理新的地址會被錯誤翻譯。所以切換時要清 TLB或者用地址空間標(biāo)識ASID給 TLB 條目打標(biāo)簽讓不同進(jìn)程的條目可以共存而不互相污染。現(xiàn)代處理器一般支持 ASID這樣切換進(jìn)程時不必整體刷 TLB只需要切換當(dāng)前的 ASID開銷小很多。這也解釋了為什么在支持 ASID 的平臺上進(jìn)程創(chuàng)建和切換的實測性能會更好。4. 寫時拷貝fork 之后到底發(fā)生了幾次內(nèi)存復(fù)制4.1 fork 的直覺實現(xiàn)與它不可接受的開銷教科書上講 fork 會創(chuàng)建一個和父進(jìn)程幾乎一模一樣的子進(jìn)程包括地址空間內(nèi)容的完整副本。如果嚴(yán)格按字面實現(xiàn)fork 的代價就是復(fù)制整個地址空間代碼段不用復(fù)制只讀可以共享但數(shù)據(jù)段、堆、棧全都要復(fù)制一份。一個占用了 500MB 內(nèi)存的進(jìn)程 fork 一次就要再消耗 500MB 物理內(nèi)存還要花時間做復(fù)制。現(xiàn)實中的使用模式卻往往是 fork 之后立刻 exec 別的程序。也就是說剛復(fù)制完的 500MB 馬上就會被 exec 整個丟掉這次復(fù)制純屬浪費(fèi)。即使不 exec子進(jìn)程往往也只改動其中很小一部分?jǐn)?shù)據(jù)其余部分父子完全一致。這兩種場景都說明全量復(fù)制是極其低效的。寫時拷貝就是為了消掉這筆開銷而設(shè)計的。4.2 寫時拷貝的完整實現(xiàn)思路fork 時內(nèi)核做的是這樣幾件事子進(jìn)程獲得一份父進(jìn)程頁表的副本注意是頁表副本不是物理頁副本頁表項里指向的物理頁還是父進(jìn)程原來那些同時內(nèi)核把所有可寫的頁表項在父子雙方的頁表里都改成只讀并在頁表項里打上一個“寫時拷貝”的內(nèi)部標(biāo)記頁面本身的引用計數(shù)加一。接下來任何一方對這些頁發(fā)起寫操作MMU 會先檢查讀寫位發(fā)現(xiàn)是只讀頁觸發(fā)頁保護(hù)異常。內(nèi)核進(jìn)入缺頁處理路徑發(fā)現(xiàn)地址所在的頁帶著寫時拷貝標(biāo)記就明白這不是真的非法訪問而是需要兌現(xiàn)復(fù)制。此時內(nèi)核分配一個新的物理頁把老頁的內(nèi)容復(fù)制過去更新觸發(fā)寫入那一方的頁表項指向新頁并恢復(fù)可寫減少老頁的引用計數(shù)。如果老頁的引用計數(shù)已經(jīng)降到只剩另一方在用那也可以直接把老頁的只讀屬性改回可寫省掉一次復(fù)制。這套機(jī)制的妙處在于它讓“復(fù)制整個地址空間”這個語義保持不變但實際搬運(yùn)只發(fā)生在真正被寫到的頁上。父子進(jìn)程共享不變的部分只在分歧處各自持有副本。從程序員的視角看fork 之后兩個進(jìn)程的內(nèi)存是完全隔離的改誰都不影響誰這個保證一點沒丟。4.3 一次寫操作觸發(fā)寫時拷貝的微觀過程把觸發(fā)過程走一遍會理解得更扎實。假設(shè)父進(jìn)程有一個全局?jǐn)?shù)組arrfork 之前它是可寫的對應(yīng)某個物理頁 P。fork 之后這個頁在父和子雙方的頁表項里都變成只讀標(biāo)記寫時拷貝P 的引用計數(shù)變成 2。子進(jìn)程執(zhí)行arr[0] 1。CPU 發(fā)出寫請求MMU 查頁表發(fā)現(xiàn)頁是只讀的硬件拋出一個頁錯誤異常把出錯的虛擬地址和錯誤碼塞進(jìn)特定寄存器跳到內(nèi)核的缺頁處理函數(shù)。內(nèi)核根據(jù)錯誤碼判斷這是一次寫保護(hù)錯誤而不是頁不存在錯誤。接著它去找對應(yīng)的虛擬內(nèi)存區(qū)域描述符確認(rèn)這個地址本來應(yīng)該是可寫的再檢查頁表項上的寫時拷貝標(biāo)記。確認(rèn)無誤后內(nèi)核分配新頁 Q把 P 的內(nèi)容復(fù)制到 Q更新子進(jìn)程的頁表項讓它指向 Q 并設(shè)為可寫P 的引用計數(shù)減到 1。對于父進(jìn)程既然現(xiàn)在只有它自己在用 P把 P 的頁表項改回可寫寫時拷貝標(biāo)記清掉。整個處理結(jié)束重新執(zhí)行剛才那條寫指令這次 MMU 看到的是可寫頁寫入成功。這一整套下來只有真正被寫的那一頁被復(fù)制了其他頁原封不動依然共享。4.4 寫時拷貝的幾個實戰(zhàn)陷阱寫時拷貝聽起來很美用的時候有幾個坑很容易踩。第一個是引用計數(shù)的維護(hù)成本。每一頁的引用計數(shù)都要在 fork 時增加、寫時拷貝時減少、進(jìn)程退出時清理內(nèi)核在頁結(jié)構(gòu)上維護(hù)這個計數(shù)鎖競爭在高并發(fā) fork 場景下會成為瓶頸。有些老版本的內(nèi)核在這方面有過比較明顯的性能問題。第二個是寫時拷貝會放大內(nèi)存峰值。fork 一個占內(nèi)存很大的進(jìn)程如果父子都開始大量寫物理內(nèi)存可能瞬間翻倍觸發(fā)內(nèi)存回收甚至 OOM。容器場景下內(nèi)存限額卡得緊這種突發(fā)很容易被誤判為內(nèi)存泄漏。第三個是大頁與寫時拷貝的互動。透明大頁讓一次寫時拷貝的復(fù)制粒度從 4KB 變成 2MB單次復(fù)制的開銷明顯變大延遲毛刺更容易出現(xiàn)。注意不要假設(shè) fork 之后子進(jìn)程立刻擁有獨立內(nèi)存。如果你的邏輯依賴“fork 后父子內(nèi)存已經(jīng)隔離”這個事實那是對的但如果你的邏輯依賴“fork 后內(nèi)存已經(jīng)復(fù)制完成”那就是錯的。物理復(fù)制是延遲到寫入那一刻的。這個區(qū)別在分析內(nèi)存占用和性能曲線時非常關(guān)鍵。5. 動手驗證親手看清虛擬地址、頁表與寫時拷貝5.1 打印變量地址看清虛擬地址的一致性與獨立性先寫一段最直接的代碼驗證“父子進(jìn)程同一變量地址相同但值互不影響”。#include stdio.h #include unistd.h #include sys/wait.h int shared_var 100; int main(void) { printf(before fork: shared_var %p, value %d\n, (void*)shared_var, shared_var); pid_t pid fork(); if (pid 0) { printf(child : shared_var %p, value %d\n, (void*)shared_var, shared_var); shared_var 200; printf(child after write: shared_var %p, value %d\n, (void*)shared_var, shared_var); _exit(0); } waitpid(pid, NULL, 0); printf(parent: shared_var %p, value %d\n, (void*)shared_var, shared_var); return 0; }編譯運(yùn)行之后你會看到子進(jìn)程打印的地址和父進(jìn)程完全一致都是同一個虛擬地址子進(jìn)程把它改成 200 之后父進(jìn)程讀到的仍然是 100。這正是寫時拷貝在起作用。地址一致是因為子進(jìn)程復(fù)制了父進(jìn)程的頁表虛擬地址到物理頁的映射關(guān)系被復(fù)制了值隔離是因為寫入觸發(fā)了復(fù)制子進(jìn)程寫到一張新頁上父進(jìn)程那張頁仍保持原值。值得多說一句的是地址為什么能一致。因為 fork 復(fù)制的是地址空間的結(jié)構(gòu)子進(jìn)程的地址空間布局和父進(jìn)程一模一樣同一變量自然占據(jù)同一個虛擬地址。如果這里看到的地址不一樣那才是出了問題。5.2 用引用計數(shù)和內(nèi)存統(tǒng)計觀察寫時拷貝的實際開銷光看值變化還不夠我們想量化寫時拷貝??梢栽?fork 前后讀取/proc/self/status里的 VmRSS駐留物理內(nèi)存和/proc/self/smaps里的共享內(nèi)存字段。寫一段對照實驗先 fork 一個吃掉幾百兆內(nèi)存的子進(jìn)程讓父子都只讀觀察 RSS再讓父子都大量寫觀察 RSS 變化。# 簡化示意查看當(dāng)前進(jìn)程的駐留內(nèi)存與共享內(nèi)存 grep -E VmRSS|VmSize|RssAnon|RssFile|RssShmem /proc/self/status實測下來會發(fā)現(xiàn)一個典型現(xiàn)象fork 之后、寫入之前父子的 {RssShmem} 都會包含同一批頁總和并不等于兩者之和因為物理頁只有一份一旦雙方開始寫同一批頁RSS 總量會上升上升的幅度大致等于被寫的頁數(shù)乘以頁大小。這個測量方法是判斷“寫時拷貝有沒有真正生效”最直接的手段比看代碼推測靠譜得多。提示觀察時要注意頁緩存和匿名頁的區(qū)別。文件映射的頁在寫時拷貝里走的是另一條路徑復(fù)制到匿名頁只盯著 VmRSS 會漏掉部分信息把 RssAnon 和 RssShmem 一起看才完整。5.3 用頁錯誤計數(shù)器確認(rèn)寫時拷貝的觸發(fā)時機(jī)如果內(nèi)核支持 perf可以直接統(tǒng)計缺頁事件把寫時拷貝的觸發(fā)點抓出來。perf stat -e page-faults,minor-faults,major-faults ./cow_demominor fault 是頁已經(jīng)在內(nèi)存里但頁表項需要更新的情況寫時拷貝觸發(fā)的正是這一類。跑一個只讀子進(jìn)程minor fault 數(shù)量很低跑一個寫完整個數(shù)據(jù)區(qū)的子進(jìn)程minor fault 數(shù)量會明顯上升大約和寫入的頁數(shù)同量級。這個對應(yīng)關(guān)系非常直觀是做性能分析時的常用佐證。另一個手段是/proc/pid/pagemap和/proc/pid/smaps能拿到每個虛擬頁對應(yīng)的物理頁幀號需要相應(yīng)權(quán)限把父子進(jìn)程同一虛擬地址的物理幀號對比就能看到寫入前相同、寫入后不同。這個驗證比任何文字說明都有說服力強(qiáng)烈建議自己動手做一遍做過之后對寫時拷貝的理解會從“背下來的概念”變成“親眼見過的事實”。5.4 觀察棧、堆、共享庫的地址分布理解地址空間布局最后再補(bǔ)一個小實驗把各區(qū)域的地址打印出來驗證地址空間的布局。#include stdio.h #include stdlib.h int g_init 1; int g_bss; int main(void) { int local 2; int *heap malloc(sizeof(int)); printf(text approx : %p\n, (void*)main); printf(data : %p\n, (void*)g_init); printf(bss : %p\n, (void*)g_bss); printf(heap : %p\n, (void*)heap); printf(stack : %p\n, (void*)local); printf(libc printf : %p\n, (void*)printf); free(heap); return 0; }跑出來通常是代碼段地址最低數(shù)據(jù)段緊隨其后堆在數(shù)據(jù)段上方并且向上增長棧地址明顯偏高共享庫落在中間偏上的映射區(qū)。每次運(yùn)行的具體數(shù)值因為隨機(jī)化會略有差異但相對次序穩(wěn)定。把這個次序和前面講的布局對上地址空間就不再是一個抽象名詞而是一張你能畫出來的圖。6. 常見問題與踩坑記錄6.1 寫時拷貝與虛擬地址相關(guān)問題速查現(xiàn)象可能原因排查與處理思路fork 后子進(jìn)程改數(shù)據(jù)父進(jìn)程也變了誤用了共享內(nèi)存映射或全局可變狀態(tài)被其他路徑影響確認(rèn)是否用了 MAP_SHARED 的 mmap檢查是否有信號處理函數(shù)或其他線程在改數(shù)據(jù)父子進(jìn)程變量地址相同但值不同懷疑程序有 bug其實是寫時拷貝的正常表現(xiàn)這是預(yù)期行為虛擬地址相同不代表物理頁相同內(nèi)存占用統(tǒng)計出現(xiàn)雙份懷疑泄漏寫時拷貝被大量觸發(fā)物理頁真的復(fù)制了關(guān)注 RssAnon 與 minor fault 數(shù)量確認(rèn)是否大量寫入共享頁程序訪問某地址崩潰換一次運(yùn)行卻不崩訪問落在未映射區(qū)間或落在依賴環(huán)境的內(nèi)存布局上別依賴未定義行為用調(diào)試器看崩潰地址落在哪個區(qū)域頁表分析工具讀不到物理幀號權(quán)限不足或內(nèi)核配置限制了 pagemap 訪問檢查權(quán)限容器環(huán)境里這類信息通常被屏蔽大頁開啟后延遲毛刺變多寫時拷貝按大頁粒度復(fù)制單次開銷變大對延遲敏感的進(jìn)程可考慮關(guān)閉透明大頁或調(diào)整策略6.2 幾個我在實際排查中踩過的坑第一個坑是把虛擬地址當(dāng)成唯一標(biāo)識。做進(jìn)程間通信時曾經(jīng)想用變量地址當(dāng) key 去共享數(shù)據(jù)結(jié)果兩個進(jìn)程地址一樣但根本指向不同的物理頁數(shù)據(jù)完全對不上。正確做法是用文件映射或者顯式的共享內(nèi)存區(qū)并約定偏移量而不是拿虛擬地址當(dāng)索引。第二個坑是忽略寫時拷貝導(dǎo)致的延遲抖動。某個服務(wù) fork 出工作進(jìn)程后工作進(jìn)程第一筆請求的延遲總是偏高一開始以為是冷啟動。后來用 perf 看 minor fault發(fā)現(xiàn)是寫時拷貝在第一次寫大量頁時集中觸發(fā)復(fù)制開銷堆在了請求路徑上。處理方式是在 fork 之后、開始服務(wù)之前先主動預(yù)熱一遍要寫的數(shù)據(jù)區(qū)把復(fù)制成本前移。第三個坑是誤判內(nèi)存泄漏。容器里看著內(nèi)存一直在漲實際上是因為 fork 出來的子進(jìn)程和父進(jìn)程都在寫同一批頁寫時拷貝復(fù)制了物理頁父進(jìn)程的 RSS 沒降子進(jìn)程的 RSS 又漲上來總和翻倍。這不是泄漏是寫時拷貝的正常開銷進(jìn)程退出后會釋放。區(qū)分這兩種情況的關(guān)鍵是看增長曲線是否收斂以及是否與 fork 事件強(qiáng)相關(guān)。第四個坑是頁表項的權(quán)限位理解不到位導(dǎo)致誤判。有同學(xué)寫了一段往只讀段寫數(shù)據(jù)的代碼看到崩潰就以為是段錯誤機(jī)制沒生效實際上是編譯器把那個“變量”優(yōu)化進(jìn)了寄存器壓根沒發(fā)生內(nèi)存寫。這類問題最好在編譯時關(guān)掉優(yōu)化-O0再觀察或者把變量聲明成volatile并實際取地址避免被優(yōu)化掉。6.3 關(guān)于頁表與地址空間幾個值得記住的經(jīng)驗判斷遇到與內(nèi)存相關(guān)的詭異問題時我一般按這個順序排查先確認(rèn)崩潰地址落在哪個區(qū)域是代碼段、堆、棧還是未映射區(qū)再看/proc/pid/maps確認(rèn)這個區(qū)域的權(quán)限是否符合預(yù)期接著看/proc/pid/smaps里的詳細(xì)字段確認(rèn)是共享頁還是私有頁最后用 perf 或 strace 看系統(tǒng)調(diào)用路徑。這個順序能把大部分問題定位在一兩分鐘內(nèi)。關(guān)于頁表有個判斷標(biāo)準(zhǔn)值得分享如果一個進(jìn)程的 VSZ 很大但 RSS 很小別急著喊內(nèi)存泄漏先看是不是按需分配的正常表現(xiàn)如果 RSS 持續(xù)增長且不收斂再看是不是寫時拷貝復(fù)制了物理頁。這兩個統(tǒng)計量配合 minor fault 計數(shù)一起看基本能覆蓋 90% 的內(nèi)存困惑。最后一個經(jīng)驗是關(guān)于寫時拷貝的使用邊界。它在“fork 后 exec”和“fork 后少量寫”這兩種模式下收益最大在“fork 后大量寫”的模式下反而會把開銷堆到后面甚至比直接復(fù)制更差。如果你的程序?qū)儆诘谌N模式不要指望寫時拷貝來救場直接改成線程模型或者在 fork 前把共享數(shù)據(jù)整理成只讀可能才是更合適的做法。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产呦精品系列在线观看| 亚洲se电影| 日本激情免费大片| 大色综合网| 国产AV天美| 久久熟女嫩草成人片免费| 上海一级黄片| 防屏蔽在线视频| 欧美韩国你懂得在线| 色婷久久| 妺妺跟我一起洗澡没忍住| 明星性猛交ⅹxxx乱大交| 9997se| 97精品一二区| 激情自拍 校园春色| 播播亚洲小说亚洲| 大香蕉黄色一级片免费看| 97av在线观看| 亚洲影视高清三级-草1024榴社区入口-品爱AV | 日本熟妇精品九九| 殴美日韩m| 激情五月综合网| 免费簧片在线观看| 日本国产高清色www视频在线| 日韩欧美性吧婷婷乱伦大香蕉 | 亚洲AV秘 精品久久老牛影视| 一起草在线视频| 人人九九精| 日韩午夜国产| 欧美72网页| 久久9 9 9精品| 亚洲天堂久久| 偷看洗澡一二三区美女| 国产中文字幕曰本毛片| 午夜久久无码1000合集| 色网在线视频观看免费| 欧美经典一区二区三区| 日韩无码a片| 偷拍亚洲熟女视频播放| 69少妇一区二区| 伊人影院日本| 国产9区| 精品国产乱码久久久A| 91痴汉| 欧美青青草视频| 330dv亚洲成年视频网| 欧美亚洲丝袜美女电影| 亚洲一区二区三区麻豆传媒| 久久久久久久久久久久久9999| 国产精品麻豆成人AV艾秋| 久/久精品99看9| 日本岛国黄色网址| 亚洲久热| 色五月综合| www.色婷婷| 日本一级一级一级一级| 麻豆60秒| 在线人妻熟女一区二区三区四区五区| 中文字幕88av在线| 97在线资源| 成人天天爽| 青青草国产一区二区三区| 在线一区| 超碰欧美97| 麻豆久久精品亚洲精品88| 97视频免费播放| 91日韩| 亚洲高清视频在线免费观看| 十八禁的黄污污免费网站| 久久精品国产亚洲AV嘿嘿| 国产无马视频| 久久久久久性爱片| 蘋果手機免費看成人Av| 91黑丝操| 婷婷丁香人妻| 国产精品亚洲一级av第二区| 国产欧美日韩精品中文| 久久久久人妻| 欧美色图天堂网m| 国产极品久久久| 福利天堂| aV中文麻| 色99999| 日本1区2区不卡视频| 综合欧美激情网| 亚洲精品日日夜夜52| 26uuu国产| 九九视品黄色| 人人九九精| 大鸡巴久久| 在线毛片片免费观看| 日本成人A片免费看| 久久精品中文字幕无码l| 俺去俺来也在线www| 人妻少妇久久久| 丰满少妇一区二区三区四区观看| 九九九精品一区二区无码| 久久久久久久久久久精| 欧美日韩中文视频播放| 91影库| 亚洲精品人妻吞精av| 国产精品色| 密臀在线免费观看| 激情婷婷丁香| 国产精品熟女一区二区三区| 欧亚性爱在线视频| 激情AV| 欧中日成人免费影视| 国产和美国毛片| 日韩欧视频| 乱伦熟女论坛| 亚洲中文字幕精品久久久久久直播| 玖玖97综合| 素颜老阿姨乱情色| 99在线精品视频| 国产AAAAAABBBBB| 无色无码| 激情欧美日韩女同久久| 大香蕉淫人| 国产女人高潮嗷嗷嗷叫小说| 玖玖97综合 | av中文字幕在线熟女| 99蜜桃臀亚洲成人在线观看| 欧美+日产+中文| 高清国产成人无码| 久久国产精品一级二级三级| 精品女同一区二区三区| 亚洲精品一区二区精品| 人妻熟女午夜精品在线| 日本免费一区二区不卡| 插入逼91| www.色五月| 91欧美另类| 东北女人操逼| 丁香五月天激情| 色 亚洲 91| 大奶的诱惑| 老司机老司机午夜影院| 98精品国产乱码久久久久久| 97在线观看| 日本123区操B视频| 伦在线97| se吧提供国产乱老熟视频胖女人| 天天爽夜夜操| 久久久久久久久女黄| se吧提供国产乱老熟视频胖女人| 猛交交| 综合天天。| 岛国片在线播放| 乱精品一区字幕二区| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 精品久久久久久无码| 天天日天天操心| 日韩大香蕉精品在线视频| 精品国产Av无码久久久亚洲| 射 色综合| 丝袜美腿91| 九色精品视频导航1| 91九久| 久久久91| 97啪啪| 精品人妻一二三四区视频| 韩国三级一线观看久| 中文字幕在线24| 国产黑白丝在线| 中文字幕日韩人妻视频一区二区三区 | 精品视频免费在线一区| juliaann丝袜大战黑鬼| A级在线视频| 91久久精品蜜臀| www男人天堂| 国产伦精品一区二区三区在线观| 亚洲国产中文字幕| 亚洲强奸乱伦影视网| 婷婷九月国产| 岛国黄色大片网站| 风月影院男女十八禁| 国产成年女人免费视频播放a| 天天日日本| 国产91影院| 97网址www| 人妻精品视频一区二区三区| 丰满人妻一区二区三区四| 国产精品欧美在线观看| 狠狠穞A片一區二區三區| 亚洲情色无码一区二区三区| 去干网最新版| 在线播放欧洲免费av| 黄色av一区二区在线| 国产精品粉嫩福利在线| 丁香五月婷婷基地| 少妇淫妇久久久久久久| 曰韩精品九九无码| 超碰97欧美| 热久久91婷婷| 成 人 A V免费视频在线观看| 成年男人的天堂| 久久亚洲中文字幕视频| 91黑丝美女| 亚洲AV无码翔田千里网站| 老司机久久| av绯色| 亚洲女人毛茸茸91| 婷婷久久网| 亚洲人妻精品一区二区| 极品白嫩福利在线| 7777奇米影视久久| 都市激情人妻一区二区青青操视频 | 国内毛片四区| 亚洲精品一区中文字幕乱码| 草草草视频在线免费看| 人人妻天天做天天爽| 国产激情在线观看| 97在线视频免费观看| 欧美亚男人的天堂| 日韩欧美tv一区二区在线观看| 无毛精品| 五月激情综合网| 亚洲色91| 亚洲污污网站| 亚洲精品亚洲人成人网| 亚洲欧洲激情卡通另类文学四射小说网站| 中文字幕在线观看AV| 亚洲男人综合| 日韩 女同 综合| 91久久久久久| 人妻9117c| 亚洲熟久久| 国产又色又爽又舒服的三级视频| 欧美日韩1234| 狠色婷婷久久一区二区三区_| 国产超碰人人操| av中亚| 青青草白白色| 久久精品色欧美aⅴ一区二区| 久久精品国产亚洲av水密被窝| 日韩熟女精品无码专区一区二区| 欧美性爱中文字幕无线码| 女人18精品一区二区三区| 国产精品一二三区福利| av强奸乱轮| 蜜桃臀av一区二区| 后入内射蜜桃臀| 在线观看AV片| 午夜成人爽爽爽爽A片李冰冰| 一级黄碟在线看| 五月天久久久| 欧美性爱日韩性爱| 91综合网站| 91天天c| 丁香五月天视频| 7777奇米影视久久| 日本 情色 1区| 爱爱动态试试看6 0秒| 性爱乱伦网址| 69XX一中文字幕人妻91| 91亚洲黄色网| 操一区| 爽爽淫人网| 欧美aa一级片| 91综合网站| 自拍亚洲综合| 日韩精品高清资源在线| 精品久久人妻成人网| 韩国免费播放一级毛片| 97在线/亚洲| 91天美传媒精品| AA丁香综合激情| 99国产在线 精品 视频| 97国产超碰| 久热99999| 日本 免费 一区二区三区 久久香蕉| 在线播放中文字幕| 日本性爱不卡视频| 奇米四色影视777久久久| 婷婷爽人人婷婷爽视频| 941超碰| 欧美色图私拍91| 狠狠狠狠狠狠| 成人午夜小视频手机在线看| 中字幕人妻一区二区三区| 色约约一区=区三区| 精品人妻一区春色| 亚洲宗合电影| 毛片17S| 天天拍天天操| 亚洲黄色影视| 国产在线视视频有精品| 一级aaaaa欧美中文字幕录像片| 久久久9999| 新怡红院| 99精品综合久久久久五月天| 亚洲欧美国产va在线| 91女网站| 猛交交| 欧美性生活综合| 色色香蕉| 五月婷网站| 亚洲男人综合| 蜜臀久久99精品久久久久| 96国产精品| 国产吹潮女在线观看| 中文字幕久久精视频久久大全| 狼人综合婷婷激情四射 | 91精品国产一区三一| 97在线日韩中文字幕| 亚州男人的天堂| 成人五月天色网| 亚熟在线| 欧美在线伊人色| 久久国产99精品72福利| 天天狠| 久久久爆乳翘臀一线天伦理视频| 男人的天堂亚洲| 91操碰| 欧美精品999| 日韩性爱播放| 色婷五月天| 久热9| 日本片日本片祼观看网站在线看中文版网页在线看 | 97色色国产视频| 安徽熟妇视频| 人妻社区男人天堂| 亚洲美女 晚间男人天堂| 日韩av色图综合| 九九英色视频| 狠狠图片青青草| 成人综合视频久久| 国产视频大全| 亚州欧美总和| 极品人妻少妇综合| 9118禁| 白丝AV| 17c嫩草51久久91嫩草| 欧美色图综合| 尤物视频一区| 粉嫩粉嫩一区性色AV片| 欧美精品久久久久久久久88| 综合自拍| 久热免费视频| www.四虎在线| 欧美色天堂网在线视频| 国产精品在线一区二区| 91大香蕉伊人| 人妻一区二区三区熟女| 亚洲一区二区在线观看91| 日韩性爱小视频| 秋霞一级鲁丝片A片| 精品国产91av一区二区三区| 中文字幕一区电影在线观看| 成年女人18级毛片毛片免费观看| 午夜丁香婷婷| 人人喜人人妻| 日本男人插女人的逼黄色| 内射中国少妇高清视频免费视频| 天天综合网~91| 丁香九月婷婷| 色就色综合| 黄片aaaaa一区| 五月婷婷爱六月丁香色| 熟女人妻av在线资源,黄色的资源| 青青操97| 91激情综合| 97在线视频免费看| 啪啪视频免费在线观看| 欧美一级久久久丰满| 囯产操逼片| 婷婷在线视频| 日日A∨| 日韩欧美中文字亚洲慕| 清纯唯美亚洲综合| 粉嫩av久久一区二区三区| 欧美日本一区二区a人| 91精品91久久久中77777| 国产精品小视频一区二区三区| 精品小视频在线| 在线 欧美 亚洲| 亚洲天天综合| 综合操逼| 屌逼麻豆| 青青草无码视频| 日本一二区不卡| 老司机天天操| 丁香六月婷婷| AV99热18这里只有精品| 97日韩| www.91逼逼.com| 久操热| 国产精品欧美激在线| 一本色道久久综合亚洲二区三区| 午夜成人爽爽爽爽A片李冰冰| 国产人伦a片信息免费片| 五月婷婷激情网| 久久久久久91香蕉国产| 校园春色 亚洲| 无码区蜜乳| 久久综合婷婷| 激情综合网一盗摄| 另类亚洲一区二区三区| 99ri精品| 2017天天透天天通天天擦| 精品人妻一区二区三区在线视频不卡| 曰本人妻人人澡人人夹| 99热99re超碰精品| 四虎AV在线播放| 国产51色综合久久免费| 日本久操视频| 精品国产乱码久久久影院| 日韩av性爱在线播放| 操99| 任你干在线视频| 国产精品点击进入在线影院高清| 爱我干综合| 伊人伊人LD| 久久久久97| 欧美很很操视频| 黄资源| 91超碰在线| 蜜乳av首页| 中文字幕人乱码中文字的预防方法| 久久97| 精品-91人妻子系列| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 男人的天堂99| 日本午夜精品理论片A级APP发布| 欧美日本天堂| 人妻色偷色噜| 小泽玛利亚一二三| 精品美女少妇一区二区| 日韩去日本高清在| 老熟女中文字幕高清| 日本性感人妻91| 久久精品人体AV| 日本一卡二区在线| 国产三级日产三级韩国三级| 欧美伦乱爱| 一起草三级AV电影在线观看 | 97av在线观看| 五月天婷婷基地| 无卡一区=区| 中文字幕奈奈美被公侵犯| sss视频华人在线| 啊啊啊草死我| 超碰亚洲97| 九九九九九九九九九国产精品 | 色69大色97香蕉| 乱伦av麻豆| 伊人伊人LD| 在线岛国新天堂8| 大香蕉免| 国产精品日本无码A片| 欧美亚洲性爱一区二区| 男人天堂网站| 欧美在线官网| 亚洲av青草久久一区二区| 九九无码| 久九九九| 台湾佬激情综合| 欧美天天综合| 久久侵犯人妻爽爽爽| 色香综合| 97精品国产97久久久久久| 蜜臀99久| 丰满翘臀美女影院视频| 欧美人黑A片无码免视费| 97超碰美国| 欧美在线播放| 欧美se亚洲| 麻豆视频国产一区二区| 加勒比综合九九99视频在线播放| 人人操人人摸人人看人人插| 久久久久密臀一区二区| 性影在线视频| 97精品网站| 日本三级日本三级99| 天躁夜夜躁2021| 色色色网站| 9999久久久| 在线啊啊啊啊| 国内毛片无遮挡国产| 福利一级版子| 秋霞曰韩R级| 欧美日综合| 麻豆人妻精品一区二区| 立川理惠被中出无码| 最新亚洲风情电影| 国产一级操B视频| 热久久无毒不卡| 97色碰| 啊啊啊在线观看| 好看的91视频| 欧美亚洲日本激情在线| 欧美色另类| 国产精品久久久久绯色| 日韩美女操b| 一二区在线观看视频| 日韩人妻大香蕉| 91P0RNY大屁股人妻| 欧美日动态视频| JIZZJIZZ国产精品喷水| 亚洲天堂加勒比| 男人的天堂2018.| 亚洲精品国产熟女久久久久久| 亚州九九九精品视频| 综合婷婷| 日韩偷拍一区二区三区 | 久久三区四区| 欧美成不卡网| 欧美视频一区二区在线| 国产路线专区| 十八禁黄色成人网站观看| 夜色AV无码手机在线影院| 在线欧美亚洲| 国产成自自拍在线观看| 国产麻豆一级精品视频| 久久免费少妇| 亚洲十八禁止| 97舔舔| 日韩国产在线观看av| 成人小电影网站tex| 男人天堂久久日韩| 国内精品久久久久影院亚洲| 亚洲乱码精品一区二区| 欧美综合自拍亚洲综合图| 国产一区二区三区中文字幕| 97在线观看播放视频| 综合色区偷拍| 免费网色网站| 久久超碰久| 黄页视频网站野外| 日韩无码人妻| 亚洲天堂少妇| 亚洲综合影视| 久久草大香蕉| 福利操逼| 日韩一级二级三级免费看完整版| 香蕉av一区二区三区| 亚洲AV无码天美传媒一区| AA特级绝黄| 久久国产成人精品国产成人亚洲| 日韩黄色小说| 91jk色拍| 亚洲五月丁香花狠狠干一区二区三区| 日韩精品人妻一| 亚洲啪啪综合?v一区综合精品区| 蜜臀一二三区| 欧美色图下一页| 久久黄黄| 五月色网| 国产综合网站在线播放| 91大神精品长腿在线观看网站| 欧美图片色五月天| 色男人色天堂东京热| 91人人爽人人爽| 亚洲一区中文字幕一区| 人妻少妇被猛烈进入中| 亚洲伊人成综合成人网| 成人无码欧美一级A片狼牙直播| 99久热精品99re6热| 亚洲情色电影网| 91精品丝袜在线观看| 亚洲激情综合另类男同| av三级电影在线播放| 午夜经典| 久久久精品九| 99在线啪| 国产亚洲精品美女| 蜜臀精品1区2区| 五月婷婷综合在线| 九九性爱网| 亚洲人妻中文高清| 韩国一级婬片A片无码天美| 天天看天天日天天操| 国产sv美女内射| 亚洲交换| 午夜AV污污污| 人妻黑丝袜电影| 96免费视频在线| 五月天色图| 麻豆天美国美国产| 欧美日韩高潮喷水91| 操99| 色婷婷亚洲婷婷| 综合欧美日本三级| 在线强奷到舒服的无码视频| 狠日操| 操迟操逼在巾线Fre看| 少妇厨房愉情理伦片bd在线观看| 欧美日本成人一区二区| 丰满人妻一区二区三区色-百度| 熟女少妇视频| 亚洲欧美91| 操一对老熟妇爽上天视频| 免费精品AB| 久草毛片| 日本2020一区二区| 综合自拍| 精品免费囯产一区二区三区| 欲色综合| 麻豆AV一区二区天美传媒| 日韩本不卡视频在线观看 | 欧洲小说色图视频另类| 97操在线| 中文一区在线日| 欧美与日韩97| 久久华人网| 骚日日av| 综合欧美色图| 欧美成人精品欧美一级乱黄一区二… | 欧美日韩在线国产在线| 久热香蕉精品在线视频| 久久久精品无码亚免费| 国产精品熟女丝袜一区二区| 伊人久久艹| 激情五月天婷婷| 精品少妇后入一区二区三区四区人妻巨乳 | 乱伦一二三| 欧美综合国产精品久久丁香| 激情 欧美 亚洲 小说| 无码人妻精品一区二区中文| 国产高清MV操逼视频| 久久久精品中文字幕爱豆| 在线洲亚线| 97网址97| 蜜臀AV成人精品蜜臀| 69超碰综合| 99热色精品| 欧美综合区| 国产精品呦一区二区三区| 100啪啪视频大全| 亚洲久久久| 亚洲青青草| 日本1区2区不卡视频| 中文字幕av丝袜| 夜夜综合| 欧美91精彩| 素颜老阿姨乱情色| 安徽熟妇视频| 欧美后入视频| 怡春苑东京热| 亚洲大色堂| 天天操天天干一区二区 | 快播久久人人aV| 天天看片青娱乐| 久草精品国产99| 东京热男人的天堂精品| 欧美色色色| 真实高潮91| 日韩78m视频| 亚洲精品九九九九九九| 九九九九热| 黑人狂躁日本妞一区二区三区| 最新国产精品久久精品| 久jiu久神马影院| 使劲用力艹少妇视频一区二区| 亚洲 欧美 日韩另类 麻豆| 97香蕉网| 国产熟女完整版中字| 激情久久久| 97色色色综合网站| 一本一道久久综合久久| 明星性猛交ⅹxxx乱大交| 日韩一级特黄av毛片| 五月色综合| 麻豆成人av| 精品一级| 夜夜操青青草| 曰韩精品九九无码| 中文字幕AV片| 亚州性9| 国产精品亚洲高清在线| 丁香五月成人| 精品无码久久久久| 啊啊嗯嗯好爽| 日韩激情中文字幕有码| 亚洲情色五月天 | 九九九九九九九精品视频| 一区二区三区无卡视频在线观看| 全国男人天堂网| 成人av在线播放| 五月丁香色综合| 久偷拍欧美日韩三区| 九九九九免费| 亚洲天堂无码| 天天摸天天碰天天添青青| 人妻夜爽夜夜爽| 91搞逼视频| 激情五月天综合网| 久久视频,这里只有精品| 色激情综合网站| 亚洲精品日韩国产欧美| 97日视频| 日韩欧美加勒比| 99久久久无码国产精品性男| 久久精品视频28| 色噜噜国产精品视频一区二区| 人人插人人摸人人| 少妇六月天| 国产精品久久久久久久久久久久久久吹 | 亚乱色| 亚熟在线| 91综合站| 91色久| 久久超碰av在线| 欧美大香蕉久| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 久热99999| 91在线超高颜值国产| 7月婷婷综合| 97chaopengongkai| www…国产操逼| 午夜福利在线合集| 影音先锋日本一区二区| 色999人与兽| 9精品久久久久| 精品性爱一二三区| 四虎在线播放| 91丨九色丨国产丨人妻在线| 欧美日韩国产中文精品字幕自在自线, | 91男人综合| 免费αⅴ在线观看| 2019天天操天天爽天天拍| 九九碰九九爱97超| 99激情视频| 亚洲做性| A片 AV一级在线播放观看免费| 欧美亚洲美少妇一区二区| 思思热在线视频免费| 国色天香av| 夜夜爽夜夜操| 九九热超碰| 婷婷10月天青娱乐| 牛黄色久午久| 中文字幕色AV| 中国国国产一级特黄毛片| 裸体美女久久久| 亚洲字幕一区二区| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 韩国一级做A片免费的| 大香蕉色欲AV| 激情综合二| 精彩久久中文| 性色av网站| 天天操天天7| 久久九九国产精品| 我想要啊 啊 啊| hd成人一区二区在线| 加勒比色综合| 日本精品高清一二区一本到| 四虎影视永久在线观看精品免费网站| 亚洲日韩美女中文字幕乱| 久久久久久久六六 | 日韩一级欧美一级国产一级台湾| 97超碰69| 91免费看一区二区三区| 日韩一级二级在线| 国内精品a| 校园春色中文字幕AV| 99精品欧美一区二区三区桃色| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 黄片直播三级黄片两女一男| 密臀国产在线| 五月丁香大香蕉| 99精品人妻| 无码一区二区三区四区五区六区七区八区九区十区视频 | 婷婷色综合欧美日韩| 丰满少妇一区二区三区四区观看| 51国产午夜精品视频| 日韩欧美被操黄免费观看| 可以在线观看的黄色网址| 天堂网 主播 亚洲| 爽 好舒服 无码刺激久久| 黄色成年| 九九热九九热| 亚欧毛片基地国产毛片基地| 亚洲色入欧美| 久草视频分类在线| 日韩97P| 丝袜综合| 97欧美性爱| 天天夜夜rb| 国产丝袜美女诱惑| 九九热久久99精品re| 黑人干亚洲| 六月激情网| 91精品无码久久久久久久| 久久久久久九九九九-美女久久久久久久-成人AV| 一级特黄aaa大片在线观看成人一级片在线观看 | 女优视频第10页| 波多野结衣之双飞调教在线播放| 91色伦综合| 91精品黄在线观看| 秋霞怕怕片| 亚洲高清少妇| www.色婷婷| 伊人久久综合影院精品久久久 | 熟女一区二区| 久久久久国产精品喷潮免费观看臀| 欧美综合色图片| 日本淫色网| av在线免费一区二区| 啊啊啊啊免费视频| 午夜欧美J进J出白浆流出久久久| 久久毛卡| 日韩综合色图| 极品久久久久久久久久久久久久| 亚洲乱熟女一区二区三区大香蕉| 久热一区二区| 极品AV网站在线观看| 开心五月深爱五月| AV一区观看| 怡春院久久| 五月天伊人| 国产女人成人精品视频| 视频一区二区免费在线| 人妻熟女一区二区| 1956日韩精品| 亚欧Av| 久久综合九色综合欧洲98| 啊啊啊啊啊啊啊在线| 亚洲性综合9| 久久久久国产精品喷潮免费观看臀| 天美传媒AV在线| 九9热伊人| 亚洲91av| 亚洲AV无码久久久国产精品| 强被迫伦姧在线观看无码网站| 亚洲脚交| 91熟女综合| 亚洲精品男人的天堂| 色欲无码人妻日韩欧美精品| 91制服丝袜中文字幕| www被窝色com| 99999精品视频| 中文字幕性感少妇av| 波多野结衣AV无码一区| 黑人在线91| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 久湿久久| 东京热一区二区三区四区五区六区| 免费综合亚洲中文| 亚洲AV秘无码一区..| 加勒比海人人操超碰在线| 青青欧洲黑| 国产精品久久久视频| 欧美日韩性爱精品| 福利操逼| 亚洲日韩人妻中文字幕一区| 97 国产精品| 欧美A√综合网 | 青青草成人视频在线观看二区| 天美精品av| www.av在线观看| 日韩性爱视频在线免费观看| 欧美亚洲图片| AV女资源| 影音资源男人日韩| 超碰中文字幕人妻草一区| 97香焦色区| 色九九综合| 岛国艾薇凹凸视频天堂| 日韩综合成人免费视频| 九九九九热| 99热这里都是精品| 一摸二插三插| 色网1| 久久国产对白激情浪潮| 欧美久久草熟女| 99在线免费观看| 性爱1区| 嫩草一区二区在线观看| 亚洲精品成人动漫在线| 亚洲自拍偷拍视频在线| 亚洲丝袜综合| 日韩人妻无码不卡网站| 97超碰国产亚洲精品| 婷婷五月天无码| 啊啊啊啊啊在线视频| 国产欧美伊人| 天天综合色| 日本三级日本三级99| 国产一区二区在线电影| 日本天天操| 国产99精品一区二区三区免费| 国产黄色视频久久| 亚洲视频中文一区| 欧美黄页| 白丝AV| 91人妻少妇| 夜夜爽夜夜| 九九九九免费| 亚洲天堂资源网| 色色九区| 热热色中文无码| 四虎影视精品| 色臀AV| 玖玖久久久| 国产视频第二页| 超碰色97| 夜夜躁狠狠躁日日躁av| 日日操夜夜操天天操免费观看麻豆| 日本亚洲嫩草影院啪啪| 青青五月天| 99re99| 大香蕉中文| 欧美人体性爱互联网第一页婷婷日本| 国产精品熟女一区二区三区| 啊啊啊啊啊在线| 大JI巴好深好爽又大又粗视频| 亚洲天堂男人| 国产精品直播在线观看直播| 不卡中文字幕aⅴ在线| 精品久久无码午夜福利| 久久欲| 99re公开精品免费视频| 色乱二区| 2020国产精品| 九九成人| 91网站18在线观看| 欧美超碰96| 欧美亚洲美少妇一区二区| 青青草字幕AV| 国产热av| 美女黄色91| 天天综合网在线观看| 亚洲伊人成综合成人网| 性爱综合一区二区| 亚洲天堂中文字| 亚洲砖码砖专无区2023| 色狠狠综合| 亚州精人品大香蕉| 丰满少妇一区二区三区四区观看 | 无码高清少妇久久| 99国产在线 精品 视频| 久久精视频美日韩在线视频| 国产免费永久精品无码| 天天流夜夜操| 国产婷婷一区| 91久久久久久久| 97ai亚洲| av影片在线观看不卡| 亚洲天天做日日做天天谢日日| 久久久国产亚洲精品系列| 亚洲精品久久久久久久蜜桃臀| 色蜜AV| 少妇69中文| 十八禁电影伊人网| 综合第一页| 成人精品久久久午夜福利| 久久精品中文字幕无码l| 玖玖色综合| 2025亚洲男人天堂| 91丝袜美腿片| 97超碰9| 日韩操逼性鲍| 日本护士高潮| 五月久久HDAV| 亚洲自拍欧美色综合| 女人香蕉久久毛毛片精品| 日本一区二区中文字幕久久| 欧美老妇曰批的视频| 久久婷婷色| 精彩国产视频播放1区2区| 91熟女.com| 啊啊嗯嗯好爽| 国产高清成人mv在线观看| 亚洲综合另类| 亚洲情色在线| 亚洲天堂另类| 五十路六十路七十路熟婆| 国产女人成人精品视频| 亚洲AV资源| 九九九只有精品| 亚洲āv网址在线观看| 国产精品久久成人免费| 人妻夜夜爽天天爽麻豆三区网站 | 丁香五月婷婷五月| 青青国产在线拍揄自揄拍| 97ai亚洲| 草莓精品视频在线免费观看| 久久98| 欧美一区二区成人一卡| 国产精品一区二区三区在线| 91人精品妻入口| 99自拍视频在线| 久久鲁夜| 三四中文字幕| 亚洲最新av无码成人精品区 | av天堂5| 欧美一级欧美三级在线观看| 日本 情色 1区2区3区| 亚洲 欧美 精品专区 极品| 色噜噜人妻丝袜a∨先锋影 | 91精品久久久| 亚洲一区深夜| 亚洲清纯唯美| 日韩一级久久毛片| 99超级碰免费视频| 日韩美女高潮喷水视频| 色汉综合| 黄片www.| 美日韩在线不卡人妻| 亚洲精品97久久| 亚洲综合中文字幕有码| 亚洲熟女综合| 丝袜 中出 制服 人妻 美腿 中文字幕| 91碰超| 久久综合日韩亚洲欧美| 狠狠入| 午夜无码精品免费看性色| 天堂日本亚洲欧美| 欧美日韩色| 国产小黄片在线免费观看| 日韩二三区| 一区二区不卡视| 久久精品美女一区| 中文一区在线日| 欧美真人抽搐一进一出gif| 五月丁香啪啪啪| 怡红院亚洲怡春院av| 免费观看国产小粉嫩喷水精品午| 尻女朋友一夜| 中文字幕AV中出| 免费看欧美美女黄色大片 | 国产精品无码av嫩草| 91在线免费观看处女| 久久欧美激情| 欧美一级A片在线看视频性色| 久干网| 欧美日韩插逼视频| 久久秀这里有精品| 精品国产乱子伦一区二区三区,精品一| 欧亚性爱啪啪| 好舒服视频| 亚洲密乳AV| 熟妇熟女一区二三区| 9Ⅰ老熟女| 人人摸人人干| 91制服丝袜| 去干网最新版| 亚洲欧美啪啪| 91天堂色男人的天堂| 人妻少妇精品久久久| 日韩黄色av中文字幕| 亚洲第一页欧美| 国产毛片毛片4p懂色| 天天日B狠狠操| 一起草视频在线| 天天干天天干天天| 久久久久久加勒比| 超碰成人免费| 91N综合网| 337p大胆噜噜噜噜噜91Av| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 国产精品呦一区二区三区| www.AV有限公司一区| WWW操逼| 日韩激情视频| 眼镜人妻101.com| 天天看特黄的免费网站| 74成人在线| 国精综合一二三区影视| 东京热视频网| 96免费视频在线| www亚洲免费| 传媒免费一区二区三区| 最好看的中文字幕在线2018| 好舒服视频| 久久精品国产亚洲AV嘿嘿| 丝袜狠狠草尤物 91| 殴美在线AⅤ| 后入式999| www色婷婷| 亚洲欧美清纯| 亚洲美乱| 欧美岛国精品在线观看| 亚洲免费日韩在线一区二区| 天天爽夜夜爽夜夜爽精| 亚洲色图美腿丝袜| 波多野结衣先锋影音| 嫩草91| 午夜丁香婷婷| 亚洲丝袜诱惑| 麻豆乱码久久精| 日韩中文字幕精品一区在线| 伊人aaa| 女同性恋久久| 97精品一区二区视频在线观看| 久久99综合| 夜色91| 亚洲五区熟女| 在线国产福利网址导航| 美女爽爽爽刺痛洞洞| 久久久精品国产亚洲AV无码| 日本二三四区| 久久久久久久 九九九九九九九| 狠狠操,使劲操| 传媒免费一区二区三区| 成人福利视频网| 精品国产乱码久久久| 奸色色 男人天堂 天天射| 92性色国产午夜福利在线661 | 就去色综合| 久悠悠av| 免费?级毛片无码?∨蜜芽试看| 狠操91,com| 99久久久99久久91熟女| 97爱爱| 久久久久久久久久久久久久久久9| 国产熟女乱论| 超碰在线91| 宗合情欲网| 十八禁成人网站在线观看| 精品一区二区三区18| 高清不卡一二三区视频......| 三级色综合| 久久亚洲日韩熟女精品| 青青操97| 中文字幕aⅴ在线视频| 快灬快灬 一下爽蜜桃在线观看| 国产性感骚丝袜在线| 日韩亚洲中文字幕在线| 夜夜性| 玖玖资源中文字幕制服丝袜| 国产成人无码高清| 综合久久97| 中文字幕人乱码中文字的预防方法 | 日韩国语字幕| 久久久久免费看少妇A片特黄| 美女上床网站| 二区熟妇韩日| 中文字幕亚韩| 丰满人妻一区二区三区免费| 少妇无码av专区线| 国产后入式在线观看| 欧美最婬乱婬爆婬性视频 | 超碰97在线中文| www.色婷婷| 中文字幕五月婷婷免费| 精品女同一区二区三区| 中美日韩毛片| 欧美在线播放aaaa| 98人妻精品一区二区色欲| 夜夜操夜夜高潮夜夜爽国产精品区| 亚州色图第三区| av天堂天堂av日韩| 精品对白久久不卡| 亚洲999综合| 电影69乱码96| 成人乱码一区二区三少妇| 69麻豆天美| 国产免费一区| 精品人妻1237| 人成午夜免费大片| 91被操| 亚洲图片视频小说| 日韩精品第3页| 人妻久久久久久久久久久久久久久 | av在线不卡一区二区三区| 中文乱码字幕观看|