亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

xvisor時(shí)間虛擬化實(shí)戰(zhàn):從虛擬定時(shí)器設(shè)計(jì)到Guest時(shí)鐘校正

xvisor時(shí)間虛擬化實(shí)戰(zhàn):從虛擬定時(shí)器設(shè)計(jì)到Guest時(shí)鐘校正 1. 為什么專門(mén)聊xvisor的時(shí)間虛擬化1.1 從一次“Guest卡死”說(shuō)起先講個(gè)我實(shí)際踩過(guò)的坑。前兩年在一款A(yù)RM嵌入式板卡上做多系統(tǒng)隔離方案選了xvisor作為T(mén)ype-1 hypervisor跑一個(gè)輕量級(jí)Linux Guest。功能驗(yàn)證基本通過(guò)但跑了一天后發(fā)現(xiàn)Guest的gettimeofday返回值跟墻鐘差了將近40秒再跑幾天直接差到幾分鐘。起初我以為只是NTP沒(méi)同步后來(lái)用串口抓日志發(fā)現(xiàn)vCPU在定時(shí)器中斷里反復(fù)進(jìn)出Guest的時(shí)鐘中斷頻率明顯不對(duì)甚至出現(xiàn)連續(xù)drop tick的情況。這個(gè)問(wèn)題帶我走進(jìn)了xvisor的時(shí)間虛擬化實(shí)現(xiàn)。說(shuō)實(shí)話虛擬化領(lǐng)域大家聊得最多的是CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化時(shí)間虛擬化經(jīng)常被一筆帶過(guò)。但真正做過(guò)hypervisor的人都知道時(shí)間虛擬化是“看著不起眼、做起來(lái)頭疼”的模塊——它跟調(diào)度器、中斷控制器、物理定時(shí)器、Guest內(nèi)部時(shí)鐘源全都有耦合。Guest卡死、時(shí)鐘漂移、性能抖動(dòng)十有八九是時(shí)間虛擬化沒(méi)設(shè)計(jì)好。這篇文章就以xvisor為例掰開(kāi)揉碎講清楚時(shí)間虛擬化是怎么設(shè)計(jì)的。適合三類人看一是做嵌入式虛擬化方案選型的技術(shù)負(fù)責(zé)人想評(píng)估xvisor能不能用二是自己寫(xiě)或維護(hù)hypervisor的開(kāi)發(fā)者想?yún)⒖家惶卓陕涞氐膖imer虛擬化設(shè)計(jì)三是正在被“Guest時(shí)鐘不準(zhǔn)”“定時(shí)器中斷風(fēng)暴”之類問(wèn)題折磨的運(yùn)維和驅(qū)動(dòng)開(kāi)發(fā)同學(xué)。1.2 xvisor是誰(shuí)為什么拿它當(dāng)例子xvisor是一個(gè)開(kāi)源Type-1 hypervisor主打輕量、可移植官方支持ARM、x86、RISC-V等架構(gòu)在嵌入式領(lǐng)域常被拿來(lái)跟KVM、Xen、Xenomai這類方案做對(duì)比。它的代碼量比Linux內(nèi)核小好幾個(gè)數(shù)量級(jí)但虛擬化核心要素齊全CPU虛擬化、設(shè)備模型、中斷虛擬化、時(shí)間虛擬化都有完整實(shí)現(xiàn)。也正因?yàn)榇a規(guī)??煽胤浅_m合用來(lái)“解剖”虛擬化內(nèi)部原理。選xvisor講時(shí)間虛擬化還有一個(gè)重要原因它的設(shè)計(jì)思路很“直給”。不像大型hypervisor那樣為了兼容各種硬件而堆滿條件分支xvisor在時(shí)間子系統(tǒng)的抽象上做得很精簡(jiǎn)——核心對(duì)象少、依賴關(guān)系清晰、中斷流明確。讀懂它的時(shí)間虛擬化再回頭看KVM的kvm-clock、Xen的xen_timer會(huì)發(fā)現(xiàn)底層邏輯是相通的只是工程復(fù)雜度不同。這篇文章我不會(huì)只貼源碼也不會(huì)只講理論。我會(huì)從“Guest感知的時(shí)間到底是什么”這個(gè)根問(wèn)題出發(fā)拆解xvisor的設(shè)計(jì)取舍然后給出我在實(shí)際編譯、配置、驗(yàn)證過(guò)程中用到的操作步驟和調(diào)試命令最后把我踩過(guò)的坑整理成排查清單。保證你看完能對(duì)時(shí)間虛擬化有一個(gè)完整的、可復(fù)用的認(rèn)知框架。2. 時(shí)間虛擬化的核心難點(diǎn)Guest眼中的“時(shí)間”從哪來(lái)2.1 三條時(shí)間線Guest同時(shí)在用三套時(shí)鐘要理解時(shí)間虛擬化先得搞清楚虛擬機(jī)里的“時(shí)間”不是一個(gè)東西。實(shí)際運(yùn)行中一個(gè)Guest至少依賴三條時(shí)間線。第一是墻鐘時(shí)間wall clock也就是人類可讀的日期時(shí)間比如2025年幾月幾日幾點(diǎn)幾分。Guest里的用戶程序調(diào)用clock_gettime(CLOCK_REALTIME)拿到的基本是這條線。墻鐘時(shí)間通常是軟件維護(hù)的根節(jié)點(diǎn)是某個(gè)RTC芯片或網(wǎng)絡(luò)時(shí)間協(xié)議。第二是單調(diào)遞增時(shí)間monotonic time用來(lái)計(jì)算時(shí)間差、超時(shí)判斷比如clock_gettime(CLOCK_MONOTONIC)。這條線不能被用戶跳變只能單調(diào)往前走。內(nèi)核里的jiffies、高精度定時(shí)器hrtimer都依賴它。第三是硬件定時(shí)器時(shí)間線。CPU或者SoC內(nèi)部有周期性的硬件定時(shí)器——ARM的Generic Timer、x86的TSC/APIC timer、RISC-V的mtime等。操作系統(tǒng)用它來(lái)產(chǎn)生周期性tick中斷驅(qū)動(dòng)調(diào)度器、時(shí)間輪、延遲執(zhí)行等機(jī)制。三條時(shí)間線各有各的虛擬化難點(diǎn)。墻鐘時(shí)間主要是“怎么把宿主機(jī)的當(dāng)前時(shí)間安全地給Guest”單調(diào)時(shí)間主要涉及“offset和速率怎么折算”硬件定時(shí)器則是真正的硬骨頭——因?yàn)镚uest要直接操作硬件定時(shí)器寄存器而hypervisor必須截獲這些訪問(wèn)并進(jìn)行模擬。2.2 直接透?jìng)鞯闹旅鼏?wèn)題Guest能碰到物理中斷有人可能會(huì)問(wèn)既然ARM有Generic Timer這種虛擬化友好的硬件直接把定時(shí)器硬件給Guest用不就行了問(wèn)題沒(méi)那么簡(jiǎn)單。ARM Generic Timer確實(shí)提供了CNTVCT虛擬計(jì)數(shù)器、CNTVOFF虛擬偏移、CNTV_TVAL虛擬定時(shí)器這些機(jī)制硬件層面就已經(jīng)支持時(shí)間虛擬化。但xvisor的目標(biāo)是通過(guò)設(shè)備樹(shù)描述虛擬平臺(tái)要支持不同板卡、不同ARM實(shí)現(xiàn)不能默認(rèn)所有平臺(tái)都帶完整的虛擬化定時(shí)器擴(kuò)展。更重要的是即使硬件支持Guest對(duì)定時(shí)器的訪問(wèn)仍然會(huì)產(chǎn)生虛擬中斷hypervisor必須參與中斷路由。直接透?jìng)髯畹湫偷臑?zāi)難是Guest把定時(shí)器的觸發(fā)周期設(shè)置得極短比如每10微秒產(chǎn)生一次中斷而且沒(méi)有經(jīng)過(guò)hypervisor的rate limiting物理CPU就被中斷風(fēng)暴占滿其他vCPU完全餓死。又比如Guest在suspend時(shí)把定時(shí)器關(guān)閉但hypervisor不知道導(dǎo)致喚醒后時(shí)間完全錯(cuò)亂。所以xvisor的總體思路很明確虛擬定時(shí)器必須由hypervisor統(tǒng)一管理Guest不能直接拿到物理定時(shí)器的全部控制權(quán)。2.3 時(shí)間虛擬化的三個(gè)基本操作Offset、Dilation、Injection拋開(kāi)硬件細(xì)節(jié)時(shí)間虛擬化本質(zhì)上就是對(duì)Guest可見(jiàn)的時(shí)間軸做三個(gè)操作。第一個(gè)是Offset偏移。虛擬機(jī)的啟動(dòng)時(shí)間點(diǎn)通常不等于宿主機(jī)的時(shí)間零點(diǎn)而且多個(gè)虛擬機(jī)可能要求看到不同的“當(dāng)前時(shí)間”。hypervisor維護(hù)一個(gè)基準(zhǔn)時(shí)間點(diǎn)為每個(gè)Guest計(jì)算一個(gè)偏移量。Guest讀時(shí)間時(shí)hypervisor返回“物理時(shí)間 offset”。第二個(gè)是Dilation縮放。虛擬機(jī)的時(shí)鐘速率不一定跟物理時(shí)鐘1:1。調(diào)試場(chǎng)景里經(jīng)常需要“放慢”Guest的時(shí)間比如把Guest的時(shí)鐘減速到0.5倍速這樣跑定時(shí)器相關(guān)的競(jìng)態(tài)條件時(shí)更容易復(fù)現(xiàn)。反過(guò)來(lái)性能測(cè)試時(shí)又想讓Guest時(shí)間盡量貼近物理時(shí)間。實(shí)現(xiàn)縮放最簡(jiǎn)單的方法是修改虛擬定時(shí)器的周期——物理定時(shí)器每10ms觸發(fā)一次但告訴Guest每次都過(guò)了20msGuest感知的時(shí)間就被拉伸了兩倍。第三個(gè)是Injection注入。虛擬定時(shí)器到期后hypervisor不能直接讓物理中斷打到Guest的向量表里而是需要構(gòu)造一個(gè)虛擬中斷通過(guò)中斷控制器的虛擬化接口注入給指定的vCPU。注入的時(shí)機(jī)、優(yōu)先級(jí)、目標(biāo)vCPU選擇都有講究做不好就會(huì)出現(xiàn)中斷丟失或者重復(fù)注入。xvisor的時(shí)間虛擬化本質(zhì)就是一套把這三件事做扎實(shí)的框架。3. xvisor的時(shí)間虛擬化設(shè)計(jì)拆解3.1 兩層定時(shí)器Host Timer與Virtual Timer先區(qū)分兩個(gè)概念xvisor代碼里明確區(qū)分了“主機(jī)定時(shí)器”host timer和“虛擬定時(shí)器”virtual timer。這個(gè)概念如果不厘清代碼會(huì)越看越亂。Host Timer是物理定時(shí)器由xvisor自身使用用于產(chǎn)生hypervisor內(nèi)部的心跳tick——調(diào)度器的時(shí)間片輪轉(zhuǎn)、延遲任務(wù)、超時(shí)檢查都靠它。xvisor把物理定時(shí)器配置成固定周期比如配置CONFIG_SCHED_PERIOD相關(guān)的值每次中斷到來(lái)時(shí)xvisor的時(shí)間子系統(tǒng)統(tǒng)一處理。Virtual Timer是給每個(gè)Guest vCPU仿真的定時(shí)器。每個(gè)vCPU維護(hù)自己的虛擬定時(shí)器狀態(tài)——什么時(shí)候到期、周期多少、中斷注入給誰(shuí)。Guest在設(shè)備樹(shù)里看到的定時(shí)器節(jié)點(diǎn)就是xvisor為它創(chuàng)建的一個(gè)虛擬設(shè)備。這樣的兩層設(shè)計(jì)有一個(gè)明顯好處物理定時(shí)器只有一個(gè)中斷頻率可控可預(yù)測(cè)虛擬定時(shí)器數(shù)量可以任意多且互相隔離。Guest無(wú)論怎么折騰自己的定時(shí)器配置影響的只是它自己的虛擬定時(shí)器上下文物理中斷的穩(wěn)定節(jié)奏始終由hypervisor掌握。3.2 核心對(duì)象timer、timer_event、vcpu_timexvisor的時(shí)間虛擬化核心代碼在core/time.c和對(duì)應(yīng)架構(gòu)的arch/arm/time.cARM平臺(tái)。語(yǔ)言用的是C但我先不貼大段源碼而是把里面的關(guān)鍵對(duì)象捋清楚。第一個(gè)核心對(duì)象是struct timer代表一個(gè)“到點(diǎn)需要處理”的注冊(cè)項(xiàng)。它包含回調(diào)函數(shù)、參數(shù)、到期時(shí)間、周期標(biāo)志等。xvisor的定時(shí)器管理類似內(nèi)核的timer wheel但精簡(jiǎn)得多基本是一個(gè)按到期時(shí)間排序的單向鏈表。注冊(cè)一個(gè)定時(shí)器意味著把回調(diào)掛到鏈表上時(shí)間一到回調(diào)執(zhí)行。第二個(gè)核心對(duì)象是struct timer_event這是虛擬定時(shí)器的事件描述。每個(gè)vCPU維護(hù)一個(gè)timer_event代表該vCPU當(dāng)前正在等待的虛擬定時(shí)器到期點(diǎn)。Guest設(shè)置CNTP_TVAL或CNTV_TVAL時(shí)xvisor把它翻譯成一個(gè)絕對(duì)到期時(shí)間掛到timer_event上。第三個(gè)核心對(duì)象可以叫vcpu_time context它記錄了虛擬時(shí)間與物理時(shí)間的換算關(guān)系offset、dilation系數(shù)、上次同步點(diǎn)等。每次Guest讀取虛擬計(jì)數(shù)器時(shí)xvisor根據(jù)這個(gè)context計(jì)算出返回值。這三個(gè)對(duì)象的關(guān)系是物理tick到達(dá) → host timer鏈表中找到最近的timer_event → 判斷哪個(gè)vCPU的虛擬定時(shí)器到期 → 更新vcpu_time context → 構(gòu)造虛擬中斷注入給目標(biāo)vCPU。3.3 虛擬中斷的流轉(zhuǎn)路徑從物理中斷到Guest中斷向量中斷路徑是時(shí)間虛擬化里最容易出bug的地方。我梳理一下xvisor在這條鏈路上做了什么。首先是物理中斷入口。ARM架構(gòu)下定時(shí)器中斷是PPIPrivate Peripheral Interrupt每個(gè)CPU獨(dú)立。xvisor在啟動(dòng)階段把物理定時(shí)器中斷注冊(cè)到自己的中斷處理框架里中斷到來(lái)先進(jìn)入hypervisor的異常處理向量。然后是host timer處理。xvisor的時(shí)間子系統(tǒng)調(diào)用timer_expire之類邏輯遍歷定時(shí)器鏈表找出所有到期項(xiàng)。這里有一個(gè)實(shí)現(xiàn)細(xì)節(jié)鏈表項(xiàng)不是簡(jiǎn)單地刪除而是會(huì)先判斷是單次定時(shí)器還是周期定時(shí)器。單次定時(shí)器直接摘除周期定時(shí)器則重新計(jì)算下一次到期時(shí)間并重新入鏈。接著是虛擬到期判定。每個(gè)timer_event到期并不意味著Guest一定需要中斷。xvisor會(huì)先比較虛擬定時(shí)器的到期時(shí)間和當(dāng)前虛擬時(shí)間如果還沒(méi)有真正到期說(shuō)明是host timer提前醒了的“偽喚醒”直接跳過(guò)。只有真正的到期才進(jìn)入下一步。最后是虛擬中斷注入。xvisor調(diào)用中斷控制器的虛擬化接口把虛擬定時(shí)器中斷置為pending狀態(tài)。對(duì)于ARM GIC這通常涉及GICD_ISPENDR或者使用GIC的虛擬化擴(kuò)展GICv2/v3的list register機(jī)制。注入的目標(biāo)必須是定時(shí)器所屬vCPU當(dāng)前正在運(yùn)行的物理CPU否則還要考慮vCPU遷移帶來(lái)的中斷路由問(wèn)題。這條路徑如果捋清楚了調(diào)試時(shí)間虛擬化就有抓手。每次“Guest時(shí)間不準(zhǔn)”的問(wèn)題本質(zhì)上可以歸因到這條鏈路中的某一環(huán)offset計(jì)算錯(cuò)、虛擬到期判定錯(cuò)、中斷注入丟、物理中斷頻率抖動(dòng)。3.4 設(shè)計(jì)取舍為什么這么精簡(jiǎn)代價(jià)是什么xvisor的時(shí)間虛擬化設(shè)計(jì)主打精簡(jiǎn)這是有代價(jià)的理解取舍比記代碼更有價(jià)值。第一個(gè)取舍是用鏈表而不是紅黑樹(shù)或時(shí)間輪管理定時(shí)器。xvisor面向嵌入式場(chǎng)景虛擬機(jī)的數(shù)量、定時(shí)器數(shù)量都不會(huì)特別大鏈表在幾十個(gè)節(jié)點(diǎn)規(guī)模下表現(xiàn)足夠而且實(shí)現(xiàn)簡(jiǎn)單、便于驗(yàn)證。代價(jià)是定時(shí)器數(shù)量多時(shí)插入復(fù)雜度為O(n)但實(shí)際場(chǎng)景中很少成為瓶頸。第二個(gè)取舍是把虛擬時(shí)間映射做成線性關(guān)系offset dilation而不是像KVM那樣做復(fù)雜的時(shí)鐘源切換。線性映射的優(yōu)點(diǎn)是計(jì)算開(kāi)銷小、Guest看到的時(shí)間連續(xù)缺點(diǎn)是無(wú)法精確模擬“Guest暫停期間時(shí)間不走”這類的特殊語(yǔ)義只能靠offset調(diào)整來(lái)補(bǔ)償。第三個(gè)取舍是以tick為基本驅(qū)動(dòng)而不是完全事件驅(qū)動(dòng)。xvisor的host timer按固定周期走周期內(nèi)所有虛擬定時(shí)器到期行為都會(huì)延遲到下一個(gè)tick統(tǒng)一處理。這樣會(huì)引入最多一個(gè)tick周期的延遲但對(duì)大多數(shù)嵌入式Guest來(lái)說(shuō)完全可接受而換來(lái)的是實(shí)現(xiàn)簡(jiǎn)單、不用頻繁配置物理定時(shí)器。這三個(gè)取舍合在一起就是xvisor時(shí)間虛擬化“小而美”的底層邏輯。你要真想給別人講清楚xvisor的時(shí)間虛擬化把這幾個(gè)取舍講明白比背代碼更有說(shuō)服力。4. 實(shí)操?gòu)木幾g配置到時(shí)間正確性驗(yàn)證4.1 配置xvisor時(shí)間相關(guān)選項(xiàng)理論講完動(dòng)手環(huán)節(jié)還是要走的。我在QEMU模擬的ARM平臺(tái)用virt機(jī)器上做過(guò)完整的xvisor Linux Guest驗(yàn)證。第一步是編譯xvisor時(shí)間虛擬化主要關(guān)系到幾個(gè)配置宏。xvisor的配置在config/arm/下一般先復(fù)制默認(rèn)配置再改。時(shí)間相關(guān)的關(guān)鍵項(xiàng)大致有CONFIG_SCHED_PERIOD物理調(diào)度周期也就是host timer的tick周期。默認(rèn)值通常是1000000納秒1ms。這個(gè)值直接決定定時(shí)器中斷頻率影響虛擬定時(shí)器到期精度。CONFIG_TIMER_FREQ虛擬定時(shí)器頻率基準(zhǔn)ARM平臺(tái)往往對(duì)應(yīng)Generic Timer的頻率通常在設(shè)備樹(shù)里聲明。CONFIG_MAX_VCPUS_PER_GUEST單Guest的最大vCPU數(shù)會(huì)影響每vCPU定時(shí)器上下文的分配。我實(shí)測(cè)時(shí)把CONFIG_SCHED_PERIOD調(diào)成1000000Guest的dmesg里時(shí)鐘源是arch_sys_countertick穩(wěn)定在1000Hz左右。如果你想要更高精度的虛擬定時(shí)器可以把CONFIG_SCHED_PERIOD調(diào)小到100000100微秒但代價(jià)是hypervisor自身的中斷開(kāi)銷會(huì)明顯變大跑高負(fù)載時(shí)會(huì)看到宿主機(jī)CPU占用上升。注意xvisor的配置項(xiàng)不是每個(gè)版本都一樣源碼版本不同宏名可能略有差異。建議先查config/arm/*.conf里的實(shí)際定義再對(duì)照include/下的頭文件確認(rèn)宏作用別盲目照抄老文章的配置。編譯命令我用的經(jīng)典三連cd xvisor make ARCHarm CROSS_COMPILEaarch64-linux-gnu- defconfig # 手動(dòng)調(diào)整.config里時(shí)間相關(guān)項(xiàng) make ARCHarm CROSS_COMPILEaarch64-linux-gnu- -j8編譯產(chǎn)物是xvisor二進(jìn)制和xvisor.dtb。虛擬機(jī)鏡像和文件系統(tǒng)我是用buildroot現(xiàn)成做的這里就不展開(kāi)了。4.2 設(shè)備樹(shù)里的定時(shí)器節(jié)點(diǎn)Guest看到的虛擬定時(shí)器xvisor通過(guò)設(shè)備樹(shù)向Guest描述虛擬硬件。在xvisor的dts/目錄下你可以找到arm虛擬平臺(tái)的設(shè)備樹(shù)模板定時(shí)器節(jié)點(diǎn)大概長(zhǎng)這樣timer { compatible arm,armv8-timer; interrupts GIC_PPI 13 IRQ_TYPE_LEVEL_LOW, GIC_PPI 14 IRQ_TYPE_LEVEL_LOW, GIC_PPI 11 IRQ_TYPE_LEVEL_LOW, GIC_PPI 10 IRQ_TYPE_LEVEL_LOW; clock-frequency 62500000; };這個(gè)節(jié)點(diǎn)對(duì)Guest來(lái)說(shuō)就是它的物理定時(shí)器但實(shí)際上x(chóng)visor會(huì)把clock-frequency聲明的頻率作為虛擬定時(shí)器的頻率而不是直接透?jìng)髡鎸?shí)頻率。這里有個(gè)容易踩的坑clock-frequency的值必須跟CONFIG_TIMER_FREQ配合好。如果設(shè)備樹(shù)里聲明的是62.5MHz而xvisor內(nèi)部用的基準(zhǔn)是50MHzGuest里的clock_gettime跑一段時(shí)間后就會(huì)出現(xiàn)整數(shù)倍的漂移。建議的做法是把設(shè)備樹(shù)里的clock-frequency跟實(shí)際板卡的真實(shí)timer頻率解耦單獨(dú)定義一個(gè)對(duì)齊xvisor內(nèi)部頻率的值保證虛擬計(jì)數(shù)器換算關(guān)系閉合。Guest內(nèi)核起來(lái)后可以通過(guò)以下命令確認(rèn)它看到的定時(shí)器信息cat /sys/devices/system/clockevents/clockevent0/current_device cat /proc/interrupts | grep arch_timer cat /proc/timer_list | head -50正常情況下Guest應(yīng)該能看到arch_timer事件設(shè)備并且中斷計(jì)數(shù)會(huì)隨時(shí)間穩(wěn)定增長(zhǎng)。如果中斷計(jì)數(shù)不動(dòng)說(shuō)明虛擬定時(shí)器中斷沒(méi)有注入成功需要優(yōu)先檢查GIC的虛擬中斷配置。4.3 驗(yàn)證時(shí)間正確性的三板斧配置好之后怎么判斷時(shí)間虛擬化是“對(duì)的”我總結(jié)了三板斧。第一板斧是單調(diào)性驗(yàn)證。在Guest里寫(xiě)一個(gè)簡(jiǎn)單循環(huán)反復(fù)讀取CLOCK_MONOTONIC確認(rèn)返回值嚴(yán)格遞增不倒退。時(shí)間虛擬化做得粗糙時(shí)最容易出現(xiàn)“時(shí)間倒流”——因?yàn)樘摍C(jī)在suspend時(shí)沒(méi)做好offset補(bǔ)償恢復(fù)瞬間Guest看到的時(shí)間比暫停前還要早。我用的一個(gè)極簡(jiǎn)腳本思路大致是#!/bin/bash prev0 for i in $(seq 1 100000); do cur$(date %s%N) if [ $cur -lt $prev ]; then echo time go backwards: $prev - $cur break fi prev$cur done第二板斧是對(duì)比驗(yàn)證。同時(shí)記錄宿主機(jī)和Guest的時(shí)間換算成同一個(gè)參考系打點(diǎn)對(duì)比。不是要求完全一致而是要求偏移量在一段時(shí)間內(nèi)保持相對(duì)穩(wěn)定波動(dòng)在可接受范圍。如果Guest時(shí)間線性偏離宿主機(jī)通常是dilation參數(shù)不對(duì)如果忽快忽慢通常是虛擬定時(shí)器到期處理不穩(wěn)定。第三板斧是壓力驗(yàn)證。在Guest里跑周期性任務(wù)比如每10ms打印一個(gè)時(shí)間戳連續(xù)跑一小時(shí)。人為給宿主機(jī)加負(fù)載比如同時(shí)跑多個(gè)CPU密集型vCPU或?qū)崟r(shí)任務(wù)觀察打印間隔是否穩(wěn)定。時(shí)間虛擬化最怕的就是“鄰居干擾”——?jiǎng)e的vCPU忙的時(shí)候你的虛擬定時(shí)器到期被拖后造成Guest端的定時(shí)器延遲。xvisor在這塊的短板是它的調(diào)度器比較簡(jiǎn)單虛擬定時(shí)器到期后如果目標(biāo)vCPU不在運(yùn)行中中斷注入后要等該vCPU被調(diào)度才能被處理延遲會(huì)疊加。實(shí)測(cè)中2個(gè)vCPU的Guest在高負(fù)載下定時(shí)器周期的抖動(dòng)大概在幾個(gè)毫秒量級(jí)對(duì)于非實(shí)時(shí)場(chǎng)景能接受。4.4 用QEMU的虛擬時(shí)間做快速驗(yàn)證如果手上沒(méi)有真實(shí)板卡QEMU是一個(gè)很趁手的驗(yàn)證環(huán)境。QEMU自身支持時(shí)間虛擬化相關(guān)參數(shù)比如-rtc、-icount。在調(diào)試xvisor時(shí)間虛擬化時(shí)我通常用如下命令啟動(dòng)qemu-system-aarch64 -machine virt -cpu cortex-a57 \ -kernel xvisor -dtb xvisor.dtb -m 1024 \ -nographic \ -append consolettyAMA0啟動(dòng)后進(jìn)入xvisor的shell再加載Guest鏡像。這種環(huán)境下驗(yàn)證時(shí)間虛擬化的好處是QEMU的時(shí)鐘可控可以通過(guò)-icount控制虛擬CPU的指令執(zhí)行速度方便制造時(shí)間壓力場(chǎng)景。我曾在-icount 2大約每2條指令一個(gè)時(shí)鐘tick下跑Guest明顯看到Guest的定時(shí)器中斷被拉伸這正是驗(yàn)證dilation語(yǔ)義的好場(chǎng)景。提示QEMU環(huán)境下時(shí)間虛擬化的表現(xiàn)跟真實(shí)硬件差異很大尤其是ARM Generic Timer的虛擬化擴(kuò)展在QEMU里是模擬的性能不能代表真實(shí)板卡。它適合驗(yàn)證邏輯正確性不適合做性能評(píng)估。5. 常見(jiàn)問(wèn)題與排查實(shí)錄5.1 Guest系統(tǒng)時(shí)間漂移嚴(yán)重現(xiàn)象Guest里date顯示的時(shí)間比實(shí)際時(shí)間慢或快很多運(yùn)行越久差得越多。排查步驟先區(qū)分是墻鐘時(shí)間漂移還是單調(diào)時(shí)鐘漂移。在Guest里分別執(zhí)行date和cat /proc/uptime對(duì)比兩者的增長(zhǎng)速度。如果uptime正常而date偏慢問(wèn)題在墻鐘時(shí)間同步——NTP或者RTC虛擬化沒(méi)做好如果兩者都偏問(wèn)題更可能在虛擬計(jì)數(shù)器頻率配置不對(duì)。解決方案墻鐘問(wèn)題優(yōu)先檢查xvisor的RTC虛擬化是否工作Guest里是否有/dev/rtc。頻率問(wèn)題檢查設(shè)備樹(shù)的clock-frequency和xvisor的CONFIG_TIMER_FREQ是否對(duì)齊。我在板卡上遇到過(guò)一次典型問(wèn)題設(shè)備樹(shù)時(shí)鐘頻率寫(xiě)的是62.5MHz但xvisor內(nèi)部CONFIG_TIMER_FREQ還是默認(rèn)的50MHz導(dǎo)致Guest時(shí)間線性慢20%修改后恢復(fù)正常。5.2 vCPU卡死或中斷風(fēng)暴現(xiàn)象Guest啟動(dòng)后頻繁出現(xiàn)soft lockup/proc/interrupts里arch_timer中斷數(shù)增長(zhǎng)異??靽?yán)重時(shí)整個(gè)Guest無(wú)響應(yīng)。排查步驟先用串口進(jìn)xvisor shell查看vCPU狀態(tài)vcpu list觀察目標(biāo)vCPU是否反復(fù)進(jìn)出hypervisor。然后查host timer的實(shí)際觸發(fā)頻率確定是不是某個(gè)虛擬定時(shí)器被反復(fù)注冊(cè)成短周期。xvisor的timer命令通??梢詃ump當(dāng)前的定時(shí)器鏈表timer如果發(fā)現(xiàn)大量到期時(shí)間相等的短周期定時(shí)器基本就是Guest的定時(shí)器配置被錯(cuò)誤透?jìng)骰蛘咛摂M中斷注入后Guest沒(méi)有正確應(yīng)答導(dǎo)致中斷反復(fù)重注入。解決方案多數(shù)情況是虛擬中斷的清除語(yǔ)義沒(méi)做對(duì)。ARM Generic Timer的虛擬中斷是level-sensitive的Guest必須清除CNTV_CTL的enable位或重寫(xiě)CNTV_TVAL才能拉低中斷線。如果xvisor在注入后沒(méi)有同步更新定時(shí)器狀態(tài)Guest清了中斷但hypervisor認(rèn)為還沒(méi)清就會(huì)陷入注入-清除-再注入的循環(huán)。檢查arch/arm/time.c里的timer_event更新邏輯確保在注入虛擬中斷前已經(jīng)把該定時(shí)器標(biāo)記為“已到期并等待Guest處理”而不是“周期性重新觸發(fā)”。5.3 掛起/恢復(fù)后時(shí)間跳變現(xiàn)象Guest執(zhí)行suspend比如echo mem /sys/power/state到resume后系統(tǒng)時(shí)間要么跳到未來(lái)要么完全不動(dòng)。排查步驟這個(gè)問(wèn)題的本質(zhì)是掛起期間物理定時(shí)器停了但虛擬時(shí)間還在按物理時(shí)間累加或者反過(guò)來(lái)。xvisor時(shí)間子系統(tǒng)需要感知Guest的電源狀態(tài)變化。解決方案在xvisor里增加一個(gè)電源狀態(tài)遷移時(shí)的“時(shí)間凍結(jié)”處理Guest進(jìn)入suspend時(shí)記錄當(dāng)前虛擬時(shí)間快照Guest resume時(shí)重新校準(zhǔn)vcpu_time context的offset使Guest看到的單調(diào)時(shí)間在掛起期間保持不變或按預(yù)期補(bǔ)償。這部分的實(shí)現(xiàn)復(fù)雜度取決于虛擬平臺(tái)怎么建模電源管理。我的建議是優(yōu)先保證offset補(bǔ)償也就是suspend期間不走虛擬時(shí)間把這次掛起產(chǎn)生的物理時(shí)間差不做累加。5.4 和KVM、Xen的時(shí)間虛擬化對(duì)比聊完xvisor的排查實(shí)錄再橫向?qū)Ρ纫幌缕渌桨改芨宄visor的定位。對(duì)比維度xvisorKVMLinux內(nèi)核Xen時(shí)鐘源虛擬化方式線性映射offsetdilationkvm-clock半虛擬化 TSC/ACPI虛擬化Xen共享信息頁(yè) hypercall定時(shí)器中斷注入虛擬中斷直接注入vCPU通過(guò)KVM的irqchip vcpu定時(shí)器事件通道注入精度上限依賴host tick頻率約1ms量級(jí)可支持ns級(jí)精度kvm-clock亞毫秒級(jí)復(fù)雜度低便于閱讀和二次開(kāi)發(fā)高功能全面但代碼龐大高分域模型復(fù)雜典型場(chǎng)景嵌入式、資源受限、需要高可控性的場(chǎng)景服務(wù)器、云主機(jī)、桌面虛擬化服務(wù)器虛擬化、云基礎(chǔ)設(shè)施這個(gè)對(duì)比不是要分高下而是說(shuō)明xvisor在時(shí)間虛擬化上的設(shè)計(jì)目標(biāo)是“夠用、可控、可移植”。如果你需要納秒級(jí)精度的時(shí)間虛擬化xvisor確實(shí)不是首選但你要是想在嵌入式場(chǎng)景里搞清楚時(shí)間虛擬化是怎么回事xvisor的代碼是很好的入門(mén)教材。5.5 那些“嵌套虛擬化”報(bào)錯(cuò)其實(shí)也和時(shí)間相關(guān)熱搜詞里有一堆“vmware嵌套虛擬化失敗”“此平臺(tái)不支持虛擬化AMD-V”“模塊hv啟動(dòng)失敗”之類的報(bào)錯(cuò)很多人以為是CPU特性問(wèn)題其實(shí)有一部分和時(shí)間虛擬化脫不了干系。舉個(gè)例子VMware Workstation啟用了嵌套虛擬化后如果虛擬機(jī)里的系統(tǒng)讀到的TSC頻率跟宿主機(jī)的實(shí)際TSC頻率不一致高精度定時(shí)器就會(huì)錯(cuò)亂輕則報(bào)錯(cuò)重則直接無(wú)法啟動(dòng)。另一類“HV啟動(dòng)失敗”的場(chǎng)景里時(shí)間同步驅(qū)動(dòng)VMware Tools的time sync和hypervisor的時(shí)鐘源沖突也是常見(jiàn)原因。這類報(bào)錯(cuò)給的提示往往只有一句話但排查思路是類似的先確認(rèn)宿主機(jī)的虛擬化特性是否完整egrep -c (vmx|svm) /proc/cpuinfo再確認(rèn)虛擬機(jī)內(nèi)部的時(shí)間源、時(shí)鐘源信息是否正常最后檢查hypervisor的時(shí)間同步機(jī)制是否被安全軟件或系統(tǒng)策略關(guān)閉了。這些經(jīng)驗(yàn)跟xvisor的時(shí)間虛擬化本質(zhì)上是相通的——時(shí)間源沖突、頻率不一致、中斷注入失敗是虛擬化領(lǐng)域共通的坑。6. 調(diào)試xvisor時(shí)間子系統(tǒng)的幾個(gè)技巧6.1 用日志定位時(shí)間問(wèn)題xvisor自帶日志系統(tǒng)可以通過(guò)配置打開(kāi)精細(xì)日志。排查時(shí)間虛擬化問(wèn)題時(shí)我習(xí)慣先把這幾個(gè)日志開(kāi)關(guān)打開(kāi)# xvisor啟動(dòng)參數(shù)或config里開(kāi)啟 log-level debug重點(diǎn)關(guān)注兩類日志一類是定時(shí)器中斷處理路徑的日志能看到物理tick何時(shí)到、虛擬定時(shí)器何時(shí)到期另一類是虛擬中斷注入日志——每次給vCPU注入timer中斷時(shí)的目標(biāo)vCPU和當(dāng)前物理CPU。實(shí)際調(diào)試中我發(fā)現(xiàn)最有效的方法是在vcpu_time context的每次更新處加一條臨時(shí)打印記錄物理時(shí)間、虛擬時(shí)間、offset三個(gè)值。把一組數(shù)據(jù)抓下來(lái)數(shù)據(jù)之間的線性關(guān)系一目了然偏移量是常量還是變化量、速率是否偏差這些都能直接算出來(lái)。等到問(wèn)題確認(rèn)后再把打印關(guān)掉。6.2 構(gòu)造最小復(fù)現(xiàn)場(chǎng)景時(shí)間虛擬化的問(wèn)題往往要跑很久才暴露復(fù)現(xiàn)困難。我的經(jīng)驗(yàn)是把場(chǎng)景“時(shí)間壓縮”把虛擬定時(shí)器的周期調(diào)到極短把host tick調(diào)大人為放大時(shí)間偏差。比如正常場(chǎng)景虛擬定時(shí)器是10ms周期調(diào)試時(shí)改成1ms連續(xù)跑10秒相當(dāng)于把問(wèn)題放大了10倍。另外同時(shí)跑兩個(gè)周期相差很遠(yuǎn)的Guest也是好辦法。一個(gè)Guest跑快速tick另一個(gè)Guest跑慢速tick兩者在同一個(gè)host timer上競(jìng)爭(zhēng)很容易暴露出調(diào)度器和時(shí)間管理器之間的優(yōu)先級(jí)問(wèn)題。6.3 如果我要二次開(kāi)發(fā)從哪入手如果你讀完這篇文章想在xvisor基礎(chǔ)上改時(shí)間虛擬化我建議按這個(gè)順序入手第一步先熟悉vcpu_time context的維護(hù)邏輯動(dòng)手改offset和dilation的換算跑Guest觀察時(shí)間變化。這個(gè)改動(dòng)最小、驗(yàn)證最快能建立直觀感覺(jué)。第二步改虛擬定時(shí)器的到期處理比如把單次觸發(fā)改成周期觸發(fā)或者加入“定時(shí)器追趕”邏輯。這一步能讓你理解物理tick到虛擬中斷的完整路徑。第三步再動(dòng)中斷注入的細(xì)節(jié)比如調(diào)整虛擬中斷的優(yōu)先級(jí)、目標(biāo)vCPU選擇策略。這一步最容易引入回歸務(wù)必配合第4節(jié)的驗(yàn)證三板斧做充分測(cè)試。總的來(lái)說(shuō)xvisor的時(shí)間虛擬化雖然精簡(jiǎn)但五臟俱全。它的設(shè)計(jì)沒(méi)有太多花活卻把時(shí)間虛擬化的核心問(wèn)題——時(shí)間線管理、硬件定時(shí)器抽象、虛擬中斷注入——都表達(dá)清楚了。讀它的代碼比讀大型hypervisor里動(dòng)輒上萬(wàn)行的時(shí)鐘框架要友好得多。如果你打算深入研究虛擬化從xvisor的時(shí)間子系統(tǒng)入手再對(duì)照KVM的實(shí)現(xiàn)去看會(huì)有事半功倍的效果。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
操操操五月天婷婷丁香影院| 色官网在线| 91nbbbbbb| 日本操逼视频导航| 国产深喉视频一区二区| 茄子社区国产精品| 色呦呦、国产精品| 成人av动漫在线观看| 久久97超碰| 粉嫩AV一区夜夜嗨| 婷婷色一区| 欧美日本中字另类在线| 大学生美女口爆| 日本最新免费韩国1区2区视频播放| 亚洲一区二区性爱电影| 国产传媒午夜理伦精品| 蜜臀久久久99久久久久 | 中文字幕 码 自拍 视频 区| 白天啪啪晚上啪啪视频| 亚洲丰满很很操| 女人天堂av在线播放| 欧美日韩亚洲一区二区在线观看| 国产真实野战在线视频| 精品人妻一区二区三区夜夜| 美女主播色欲91抠b在线播放| 综合欧美日本三级| 午夜精品久久久久久久99蜜桃一| 91精品亚洲内射孕妇| 日韩精品一区二区人人人| 特污免视频| 福利在线观看一区二区| av天堂电影网| 男人久久天堂| 玖玖久久久| 97伊人超碰| 久久久久国产| 91欧美性| 天天综合网1| 不卡超碰护士AV在线免费播放| 国产精品秘 福利姬在线观看| 日韩三级在线观看网站| 97无码视频在线播放| 天天干18禁| 91欧美少妇| 久久久91福利姬| 亚洲限制级| 久久精品国产99国产精品亚洲| 色婷婷在线视频精品导航| 久久五月丁香| 色吧五月| 欧美中文字幕一区 | 伊人成人中文字幕久久网| 丝袜综合| 亚洲视频,小说| 久久久久久性爱视频| 麻豆视频test| 日本五十路在线| 久久一二三四不卡 | 青青草啪啪网| 91在线/欧洲| 亚洲国产中文字幕| 校园春色第一页| 91热| 2024黄色视频| 中字幕人妻一区二区三区| 超碰色男人操熟女| 99久久com免费视频′| 蜜桃臀av在线观看| 欧美性色欧美| 激情天天视频| 乱伦系列一区二区| 欧美72网页| 美日韩一二三区| 婷婷精品国产欧美精品亚洲人人爽| 色97国产69香蕉| 欧美啪啪色吧在线| 欧美日韩性爱电影在线| 插日本熟女视频| www…国产操逼| 天天综合91在线| 精品99999久久久久久| 男人天堂久久日韩| 亚洲精品 欧美97色色| 五月丁香激情四射| 欧美日韩性爱视屏免费看了| 国产有码一区| 蜜臀一二三区| 插日本熟女视频| 久热69九色熟妇97| 亚洲中文字幕av| 成人精品在线免费视频| 久热婷婷| 秘书高跟黑色丝袜国产91在线| 91老熟女| 97色色视频| 裸体1区| www.人人摸在线视频| 欧美性爱日韩高清| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 日韩美女久久一区二区三区| 97干97色| 天天做日日爱夜夜爽| 国产欧美伊人| 60秒不遮不挡| 久久婷婷综合国际产色怕| 国产精品肉丝自拍| 97资源久久| wwwcaobibi| 一区二区三区四区姦女| 加勒比aⅴ| 操高情无码| 中文字幕在线观看第二页| 久久r精品| 中文字幕精品免费一区二区| 久超碰在| 天天插网| 91麻豆天美国产欧美| 亚洲天堂日本| 开心五月激情网| 国产吹潮女在线观看| 91精品亚洲内射孕妇| 日韩精品99999| 97亚洲中文| 亚洲日本韩国在线| 综合色久欲| 琪琪精品免费一区二区三区 | 探花熟女,姿勢到位,體驗感也到位| 日韩情色视频| 欧美乱伦专区| 色爱欲亚洲| 老司机午夜精品视频| 超碰av人人人| 国产毛片片精品天天看视频| 日韩钢筋无码高清啾啾啾| 97超碰碰| 加勒比日本在线| 91人精品妻入口| 天堂日本亚洲欧美| 91东京热男人的天堂| 欧美天堂日韩三级国产传媒| ,成人免费啪啪视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 久久人妻四季| 欧美日韩另类在线播放| 色拍偷亚洲| 亚洲中文日韩欧美大香蕉视频| 操淫穴亚洲五月丁香| 天天摸夜夜添无码小视频| 九一综合网| 免费中文在线| 亚洲高清欧美总合| 欲色影视综合吧| 最新av网站在线观看| 久久精品中文| 婷婷五月天影院| 亚洲熟女综合一区二区| www老逼91| 99久久久久久亚洲精品不卡| 日韩综合色网| 极品白嫩福利在线| 免费的很黄很污的全部视频| 超碰吊日色| 伊人亚洲国产一成人久久精品,久久| 国产精品第一页国产大屁股视频免费区| 九九九九久久久| 国产白丝精品在线观看| 天海翼久久| 欧美日韩操逼嗦吊| 国产一区二区在线播放量| 亚洲图片 激情小说| 亚洲精品亚洲人成人网| 人人摸.人人色| 亚洲精品黑丝| 久久99黄色卞西瓜| 亚洲高清在线| 久久精品28| 午夜精品久久久久| 伊人97色天使| 九月婷婷| 九九九九九九九精品视频| 国产一区二区三区白丝| 国产97在线视频| 亚洲欧美日韩国产丝袜自拍中文| 国产家庭乱伦网址| 欧美成人免费在线观看| 久久中久文96| 中文久久96| 色欧美天天| 免费作爱一级视频| 国产亚洲精品一区二区三区| 欧美日韩亚洲少妇寂寞影院正在播放 | 久干网| 五月婷婷六月天| 国产区性爱在线视频秋霞豆| AV一区观看| 国产精品视频在线观看| 99精品丰满人妻无码| 欧美三级一级| 大香蕉乱伦视频网| 在线观看日韩av不卡| 成人av福利在线观看| 日韩精品 欧美激情| 亚洲欧美综合网站| 97精品久久久久中文字幕| 精品网站9999| 亚洲91大片| 台湾大香蕉99热| 另类图片五月| 欧美性猛交美女自慰91| 日本人体九九九九九九| 国产91美女高潮| 丝袜 亚洲 偷拍| 国产精品视频精品一二| 亚洲精品成人激情在线| 久久 国产精品 一区| 日韩A优精品在线观看| 日韩无码操逼片| 日本黄色精品专区网站| 一级黄色性爱A级片| 婷婷丁香九月| 成人性爱视频在线看| 亚欧毛片基地国产毛片基地| 黄色视频高清无码网站| 岛国免费视频在线| 亚洲va有码在线天堂| 隔壁邻居波多野结衣中文字幕| 夜夜草天天| 最新国产精品| 国产精品无码av在线| 大香焦A片| 日韩成人精品| 伊人久操| 伊人大香蕉在线| 国内黄色精品| 爱爱久久| 欧美九九九| 九九九九9999| 天天操夜夜操狠很操| 国产精品久久99日日| 手机在线视频国内精品| 一级@啪啪视频| 成人性爱美曰韩| 亚洲成人性爱网站在线播放| 亚洲αv一区二区三区| 日韩一区二区高清在线观看的| 亚洲成熟国产精品美女| 五月综合久久| 青久操| 欧美一区二区三熟女剧情| 欧美se综合| 91综合色噜噜| 亚洲一卡2卡3卡4卡乱码网站| 最新国产精品久久精品| 久都青青视频 | 国产特级毛片AAAAAA高潮流水 | 视频二区美腿丝袜制服人妻欧美| 青青草在线视频欧美| 狠狠爱AV| 国产女同在线观看视频| 日韩中文字幕在线视频观看| 亚洲欧洲综合视频在线| 黄呦呦在线| 精品国产乱码久久久久久免费| 亚洲在线欧美| 日本色色色视频| 春色校园综合网| 久久久一二三四区| 欧美亚洲国产91在线| 日韩av在线播放不卡| 国产av青草| 淫纸中9区| 国产亚洲福利第一页丝袜| 国产视频一区二区免费| 性色国产东北露脸精品视频| 亚洲国产综合视频| 欧美顶级黄片AAAAA在线免费看| 91九色首页| 久久久不卡区一区二区三区久久久| 91狠狠狠| 天天草夜夜草高潮片| 插入综合网| 91网站视频在线观看| 久这精品中文在线观看视频| 亚洲av影院在线观看| 国产精品小视频一区二区三区| 黄色av播放免不| 欧美不卡在线一区二区| 91久久久老司机| 97视频免费| www.91久久| 久久久久9999精品九九九| www.av家庭乱伦| 欧美亚洲综合色| 欧美乱妇狂野欧美在线视频| 日本精品网站在线中文| 夜夜高潮夜夜爽| 校园春色五月天| 97久久久| 久久精品成人一区二区三区蜜臀| 少妇3P性爱自拍| 大香蕉 222| 91av熟女人妻| 美女AV一区二区| 秋霞网无码| 日韩乱码av| 久久久久久9| 五月综合色| 欧美天天综合在线| 九九天堂| 超碰97久久| 大香交伊人网| 人妻丰满熟妇一区二区三| 99.色网| 黑人精品XXX一区一二区| 亚洲日韩AV视色| 十八禁一区二区无码观看| 国产在线激情视频| 欧美最婬乱婬爆婬牲视频| 亚洲操人| 日韩小电影| 青青草中文-久久青草精品一区二区三| 九九免费影片| 天天日少妇逼AV| 老熟女综合| 精精夜夜| 国产久久av| 日夜干射色啊| 日韩 欧美 另类 人妻| 97jingpin| 91干熟女| 亚洲无码超碰免费| 99精品久久久久久| 九九AV| 84YTCOM性无码| 亚洲 欧美 小说| 全免费a敌肛交毛片免费| 成人情色综合网| 亚洲一卡2卡3卡4卡乱码网站 | 亚洲国产综合图区中文字幕| 欧美激情一区二区| **一级毛片国产| 操逼操逼操| 69久久久久久久久久久久久| 久久xxxx| 性爱乱伦视频免费| 久久久久久久| 操淫穴亚洲五月丁香| 天天做天天爱天天爽| 午夜男女爽爽大片免费观看| 美女丝袜激情小说| 五月丁香六月| 成人免费福利在线观看| 人人妻人人爱人人玩| 欧美人妻色| 色婷婷电影网| 国语精品内射在线观看| a啊啊啊啊啊啊啊啊一区二区| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 中文字幕十五区| 91碰碰| 久久东京伊人一本到鬼色| 国产91丝袜 在线播放| 天天肏美女| japan日本高清乱xxxx| 大色综合| 国产精品网址| 午夜传煤十二区精品| 欧美高清性猛交| 国产精品色色| 熟女突然公开看18禁影片| 黄色免费一级在线毛片| 久久亚码| 欧美国产成人在线| 久久久穴999| 天天干美少妇一区| www.色婷婷色综合| 国产成人无码久久精品| 婷婷亚洲综合| 国产无码成人无码| 久久中文字幕女同性恋一区| 嫩草 人人网精品| 亚洲 日本 一 二 三| 在线观看色视频| 亚洲无992tv| 久久久熟女一区| 国产熟女| 亚洲 欧美 另类 日韩 人妻一区| 荡小穴在线观看| 色情综合网| 大香蕉一线视频| 欧美精品一区二区少妇免费A片 | 欧美天天搞| 色香网| 91爰爱欧美| 日本一天色道久久久精品视频| 国产精品小视频一区二区三区| 99性视频| 女色视频社区| 五月丁香啪啪| 欧美嗯啊……在线观看视频免费| 日韩,欧美,中文在线| 久久亚洲AV无码专区国产精品| 操逼www.| 在线观看国产黄色| 日本污ww视频网站| 啊啊啊好爽快点啊啊啊嗯嗯| 9热9热综合网| 大香伊人在线一区| 亚洲AV色图一区| 91欧美少妇| 欧美日本不卡在线| 久久青青草在线视频| 精品一级毛片在线观看| 三男一女不戴套的A片| 国产精品久久久久无码Av网曝门| 超碰在线观看av不卡| 乱伦av.com| 黄色免费网页无码| 一区二区三区在线资源| 国产精品久久9| 一区 欧美 日韩 麻豆| 91欧美丨精品丨入口| 超碰97在线中文| 极品美女嘿咻| 粉嫩久久久久| 97精品网站| 欧美 亚洲 在线| 黄片免费日韩| 欧美日韩国产色图在线| 91oumei| 国产又大又粗又长视频在线| 欧美偷偷网| 欧美日本不卡在线| 日本中文字幕不卡视频| 久久亚洲AV无码专区国产精品| 亚洲码专区| 一色网男人的天堂| 午夜毛片高清免费不卡| 中文字幕第2页| 久久精品 六十路 熟女 欧美| 黄色片,com| 欧美九9 9 9| 操香逼| 日本天天干天天日一区| 亚洲伊人久久综合97| 日韩精品免费高清视频在线| 亚洲日本成人动漫| 国产丝袜高跟美女av免费观看| 男人的天堂久久| 黑人白女精品一区| 久久久久久久极品香蕉视频| 蜜桃臀一区二区三区久久| 深夜福利黄片| 91黑人无码激情在线| 丁香五月婷婷啪啪| 色综合99999| 欧美91精品国产自产| 亚洲第一无码播放立川理惠| 好吊色一区| 久久9精品| 51一区二区三区| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 91九色首页| 伦理弟一页| 九九九九精品| 天天色,天天干,天天干| 麻豆久久久久久久久丝袜| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲亚洲亚洲天堂天堂| 丰满美女一级毛片在线播放| 日本熟妇熟色97一本在线观看| 国产视频小说| 综合熟女| 中文字幕精品亚洲熟女| 国产对白刺激视频| 啊啊好多水| 国产精品久久久| 色五月婷婷在线| 中文字幕av一区二区三区人妻少妇| 国产成人91一区二区三区| 99热综合| 超碰97综合| 国产成人网| 96国产精品| 亚洲成人日韩小说| 嗯嗯啊啊好大好爽| 国产精品呦一区二区三区| 丰满少妇一区二区三区四区观看| 综合天天。| 伊人网综合在线视频| 欧美日韩222| 百度百度日本操逼| 超碰 另类 欧美| 色综合一本| www鬼畜国产男人的天堂| 我想要 啊 啊 啊| 五月天激情网站| 92一区二区| 操九九九九九九| 超碰色老头| 亚洲免费精品一区| 操逼大黄片| 亚洲诱惑天堂| 99色在线视频| 岛国免费视频在线| 色哟哟av网址| 激情av| 欧美色人| 亚洲资源网| 人妻少妇av在线观看| 麻豆a'v电影| 日本久久99| 亚洲欧美一区二区网址| 亚洲欧洲无码一区夜| 亚洲欧洲网站免费观看| 国产精品无码成人精品| 亚洲日产专区婷婷| 九九九九九九九精品视频| 在线观看不卡一区二区三区| 日本性一区| 大香蕉啪啪啪| 精品无码久久久久久久久果冻糖心| 日日橹狠狠爱欧美超碰| 337p大胆噜噜噜噜噜91Av| 91w欧美| 青青欧洲黑| 99久久久| 男人a天堂手机在线版| 亚洲a色| 人人手机欧洲亚洲国产人妻| 国产女人操逼视频| 天天做天天爱夜夜爽毛片试看| 小骚逼被操的爽不爽| 色色99| 思思热免费在线视频| 99少妇内射| 日日夜夜噜| 乱精品一区字幕二区| 欧美性爱www免费版| 亚洲精品97| 天天综合站| 精品一区二区三区四区女| 丁香五月天堂网| 国产AV久久野战精品| 96久久久| 91性情| 久久99久久99精品天美传媒棢·纸:. | 久久久一区二区三区四区五区| 理论久久婷婷网 8| www久久99| 中文字暮97| 国产剧情AV不卡在线观看| 久久性爱视频99| 超碰九区| 欧美九九九九九| 在线洲亚线| 久久国产99精品72福利| 国产激情久久久| 美女自卫慰黄网站免费| 国内亚洲精彩视频在线| 久久受www免费人成| 亚洲无 码A片在线观看麻豆| 青青草玖玖爱| 天堂亚洲精品久久老牛| 伦在线97| #NAME?| 动漫区日韩区欧美区| 国产大片精久久久久久| 婷婷五月成人| 99这里只有精品| 色婷婷丁香五月| 久久久婷| 69人妻精品一区二区绯色| 国产成人网址| 亚洲无套久久嗯嗯| 色综合中文字幕不卡| 美女露胸露奶头| 老熟女91av| 九九英色视频| 亚洲美女 晚间男人天堂| 亚洲第一二区另类图| 99re在线观看| 长久操视频| 夜夜高潮夜夜爽高清视频一| 91最新综合| 亚州中文字幕超碰97| 噜噜噜亚洲精品| 自拍亚洲综合| 久久久久久十| 精品视频一区二区| 妇女性内射冈站HDWWWCOM| 大香蕉www.超碰| 亚洲电影中字一区二区| 青青操综合网| 久久精品国产亚洲AV片多多 | 口爆吞精在线观看| 精品一区二区亚洲国产| 日韩人体偷拍| 亚洲综合69| 丰满熟女人妻一区二区三五十一路| 麻豆 亚洲 97| 91狠狠综合久久| 国产强奸乱伦第1页| 伦激情人妻另类人妻| 乱伦av麻豆| 防屏蔽在线视频| 国产性刺激| 试看60秒| 97精品视频| 欧美经典一区二区三区| 国产精品无码论坛| 中文字幕av色| 日日妻色网| 日本精品五区| 特级丰满少妇一级AAAA爱毛片| 无码高清专| 97二区四区| 97久久国产亚洲精品超碰热| 欧美第二页| 久久精品国产Aⅴ| 国产亚洲日本精品在线| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日韩精品9999| 东京热天堂网| 69精品久久久久中文字幕| 91超碰人人| 中文字幕无码不卡啪啪| 日韩三级在线观看网站| 中文字幕永久在线| 久久久久久久久久久久欧美日| 久9精品| 日韩人妻 中文字幕| 91老司机在线视频免费观看 | 久久精品国产97欧美精品亚洲| 成人毛片免费| 黄污污污污| 亚洲久草AV色图| 国产乱伦亚洲| 97超碰天天爱天天爱| 欧美九九九| 亚洲第一成人影院色播| 加勒比AV网| 婷婷爽人人婷婷爽视频| 九九Av| 欧美淫乱视频| 精品亚洲国产成人av网站| 五月天社区| 91女优在线观看| 无码操逼视频一下| 91天美传媒精品| 不卡中文字幕aⅴ在线| 久久综合久久综合人久久夜精品| 黑人综合网| 国产日本熟女顶级一区二区三区视频 | 亚洲性综合11| 天天色播| 性91| 手机av天堂久久久久| 欧美色999| 97国产精品国| 欧美偷拍区| 天天淫人人妻日日色| 丰满少妇一区二区三区免费看| 婷婷亚洲五月***久久| 伊人网在线观看| 翔田千里Av在线| 亚洲色偷偷色噜噜狠狠99网| 蜜臀久久99精品久久久久| 国产原创自拍| 家庭乱伦麻豆| 欧美激情久| 国产人妻天天干精品| 强乱老妇中文字幕| 日本91白丝| 69视频入口| 伊人伊人LD| 色香色欲天天综合网天天来吧| 少妇熟女视频一二三区| 嗯啊不要啊在线 | 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 爽爽爽免费视频| 国产精品亚洲无码| 97在线观看视频| 亚洲综合春色| 蜜桃视频成a人v在线| 噜噜噜噜天天狠狠| 4141514逼喷水三级片| 亚洲系列第一页| AV女优男人的天堂| 磁力99AV| 五月综合色| 久久无码成人| 国产精品一区二区三区免费视频| 91偷拍欧美亚洲| 国产超碰人人爽人人做| 亚洲欧美另类激情小说| 欧美熟女丝袜| www.狠狠干.coom| 家庭乱伦性爱av| 好爽视频在线观看视频| 欧美 亚洲 综合 制服 另类| 思思热在线观看| 隔壁邻居波多野结衣中文字幕 | 做爱A级亚欧| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 亚州性色| 精品久久9| 久久色激情一区二区三区| 性爱乱伦一区| 中国一级操逼视频| 亚洲国产成人综合碰碰三级经典| 亚洲一二三四区在线免费看视频| 清纯唯美激情四射| 操99| 萌白酱自拍视频| 天天干人人看综合| 亚洲女人91| 国产青青综合伊人| 久久久久密| 69一区二区三区| 九一性生活免费视频| 婷婷激情啪啪| 超碰人人超在线观看| 日韩综合无码色欲vv| 啊啊啊啊啊啊在线观看| 熟女少妇一区二区三区| 插入粉嫩少妇视频| 色欲人妻一区二区在线| 欧美亚洲国内自拍| 开心五月天激情网| 天天躁日日躁AAAXX| 国产精品探花视频| 亚洲成人性爱网站在线播放| 亚洲精品自拍| 97精品久久| 夜夜欢天天干| 另类欧美色| 青青草依人大香蕉| 日韩综合第八区国产精品| 午夜久久久| 亚洲天天精品| 无卡一区=区| 色偷偷人人玩人人舔人人操人人摸人人爽| 久久97资源 网| 亚洲成人精品久久久| 97久久精品国产| 一区中文字幕二区日韩| 超碰精品| 久日91在线| 丝袜美女诱惑 91 视频| 99爱爱| 亚洲黄a三级三级三级看三级| 欧洲精品网| 国产第11页| 欧美与日韩97| 人妻人久久精品中文字幕| 亚洲熟妇综合久久久久久| 蜜桃臀AV在线| 高清孕妇孕交 交| 97爱亚洲| 97超碰磁| 激情小说成人日本无码一| 国产精品一二三在线看| 亚洲激情在线一区二区| 激情综合五月天| 骚乳在线| 啊啊啊啊啊啊啊在线| 97在线亚洲| 91久久久久久久久18| 三级日本一区二区三区| 亚洲色系另类精品国产| 中文字幕精品区先锋资源| 婷婷激情综合网| 啊a一区在线| 亚洲淫色网中文| 欧美 日韩第一性色| 91亚洲人| 日韩精品国产一区二区| 久久草在线综合视频| 偷拍伦理视频| 天美传媒AV国产在线| 97在线播放| 2021国产成人精品久久| 人人操人人摸人人看人人干| 五月丁香综合啪啪| 97se综合网| 91 亚欧| 婷婷操视频| 中文久久爆乳| 免费农村成人少妇人妻Aa一区二区视频| 亚洲精品国产av天美传媒| 日本道人妻久久久在线不卡色视频| 大肥女高潮bbwbbwhd视频| 日韩无码黄色片| 亚洲欧美大| 中文字幕在线2| 97在线视频观看| 国产原创剧情在线丝袜| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 人妻天天爽| 91色色网站| 超碰91在线| 熟女网站最新| 黄色无码高清黄色无码网站| 国产精品无码论坛| 欧美婷婷久久| 97爱亚洲| 超碰在线国产| 久久久久久久9最新免费视频观看| 亚洲国产综合图区中文字幕| 亚洲国产高清福利视频| 亚洲自拍另类丝袜综合| 亚洲色宗合| 日韩一级片在线看| 夜夜操一区二区| 综合久久久久久久久91| 婷婷五月影院| 免费男人的天堂| 无码天天操| 你草精品在线视频| 少妇被c 黄 免费观看| 狠狠色丁香| 亚洲,欧美,综合网| 久久久久成人亚洲国产| 国产精品天干天干综合网麻豆| 97精品网| 最新欧美色网| 亚洲图片第一页| 91色婷婷综合久久中文字幕二区| 亚洲精品一卡二卡三卡福利视频网站| 国内亚洲高清无码| 91 丝袜在线| 欧美日本成人一区二区| 大香交伊人网| 特色a在线上| 久久久久久午夜男人的天堂| 91高清欧美| 成人午夜无码视频| 99超碰网| 五月天激情小说| 91网站18禁| 一区二区三区精品黑丝白丝酒店对鸡 | 精品小视频在线| 日韩熟女乱伦中出| 一区二区 电影 亚洲| 99热这里都是精品| 国产精品动态一区二区三区四四| 欧美的性爱网站免费| 欧美综合色站| 国产精品毛片?v一区二区三区| 好吊色一区| 色欲三区| 一二三四视频在线社区中文字幕| 天天色天天干天天爱| 96久久久精品| 自拍偷拍2025在线观看| 亚欧洲日韩国产精品| 婷婷色在线| 国产三级片在线观看| 亚洲人成色9999精品久久| 黄片www视频免费| 色女99一级片在线观看| 99久国产精品午夜性色福利| 亚洲成人妻日韩在线| 国产亚州精品美女久久久免费| 97视频一区| 欧美午夜精品久久久久久超碰| 亚洲第一页色网| 九月丁香婷婷| 中文字幕一区二区免费在线| 208天天久久九九九| 婷婷五月天成人| 日本在线观看网址| 欧美一级专区免费大片 | 黄色污污污污污污网站| 最新av网站在线观看| 欧美激情亚洲情色| 国产九月婷婷| 免费的黄片有限公司| 久久久熟妇熟女国产| 色网1| 天天日B夜夜干B时时操B| 精品日日人妻| 啊啊啊啊啊好大好舒服想要| 亚洲欧美日韩夜夜| 欧美一级A一级a爱片久久| 亚洲综合码| 超碰久久精品| 日本有码久久| 亚洲成人性爱网站在线播放| 日本特黄f c2| 日产成人久久| 天天操夜夜操狠很操| 国产亚洲中文不卡二区| 色色色网站| 99操逼| 两女互慰AV高潮喷水在线观看| 67914在线兔费成人视频| av日韩国产一区二区| 亚洲成人在线乱码色午夜| 老熟女91av| 国产AV无码AV| 久久久久亚洲| 久久久一区二区三区四区五区| 久久久久密臀一区二区| 能看的AV| 天天躁日日躁AAA片李宗瑞| 亚欧无码线免费观看视频| 激情内射| 亚洲揄拍网| 99re不伦| 五月天色五月| 亚洲国产午夜真人一级片中文字幕精品黄网站| 国产福利合集| 中文有码9| 国产一区二区在线播放| 亚洲男人电影天堂| 亚洲精品一二三四区| 精品传媒在线一区| 亚洲色人妻综合| 人妻aa| 国产精品视频内谢女人| 亚洲91色在线| 久久国产视频性吧 | 色官网在线| 婷婷丁香激情| 伊人久久亚洲色欲综合网站 | 久草新在线| 欧美A√综合网 | 精品对白久久不卡| 97精品中文字幕| 手机不卡视频不卡在线一二三区 | 日本福利二区视频| 久久亚洲欧美中文字幕国语| 九久精品| 亚洲成人帖图| 超碰久久精品| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 快灬快灬 一下爽蜜桃在线观看| 国产视频不卡在线观看| 中文字幕久久精视频久久大全| 国产成人无码久久精品| 黄色网址在线免费观看| 欧美日韩国产高清在线一二三区 | 美骚妇av高清在线| 麻豆人妻精品一区二区| 最新日韩黄片| 久久久久久久9999| 97色操| 人人妻天天做天天爽| 亚欧精品久久久久久久久久久| 国产熟女免费观看久久| 精品午夜福利国产一区二区在线观看| 精品国产Av无码久久久伦古装| 天美久久久久| 欧色网址| 久热精品在线| 免费试看60秒| 色婷婷一区二区三区久久| 偷拍盗拍亚洲色图图片 | 蜜乳AV一区| 丁香五六月啪啪| 国产亚洲精品A在线观看下载| 国产成人91一区二区三区| 超碰午夜| 综合久久久久久久综合网| 成人a大片在线观看| 国产女人和拘做爰视频| 岛国黄色大片网站| 丁香六月婷婷| 久热久一区二区三区| 伦在线97| 人爽不卡视频| 国产精品白领在线观看| 精品人妻视频入口| 日本熟妇熟色97一本在线观看| 亚洲欧洲日韩中文字幕一区| 中文字幕日产av人| 天天看,天天做| 国产精品婬乱一级毛片彝族| 91春色| 日本一卡二区在线| 久久久久久久久久久999| 免费A片三p视频| 欧美日韩不卡传媒| 欧美18禁91| 天综合网| 强歼乱伦资源网| 久操网无码在线| 3PAV乱伦视频| 九九九九精| 91激情国产| 综合色久欲| 欧美91久久久久| 久久成人国产精品| 又大又大又大又粗爽高潮观看 | 人妻熟女一区二区三区视频| 亚洲国产青青| 大学生美女口爆| 久久久四区| 大香蕉视频啪啪啪啪| 97Ai亚洲| 超碰97人妻在线| 国产自制av蜜乳| 久久伊人影院| 麻豆精品一区二区三区四区免费观看| 东北女人性交| 人妻熟女一区二区三区视频| 骚妻少妇精品性色无码四色A V| 久久久久久久久国产| 日韩无码久久熟女一级片| 久久超碰98| 日韩精品第3页| 欧美精品久久| 97资源免费视频| 日韩精品 欧美激情| 蜜桃网熟妇| 91精片| 五月天日日操夜夜操| 超清中文乱码字幕| 91丝袜人妻| 爱爱动态60秒| 97视频播放| 亚洲春色欧美激情自拍| 久久男人的天堂| 亚洲精品人妻在线| 伊人专区一区二区三区| 欧美一区二区三区日韩| 精品国产乱码久久久久久影片| 黑人中出21连凳花野真衣| 国内操逼视频二区| 丁香7月婷婷| 亚洲一区日韩精品中文字幕| 无遮挡一级毛片视频免费的| 视频分类 国内精品| 日本天天人人狠狠在线日美女| 97超级色碰碰| 亚洲色图欧美色图另类图片| 自拍视频一区在线观看| 久久久久久人妻| 色综合99999| 三四中文字幕| 成人午夜小视频手机在线看| 91校园春色长篇| 青青草久草AV| 国产精品点击进入在线影院高清| 国产强奸超碰AV| 91n美女视频| 96一区二区| 97综合在线| 麻豆黄站| 无码高清国产AV| 色999人与兽| 啪啪自拍九九综合| 日韩AV无码中文一区二区| 国产精品suv一区| 91精品人| 91精品成人www| 五月天婷婷社区| 色情五月综合婷婷| 久操视频在线| 国产吞精a级片激情电影| 精品中文一区二区| 69少妇一区二区| 久久久久密臀视频| 日本一级特级毛片视频| 77777亚洲蜜臀精品久久综合蜜臀| 人人操人人精品影片| 999岛国大片| 精品无吗久久| 欧美日韩黄片精品在线| 亚洲码和欧洲精品激情系列| 五十路三区在线| 99热精品青草在线| 国产精品视频内谢女人| 18岁禁 茉莉成人久久| A级毛片在线看免费| 亚洲美女 晚间男人天堂 | 九九成人精品| 黄页网站免费高清在线观看| 色综和网| 色九区| 中文字幕视频在线观看| 美腿色图| 波多野结衣被操50分钟免费视频| 青青伊人久久| 国产精品午夜高潮呻吟久久av| 韩国三级色呦呦| 欧美少妇高潮久久91| 欧美日韩一区二区三区四区蜜桃| 久久久久久99999国产精品| 在线观看精品国产免费| 欧美亚洲91| 粉嫩AV输入| 精品国产乱码久久久久久久久1| 影音先锋乱伦资源| 欧美亚洲高清不卡| 精品久久99| 在线欧美69V免费观看视频| 九九九九精| 天天拍天天操| 无码在线亚洲| 国产一区二区三区免费视频在性观看| 爱爱久久| 蜜臀在线免费观看在线免费观看| 高清无码 国产精品| 看看日B真人视频| 欧美制服另类丝袜| 国产精品亚洲一级av第二区| 欧美日韩不卡传媒| 成人久久精品| 99热官网| 96一区二区三区| 嗯啊不要在线| 国模不卡| 九热超碰| 91性| 粉嫩av在线一区二区| 亚洲熟女av中文字幕| 人妻精品4K4K4K4K4| 99热精品在线| 日韩性爱再线视频| 一区二区三区美女超清| 国产精品在线免费| 国产精品电影推荐| 亚州色图欧美| 青青欧美| 天天日美女的B| 国产精品国产| 蜜桃狠狠色伊人亚洲综合 | 中文字幕狠狠玩| 1769国内精品视频| 精品人妻免费观看| 草草电影院| 国产黄片精品在线| 国产白嫩漂亮KTV在线| 亚洲色系另类精品国产| 操逼免费视频无码国产| 亚洲欧洲自拍图片专区满春格| 精品久久无码午夜福利| 亚洲成人av电影在线| 黄片视频,下载| 亚洲午夜福利在线影院| 日韩Va亚洲va欧美Ⅴa久久| 色综合久| 黄色小说亚洲| 久久神马影院| 一本色道久久综合精品婷婷| 亚洲,欧美,综合网| 九九九一二三| 翔田千里AⅤHD无码| 超碰无码加勒比| 凹凸视频特色日本特黄| 女色视频社区| 国产十八禁视频| 免费视频97| 亚洲999综合| 色九九久九九| 久草视频观看视频在线| 天美麻花大全视频|