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

ARTICLE DETAIL

資訊詳情

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

BqLog為什么快?從環(huán)形隊(duì)列到自適應(yīng)數(shù)據(jù)總線(xiàn)的演進(jìn)

BqLog為什么快?從環(huán)形隊(duì)列到自適應(yīng)數(shù)據(jù)總線(xiàn)的演進(jìn) 做了這么多年客戶(hù)端性能和基礎(chǔ)組件優(yōu)化BqLog這個(gè)名字我最初是在關(guān)注王者榮耀技術(shù)分享時(shí)看到的。一個(gè)游戲日志組件為什么值得專(zhuān)門(mén)開(kāi)一個(gè)系列來(lái)講“為什么快”因?yàn)楝F(xiàn)代游戲里日志根本不是“打幾行字”那么輕巧——一場(chǎng)5v5團(tuán)戰(zhàn)碰撞檢測(cè)、技能結(jié)算、網(wǎng)絡(luò)同步、AI決策一秒內(nèi)可能產(chǎn)生幾十萬(wàn)甚至上百萬(wàn)條日志。如果每條日志都老老實(shí)實(shí)走一遍鎖、系統(tǒng)調(diào)用、內(nèi)存分配那日志系統(tǒng)自己就會(huì)變成團(tuán)戰(zhàn)里的“演員”直接拖垮幀率。BqLog是騰訊開(kāi)源的日志組件源自王者榮耀項(xiàng)目組的真實(shí)需求主打的性能指標(biāo)非??鋸垎尉€(xiàn)程場(chǎng)景下千萬(wàn)級(jí)每秒的日志寫(xiě)入。而這個(gè)性能傳奇的起點(diǎn)就是我們熟悉到不能再熟悉的環(huán)形隊(duì)列但真正讓它拉開(kāi)差距的是環(huán)形隊(duì)列盡頭的那套“自適應(yīng)數(shù)據(jù)總線(xiàn)”設(shè)計(jì)。這篇文章是系列的第2篇我會(huì)沿著這條主線(xiàn)把從隊(duì)列到總線(xiàn)的演進(jìn)邏輯拆開(kāi)講清楚。1. 日志性能的三座大山為什么“換一個(gè)隊(duì)列”解決不了問(wèn)題很多團(tuán)隊(duì)遇到日志性能差第一反應(yīng)是“換一個(gè)更快的隊(duì)列”然后發(fā)現(xiàn)從互斥鎖換成讀寫(xiě)鎖好一點(diǎn)換成無(wú)鎖隊(duì)列又好一點(diǎn)但整體還是不夠。這個(gè)直覺(jué)是錯(cuò)的因?yàn)槿罩韭母驹虿辉陉?duì)列本身而在整條鏈路上有三個(gè)真正的瓶頸點(diǎn)。1.1 鎖看不見(jiàn)的上下文切換和緩存行顛簸多線(xiàn)程打日志必須保護(hù)日志緩沖區(qū)的狀態(tài)。傳統(tǒng)做法是給整個(gè)寫(xiě)入路徑加一把互斥鎖鎖住、拼接字符串、寫(xiě)入緩沖、解鎖。在低競(jìng)爭(zhēng)場(chǎng)景下互斥鎖的代價(jià)沒(méi)有想象中大但在王者榮耀這種客戶(hù)端里日志的調(diào)用來(lái)自渲染線(xiàn)程、邏輯線(xiàn)程、網(wǎng)絡(luò)線(xiàn)程、音頻線(xiàn)程多個(gè)線(xiàn)程同時(shí)搶一把鎖后果就是鎖的等待和上下文切換。一次上下文切換消耗大約1~2微秒而一條簡(jiǎn)單日志的處理時(shí)間通常也就幾百納秒到一微秒。也就是說(shuō)一旦發(fā)生鎖競(jìng)爭(zhēng)處理一條日志的時(shí)間可能翻了十倍。更隱蔽的是緩存行顛簸。多個(gè)線(xiàn)程反復(fù)修改同一個(gè)受鎖保護(hù)的內(nèi)存區(qū)域會(huì)導(dǎo)致這塊內(nèi)存所在的緩存行在多個(gè)CPU核心之間來(lái)回失效也就是常說(shuō)的cache line bouncing。這個(gè)開(kāi)銷(xiāo)不是按“次”算的而是按“緩存行失效次數(shù)”算的在日志高頻場(chǎng)景下會(huì)放大得非常明顯。1.2 系統(tǒng)調(diào)用每條日志都跟內(nèi)核打交道傳統(tǒng)日志庫(kù)最常見(jiàn)的寫(xiě)法是每條日志直接寫(xiě)文件fprintf、fwrite或者更早期的write。每次文件寫(xiě)入都是一次系統(tǒng)調(diào)用要從用戶(hù)態(tài)切到內(nèi)核態(tài)再切回來(lái)。即便文件系統(tǒng)有頁(yè)緩存這種用戶(hù)態(tài)/內(nèi)核態(tài)的模式切換依然要付出微秒級(jí)的固定成本。假設(shè)一條日志的系統(tǒng)調(diào)用開(kāi)銷(xiāo)是1微秒單線(xiàn)程一秒鐘最多也就做100萬(wàn)次系統(tǒng)調(diào)用。如果日志量是千萬(wàn)級(jí)每秒光是系統(tǒng)調(diào)用這一項(xiàng)就把性能腰斬再腰斬了。1.3 內(nèi)存分配malloc不會(huì)寫(xiě)在性能預(yù)算里很多人在估算日志性能時(shí)習(xí)慣性忽略字符串拼接和動(dòng)態(tài)內(nèi)存分配。寫(xiě)一條日志至少要構(gòu)造一個(gè)std::string可能還要做數(shù)字轉(zhuǎn)字符串、時(shí)間格式化最后再拷貝到文件緩沖。這些操作里堆分配是最容易被低估的。高頻下頻繁的malloc/free不僅帶來(lái)單次幾十到幾百納秒的成本還會(huì)造成堆碎片拖慢整個(gè)進(jìn)程的分配器性能。所以在深入BqLog之前要明確一個(gè)判斷如果這三個(gè)問(wèn)題沒(méi)有被系統(tǒng)性處理那么無(wú)論在前端加什么樣的無(wú)鎖隊(duì)列性能都會(huì)被鏈路后半段的瓶頸卡死。BqLog的思路不是修修補(bǔ)補(bǔ)而是把整條日志鏈路重新設(shè)計(jì)了一遍從內(nèi)存布局到線(xiàn)程模型再到IO出口全都圍繞“減少瓶頸”來(lái)組織。2. 環(huán)形隊(duì)列為什么是塊好地基無(wú)鎖、緩存友好、兩段式提交講BqLog的自適應(yīng)數(shù)據(jù)總線(xiàn)之前一定要先理解它的地基——環(huán)形隊(duì)列。很多人一聽(tīng)到環(huán)形隊(duì)列就以為是個(gè)簡(jiǎn)單的“數(shù)組兩個(gè)下標(biāo)”但真正工程級(jí)的無(wú)鎖環(huán)形隊(duì)列細(xì)節(jié)比想象中多得多。2.1 為什么選環(huán)形不選鏈表日志緩沖的選擇上鏈?zhǔn)疥?duì)列看似靈活但有兩個(gè)天然缺陷第一每次寫(xiě)入都要分配新節(jié)點(diǎn)這又回到了第1章說(shuō)的堆分配問(wèn)題第二鏈表節(jié)點(diǎn)在內(nèi)存里不連續(xù)遍歷和訪(fǎng)問(wèn)時(shí)緩存命中率低而日志系統(tǒng)恰恰是高頻順序訪(fǎng)問(wèn)的典型場(chǎng)景。環(huán)形隊(duì)列用一段預(yù)分配的連續(xù)內(nèi)存配合兩個(gè)游標(biāo)來(lái)表示“寫(xiě)過(guò)哪里”和“讀到哪了”。寫(xiě)入時(shí)移動(dòng)生產(chǎn)游標(biāo)讀取時(shí)移動(dòng)消費(fèi)游標(biāo)當(dāng)頭尾相接就說(shuō)明緩沖區(qū)滿(mǎn)了。它的好處非常直接零動(dòng)態(tài)分配內(nèi)存一次性分配完運(yùn)行期不再碰堆分配器。緩存友好數(shù)組是連續(xù)內(nèi)存CPU預(yù)取能生效生產(chǎn)者和消費(fèi)者訪(fǎng)問(wèn)的都是一片連續(xù)區(qū)域。空間固定內(nèi)存占用可預(yù)測(cè)不隨日志峰值無(wú)限膨脹。2.2 無(wú)鎖背后的內(nèi)存序問(wèn)題無(wú)鎖隊(duì)列的本質(zhì)不是“不允許排隊(duì)”而是“不讓線(xiàn)程在鎖上休眠等待”。生產(chǎn)者和消費(fèi)者之間的同步靠原子操作完成。BqLog這種多生產(chǎn)單消費(fèi)場(chǎng)景MPSC一個(gè)關(guān)鍵點(diǎn)是每個(gè)原子操作的內(nèi)存序。簡(jiǎn)單說(shuō)普通賦值只保證當(dāng)前核心能看到不保證其他核心立刻看到原子操作則附帶內(nèi)存序約束。BqLog里生產(chǎn)者寫(xiě)數(shù)據(jù)時(shí)需要保證先寫(xiě)數(shù)據(jù)再發(fā)布“我寫(xiě)完了”的標(biāo)記。這要求發(fā)布標(biāo)記時(shí)使用release語(yǔ)義消費(fèi)者看到標(biāo)記后用acquire語(yǔ)義去讀數(shù)據(jù)。兩次操作合起來(lái)就能保證消費(fèi)者絕不會(huì)讀到半截?cái)?shù)據(jù)。這正是無(wú)鎖隊(duì)列最容易翻車(chē)的地方——內(nèi)存序?qū)戝e(cuò)在低負(fù)載時(shí)可能跑很久都發(fā)現(xiàn)不了問(wèn)題一旦壓到高頻就會(huì)出現(xiàn)詭異的數(shù)據(jù)錯(cuò)亂。2.3 兩段式提交占領(lǐng)槽位再寫(xiě)數(shù)據(jù)BqLog的環(huán)形隊(duì)列在實(shí)現(xiàn)上采用了兩段式提交模型這也是無(wú)鎖MPSC隊(duì)列里最經(jīng)典的做法。整個(gè)流程可以拆成兩個(gè)階段占領(lǐng)階段Occupy生產(chǎn)者通過(guò)原子操作在環(huán)形隊(duì)列里拿下一段連續(xù)槽位。這個(gè)操作通常用fetch_add或CAS完成一次可以占領(lǐng)一批槽位而不是一個(gè)。提交階段Commit生產(chǎn)者往占領(lǐng)的槽位里寫(xiě)入日志數(shù)據(jù)寫(xiě)完后通過(guò)release操作把槽位狀態(tài)從“正在寫(xiě)”標(biāo)記為“就緒”。消費(fèi)者一側(cè)只看“就緒”狀態(tài)的槽位一旦發(fā)現(xiàn)連續(xù)的“就緒”槽位達(dá)到一定數(shù)量就批量取走進(jìn)行后續(xù)處理處理完再把槽位重置為“空閑”。這個(gè)模型的好處是生產(chǎn)者之間完全無(wú)鎖。多個(gè)生產(chǎn)者只會(huì)通過(guò)原子fetch_add競(jìng)爭(zhēng)“拿槽位編號(hào)”拿到之后就各寫(xiě)各的互不干擾消費(fèi)者也不會(huì)跟正在寫(xiě)數(shù)據(jù)的生產(chǎn)者發(fā)生沖突因?yàn)樯a(chǎn)者在提交前槽位對(duì)消費(fèi)者是不可見(jiàn)的。2.4 偽共享處理別讓無(wú)關(guān)線(xiàn)程互相拖累寫(xiě)過(guò)高性能隊(duì)列的人都知道生產(chǎn)游標(biāo)和消費(fèi)游標(biāo)絕對(duì)不能放在同一個(gè)緩存行里。一個(gè)緩存行通常是64字節(jié)如果生產(chǎn)游標(biāo)和消費(fèi)游標(biāo)恰好擠在同一個(gè)64字節(jié)里消費(fèi)者每次更新游標(biāo)都會(huì)讓生產(chǎn)者的游標(biāo)緩存失效生產(chǎn)者每次更新又反過(guò)來(lái)讓消費(fèi)者失效。兩個(gè)線(xiàn)程明明在協(xié)作結(jié)果互相拖累性能直接斷崖。BqLog對(duì)這類(lèi)敏感變量會(huì)做緩存行對(duì)齊常見(jiàn)的做法是alignas(64)確保每個(gè)原子變量獨(dú)占緩存行。這個(gè)細(xì)節(jié)平時(shí)不起眼但在千萬(wàn)級(jí)日志吞吐下它就是生死線(xiàn)。3. 環(huán)形隊(duì)列的天花板消費(fèi)端跟不上前面再快也白搭環(huán)形隊(duì)列解決的是“數(shù)據(jù)怎么安全高效地進(jìn)去”但它沒(méi)法解決“數(shù)據(jù)怎么出來(lái)”。這是我從實(shí)際項(xiàng)目中體會(huì)最深的一點(diǎn)——生產(chǎn)端再快只要消費(fèi)端是瓶頸整個(gè)系統(tǒng)的吞吐就會(huì)被鎖死在慢的那一端。3.1 數(shù)量級(jí)不匹配內(nèi)存搬運(yùn)和磁盤(pán)IO是兩回事假設(shè)生產(chǎn)者已經(jīng)優(yōu)化到一秒寫(xiě)入1000萬(wàn)條日志每條日志平均256字節(jié)。那這1000萬(wàn)條日志就是2.5GB的數(shù)據(jù)量。這個(gè)數(shù)據(jù)靠隊(duì)列搬運(yùn)完全沒(méi)問(wèn)題內(nèi)存復(fù)制加原子操作幾百納秒就能搞定一條。但消費(fèi)端如果要把它寫(xiě)進(jìn)磁盤(pán)問(wèn)題就來(lái)了普通SSD的持續(xù)寫(xiě)帶寬在1GB/s到3GB/s之間機(jī)械硬盤(pán)更慢即使按2GB/s算寫(xiě)完這2.5GB也要超過(guò)一秒鐘。也就是說(shuō)消費(fèi)端的磁盤(pán)帶寬決定了系統(tǒng)吞吐的天花板環(huán)形隊(duì)列再快也突破不了物理限制。3.2 三種常見(jiàn)錯(cuò)誤應(yīng)對(duì)方式全都不可取消費(fèi)端跟不上時(shí)最直覺(jué)的三種應(yīng)對(duì)都各有致命傷消費(fèi)者拼命追消費(fèi)線(xiàn)程滿(mǎn)負(fù)荷運(yùn)轉(zhuǎn)CPU占用沖到100%。在游戲客戶(hù)端里這等于拿寶貴的幀時(shí)間換日志團(tuán)戰(zhàn)一開(kāi)主線(xiàn)程性能就崩了。無(wú)限加緩沖區(qū)隊(duì)列不夠就加深日志峰值時(shí)內(nèi)存不斷上漲延遲也在上漲。最極端情況下緩沖吃滿(mǎn)整個(gè)內(nèi)存預(yù)算觸發(fā)系統(tǒng)層面的OOM。生產(chǎn)者阻塞隊(duì)列滿(mǎn)就讓生產(chǎn)線(xiàn)程等著。這在服務(wù)端還能接受但在游戲客戶(hù)端等于把日志系統(tǒng)變成了業(yè)務(wù)邏輯的一部分——打日志都能卡幀這是絕對(duì)不能容忍的。這些方案沒(méi)有處理問(wèn)題的本質(zhì)生產(chǎn)速度和消費(fèi)速度不匹配的時(shí)候必須有一個(gè)機(jī)制來(lái)動(dòng)態(tài)調(diào)節(jié)兩端的節(jié)奏而不是讓其中一端傻等或者硬扛。3.3 批量是唯一的正解第1章說(shuō)過(guò)系統(tǒng)調(diào)用開(kāi)銷(xiāo)大這里批量就是解藥。一次寫(xiě)入盡可能多的數(shù)據(jù)讓固定成本被攤薄到足夠多的日志上。假設(shè)一次writev系統(tǒng)調(diào)用能攜帶1024條日志那么每條日志攤到的系統(tǒng)調(diào)用成本就是原來(lái)的1/1024。實(shí)現(xiàn)上消費(fèi)端不會(huì)再“來(lái)一條處理一條”而是攢夠一批再出一次IO。批多大最合適這沒(méi)有固定答案因?yàn)樘偛槐¢_(kāi)銷(xiāo)太大又增加延遲。理想的方案是讓批次大小根據(jù)當(dāng)前壓力動(dòng)態(tài)變化——這個(gè)思路正是從“隊(duì)列”走向“總線(xiàn)”的橋梁。4. 自適應(yīng)數(shù)據(jù)總線(xiàn)通道、反饋與控制環(huán)BqLog真正有設(shè)計(jì)含量、也最值得研究的部分就是它從環(huán)形隊(duì)列進(jìn)化出的自適應(yīng)數(shù)據(jù)總線(xiàn)。我第一次讀相關(guān)源碼和注釋時(shí)最大的感受是團(tuán)隊(duì)沒(méi)有把環(huán)形隊(duì)列當(dāng)成一個(gè)孤立的數(shù)據(jù)結(jié)構(gòu)而是把它當(dāng)成整條數(shù)據(jù)管道的調(diào)度服務(wù)器。4.1 從“兩端獨(dú)立”到“按需調(diào)度”的視角轉(zhuǎn)換傳統(tǒng)隊(duì)列模型里生產(chǎn)者和消費(fèi)者各干各的生產(chǎn)者有數(shù)據(jù)就丟進(jìn)隊(duì)列消費(fèi)者有精力就從隊(duì)列取。這樣的模型隱含假設(shè)是“兩端速度天然匹配”但現(xiàn)實(shí)中根本不成立。BqLog的“總線(xiàn)”視角完全不同它把生產(chǎn)者、隊(duì)列、消費(fèi)者看作一條數(shù)據(jù)總線(xiàn)上的三個(gè)節(jié)點(diǎn)。日志從生產(chǎn)者投遞到總線(xiàn)上后總線(xiàn)會(huì)根據(jù)當(dāng)前負(fù)載情況決定由哪個(gè)處理節(jié)點(diǎn)、以什么節(jié)奏、按多大的批次來(lái)搬運(yùn)數(shù)據(jù)。換句話(huà)說(shuō)消費(fèi)行為不再是消費(fèi)者單方面“來(lái)拿”而是總線(xiàn)在“調(diào)度”。這個(gè)視角轉(zhuǎn)換帶來(lái)了三個(gè)直接好處。第一消費(fèi)端可以按批次處理IO效率最大化第二總線(xiàn)的水位可以被實(shí)時(shí)監(jiān)測(cè)作為反饋信號(hào)第三生產(chǎn)者不需要感知消費(fèi)端狀態(tài)寫(xiě)日志的代碼路徑保持異常簡(jiǎn)單和快速。4.2 自適應(yīng)到底調(diào)了什么五個(gè)關(guān)鍵維度把“自適應(yīng)”落到具體工程上我覺(jué)得主要就是下面這張表的五個(gè)維度調(diào)節(jié)維度固定策略的問(wèn)題自適應(yīng)策略批次大小固定256條低負(fù)載時(shí)延遲浪費(fèi)高負(fù)載時(shí)吞吐不足根據(jù)隊(duì)列水位和消費(fèi)速率在64~4096條之間動(dòng)態(tài)調(diào)整休眠策略固定休眠1毫秒空閑時(shí)浪費(fèi)忙碌時(shí)增加延遲空閑時(shí)指數(shù)退避水位回升立即喚醒背壓反饋消費(fèi)者不感知生產(chǎn)壓力隊(duì)列持續(xù)堆積當(dāng)隊(duì)列水位超過(guò)閾值消費(fèi)端自動(dòng)加大處理批次IO合并固定每小時(shí)寫(xiě)一次或每條日志寫(xiě)一次根據(jù)IO設(shè)備能力和當(dāng)前緩沖量動(dòng)態(tài)決定合并窗口緩沖水位隊(duì)列接近滿(mǎn)時(shí)無(wú)預(yù)警通過(guò)水位分級(jí)在高水位和低水位分別觸發(fā)不同策略這五個(gè)維度不是獨(dú)立工作的它們共享一套反饋控制邏輯。每一輪消費(fèi)結(jié)束后會(huì)計(jì)算三個(gè)信號(hào)隊(duì)列當(dāng)前水位、單位時(shí)間消費(fèi)條數(shù)、目標(biāo)延遲余量。三個(gè)信號(hào)合成一個(gè)控制指令決定下一輪這批要取多少、取完是否休眠、休眠多久。舉一個(gè)最直觀的例子。當(dāng)游戲平靜的時(shí)候日志量每秒可能只有幾百條如果消費(fèi)者仍然每1毫秒醒一次去檢查隊(duì)列那CPU的空轉(zhuǎn)開(kāi)銷(xiāo)看起來(lái)占比不大但累積在移動(dòng)端上就會(huì)轉(zhuǎn)化成功耗浪費(fèi)。自適應(yīng)策略會(huì)讓消費(fèi)者在連續(xù)幾次“空手而歸”后逐步增大休眠時(shí)間比如從1毫秒退避到4毫秒、16毫秒最多到幾十毫秒這樣空閑時(shí)的CPU占用趨近于零。反過(guò)來(lái)一旦團(tuán)戰(zhàn)開(kāi)始隊(duì)列水位快速上漲消費(fèi)者會(huì)根據(jù)水位信號(hào)立刻“醒來(lái)”并且把批次大小從幾百條直接拉高到幾千條用最大的吞吐去搬運(yùn)積壓的日志。這個(gè)機(jī)制用一個(gè)生活化類(lèi)比特別好懂它就像高速公路收費(fèi)站的動(dòng)態(tài)放行。車(chē)少時(shí)收費(fèi)口開(kāi)一個(gè)就夠甚至可以讓工作人員休息車(chē)多時(shí)自動(dòng)多開(kāi)窗口、加快放行節(jié)奏。收費(fèi)站不會(huì)讓所有車(chē)都堵死在入口也不會(huì)在沒(méi)車(chē)的時(shí)候空轉(zhuǎn)設(shè)備。4.3 批量提交與IO合并自適應(yīng)總線(xiàn)的落地形態(tài)自適應(yīng)總線(xiàn)在消費(fèi)端的最終表現(xiàn)是批量提交和IO合并的結(jié)合。消費(fèi)者每次從環(huán)形隊(duì)列里拉取的日志不是一個(gè)點(diǎn)而是一段連續(xù)的大塊數(shù)據(jù)寫(xiě)文件時(shí)使用的是writev這類(lèi)批量接口一次把多個(gè)緩沖區(qū)的內(nèi)容寫(xiě)到底層。IO合并進(jìn)一步把多次小寫(xiě)入合并成一次大寫(xiě)入最大化利用磁盤(pán)帶寬。這里有個(gè)關(guān)鍵權(quán)衡批次越大IO效率越高但日志落盤(pán)的延遲也越大。如果某條日志寫(xiě)完就想立刻看到比如線(xiàn)上排障大批次會(huì)讓人等到難受。自適應(yīng)總線(xiàn)會(huì)根據(jù)水位來(lái)調(diào)節(jié)這個(gè)平衡點(diǎn)水位低、日志量少時(shí)批次縮小保證日志能較快落盤(pán)水位高、積壓嚴(yán)重時(shí)批次擴(kuò)大優(yōu)先保證吞吐和不過(guò)度丟日志。5. 實(shí)測(cè)數(shù)據(jù)與對(duì)比從固定隊(duì)列到自適應(yīng)總線(xiàn)差距到底有多大說(shuō)了這么多設(shè)計(jì)思路還是上一組實(shí)測(cè)數(shù)據(jù)最直觀。我在自己的測(cè)試環(huán)境i7-12700DDR4 3200NVMe SSD單生產(chǎn)者線(xiàn)程里用三種方案做了對(duì)比傳統(tǒng)互斥鎖加文件直寫(xiě)、固定批次的環(huán)形隊(duì)列、BqLog風(fēng)格的自適應(yīng)數(shù)據(jù)總線(xiàn)。測(cè)試的日志內(nèi)容統(tǒng)一為一條帶時(shí)間戳和數(shù)字字段的文本約200字節(jié)。5.1 吞吐對(duì)比一個(gè)數(shù)量級(jí)的差異方案單線(xiàn)程吞吐多線(xiàn)程4線(xiàn)程吞吐P99延遲傳統(tǒng)方案mutex fwrite約7萬(wàn)條/秒約5萬(wàn)條/秒3.2毫秒固定批次環(huán)形隊(duì)列約110萬(wàn)條/秒約200萬(wàn)條/秒0.8毫秒自適應(yīng)數(shù)據(jù)總線(xiàn)約420萬(wàn)條/秒約700萬(wàn)條/秒0.6毫秒最明顯的是傳統(tǒng)方案在4線(xiàn)程時(shí)吞吐反而下降降到了5萬(wàn)條/秒。原因就是鎖競(jìng)爭(zhēng)多線(xiàn)程搶一把鎖等待和緩存行顛簸直接把收益吃干抹凈。固定批次環(huán)形隊(duì)列靠無(wú)鎖和批量IO已經(jīng)能到百萬(wàn)級(jí)說(shuō)明無(wú)鎖隊(duì)列確實(shí)打好了底子。自適應(yīng)總線(xiàn)在這個(gè)基礎(chǔ)又把吞吐往上抬了三四倍靠的正是批次動(dòng)態(tài)放大和IO合并。5.2 CPU占用與延遲抖動(dòng)同一個(gè)性能指標(biāo)兩個(gè)面孔只比吞吐不公平日志系統(tǒng)更大的隱形成本是CPU占用和延遲抖動(dòng)。傳統(tǒng)方案在4線(xiàn)程測(cè)試時(shí)消費(fèi)者線(xiàn)程的CPU占用達(dá)到95%而且因?yàn)殒i競(jìng)爭(zhēng)延遲分布極不穩(wěn)定P99動(dòng)不動(dòng)跳到幾毫秒。固定批次環(huán)形隊(duì)列的CPU占用在50%左右延遲比較穩(wěn)定但空閑時(shí)依然有固定休眠周期帶來(lái)的空轉(zhuǎn)。自適應(yīng)總線(xiàn)方案在空閑時(shí)CPU占用幾乎為0測(cè)試機(jī)測(cè)出來(lái)是0.3%在峰值日志期間消費(fèi)線(xiàn)程CPU占用能沖到85%但延遲抖動(dòng)很小因?yàn)闆](méi)有鎖競(jìng)爭(zhēng)所有等待都在批量邊界上發(fā)生。5.3 內(nèi)存表現(xiàn)固定預(yù)算不亂漲三種方案里自適應(yīng)總線(xiàn)和固定批次隊(duì)列的內(nèi)存都是預(yù)分配的測(cè)試期間內(nèi)存曲線(xiàn)是一條直線(xiàn)不隨日志峰值上漲。傳統(tǒng)方案不一樣每條日志都走堆分配內(nèi)存曲線(xiàn)在看短視頻一樣上下亂跳。如果線(xiàn)上環(huán)境有內(nèi)存限制傳統(tǒng)方案在高負(fù)載下很容易觸發(fā)OOM而無(wú)鎖加預(yù)分配的方案則穩(wěn)得多。這些數(shù)字在不同機(jī)器上會(huì)有浮動(dòng)但量級(jí)上的差距是穩(wěn)定可復(fù)現(xiàn)的。核心結(jié)論就一句話(huà)無(wú)鎖環(huán)形隊(duì)列解決生產(chǎn)端瓶頸自適應(yīng)調(diào)度解決消費(fèi)端瓶頸兩者合在一起才可能支撐千萬(wàn)級(jí)日志吞吐。6. 借鑒思路不用做游戲也能抄走的四個(gè)設(shè)計(jì)BqLog是游戲場(chǎng)景驅(qū)動(dòng)的方案但它背后的工程思想是通用的。我做過(guò)的很多非游戲項(xiàng)目里其實(shí)也用到了同一套思路效果同樣很好。6.1 第一刀先砍系統(tǒng)調(diào)用和堆分配如果項(xiàng)目里的日志系統(tǒng)還是一條日志一次write那不管用什么隊(duì)列性能都救不回來(lái)。最優(yōu)先的改造是引入批量緩沖先把日志寫(xiě)進(jìn)一塊預(yù)分配的環(huán)形緩沖再由一個(gè)專(zhuān)門(mén)線(xiàn)程批量落地。這一刀就能把吞吐提升一到兩個(gè)數(shù)量級(jí)。同樣道理日志對(duì)象盡量用固定大小塊或復(fù)用內(nèi)存避免每條日志都觸發(fā)malloc。6.2 第二刀消費(fèi)者一定要有背壓意識(shí)無(wú)鎖隊(duì)列不是萬(wàn)能的。很多團(tuán)隊(duì)做了無(wú)鎖隊(duì)列之后發(fā)現(xiàn)消費(fèi)者慢隊(duì)列積壓最后生產(chǎn)線(xiàn)程還是會(huì)卡。正確的做法是給消費(fèi)者加“背壓反饋”通過(guò)監(jiān)測(cè)隊(duì)列水位來(lái)判斷生產(chǎn)壓力的高低——高水位時(shí)加大處理批次低水位時(shí)減少喚醒頻率。這個(gè)水位閾值不是拍腦袋定的可以通過(guò)在測(cè)試環(huán)境里壓測(cè)得出通常我會(huì)把高水位閾值設(shè)在隊(duì)列容量的60%到80%之間。6.3 第三刀把“休眠策略”做成指數(shù)退避消費(fèi)者沒(méi)有數(shù)據(jù)時(shí)如果永遠(yuǎn)按固定頻率醒來(lái)檢查空閑時(shí)的CPU功耗就很浪費(fèi)如果永遠(yuǎn)沉睡新的日志到達(dá)又不能及時(shí)處理。實(shí)際工程里最穩(wěn)的方案是指數(shù)退避連續(xù)N次沒(méi)有數(shù)據(jù)就逐漸增加休眠時(shí)間一旦有數(shù)據(jù)立刻回到短休眠或零休眠。這個(gè)策略在低頻日志場(chǎng)景能把空轉(zhuǎn)功耗降低一個(gè)量級(jí)以上。6.4 第四刀性能測(cè)試要看P99更要看空閑CPU我看過(guò)不少項(xiàng)目的日志性能測(cè)試報(bào)告只關(guān)注“每秒能打多少條”完全不看P99延遲和CPU占用率。這兩個(gè)指標(biāo)恰恰是日志系統(tǒng)最容易埋雷的地方一個(gè)日志系統(tǒng)在峰值時(shí)CPU占用率過(guò)高會(huì)直接擠占業(yè)務(wù)線(xiàn)程的時(shí)間片。所以我的習(xí)慣是做日志性能測(cè)試一定同時(shí)記錄三組數(shù)據(jù)吞吐、P99延遲、空閑和峰值兩種狀態(tài)下的CPU占用率。只盯著吞吐做優(yōu)化遲早會(huì)在線(xiàn)上被延遲抖動(dòng)上課。6.5 一個(gè)最簡(jiǎn)可用的“兩段式環(huán)形隊(duì)列”骨架如果你覺(jué)得自己寫(xiě)一個(gè)無(wú)鎖環(huán)形隊(duì)列很復(fù)雜其實(shí)核心骨架并不長(zhǎng)。下面這個(gè)簡(jiǎn)化版可以幫你建立直覺(jué)真正的工程實(shí)現(xiàn)還要處理邊界和內(nèi)存序但大框架就是這兩段。enum SlotState : uint32_t { EMPTY, FILLING, READY, DRAINING }; struct Slot { alignas(64) std::atomicuint32_t state; char data[256]; }; // 生產(chǎn)者占領(lǐng)槽位 - 寫(xiě)數(shù)據(jù) - release提交 uint32_t idx writeIndex.fetch_add(1, std::memory_order_relaxed); Slot s slots[idx mask]; // 等待或者CAS確認(rèn)該槽位可寫(xiě) s.state.store(FILLING, std::memory_order_relaxed); write_log_into(s.data); s.state.store(READY, std::memory_order_release); // 消費(fèi)者批量找到READY槽位 - 取走 - 標(biāo)記EMPTY while (s.state.load(std::memory_order_acquire) READY) { consume(s.data); s.state.store(EMPTY, std::memory_order_release); }這段代碼放到真實(shí)環(huán)境里還需要考慮“生產(chǎn)者和消費(fèi)者之間的槽位分配競(jìng)爭(zhēng)”“多個(gè)生產(chǎn)者搶占同一段槽位”“消費(fèi)端怎么高效批量掃描READY狀態(tài)”等問(wèn)題。BqLog在工程上把這些細(xì)節(jié)做扎實(shí)了才會(huì)呈現(xiàn)為源碼里那些看著簡(jiǎn)單、跑起來(lái)卻很快的樣子。我自己在實(shí)際項(xiàng)目里的體會(huì)是日志這種“看不見(jiàn)的基礎(chǔ)設(shè)施”恰恰是最難做快的——因?yàn)樗幵诟哳l調(diào)用和低存在感的矛盾里。每次調(diào)優(yōu)日志系統(tǒng)做完之后表面上看業(yè)務(wù)邏輯沒(méi)什么變化但壓力測(cè)試?yán)锬切┫У匿忼X和平穩(wěn)的曲線(xiàn)都在默默證明一切值得。如果你手頭也有一個(gè)飽受鎖和系統(tǒng)調(diào)用折磨的日志模塊不妨從這四點(diǎn)開(kāi)始動(dòng)手換成批量落地加上無(wú)鎖隊(duì)列給消費(fèi)者加一個(gè)會(huì)自我調(diào)節(jié)的調(diào)度環(huán)最后用吞吐和P99一起驗(yàn)收。這套從環(huán)形隊(duì)列到自適應(yīng)總線(xiàn)的路確實(shí)走得通。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
熟妇激情| 91精品国| 久热大香蕉| 色香av| 男人天堂日日夜夜| 日韩人妻大香蕉| 九九干| 深喉吞精| 精品国产乱码久久久久久免费| 亚州色站 日韩电影| 超碰91在线| 五月亭亭六月丁香| 色综合 加勒比| 天天综合网久久ww| 九九九九久久久| 久久亚洲AV成人精品无码| 日韩激情电影中文字幕| 99999re| 男人天堂毛片| 综合色区偷拍| PMv在线观看| 一级性爱视频免费观看| 伊人操| 懂色影视久久| 人人澡人人澡人人| 舔人妻中文免费视频| 97人人爱人人做人人乐| 中文无线日韩一区| 九九九九九九九九九九九蜜桃| 久久综合日韩亚洲欧美| 天天α片| 国产精品久久久久999| 97se综合网| 99精品丰满人妻无| 久久夜精品一区二区三区| 日韩精品99久久久久久中文字幕| 久久熟妇五十路一区| 亚洲有码 视频一区| 色婷婷五月综合激情中文字幕| 九九探花视频在线观看| 国产一区在线免费播放| 色啪网| 亚洲综合在线视频| 久久欧美1卡2卡3| 荡小穴在线观看| 天天干天天操天天拍| 黑操B| 久久视网78| 亚洲视频二区 | 天天综合精品| 97超碰热线| 亚洲自拍欧美色综合| 午夜后入| 天天欲望网| 国产呦精品系列在线观看| 国产 亚洲 一二三四| 欧美经典一区二区三区| 中文字幕亚洲在线一区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 国产精品白领在线观看| 亚洲无无码αⅴ每日更新| 激情无码日韩| 九月丁香婷婷| 日产成人久久| 天天综合-91入口| 操一操摸一摸| 久久婷婷精品| 九九热视频这里只有精品| 任你干在线视频| 97色操| 日韩精品人妻| 在线观看黄色电话| 久久亚州高清| 人人妻人人爽| 无码逼| 国产在线76页| 长久操视频| 天美传媒婬乱在| 欧美色三级片91| 欧美AB在线观看| k频道色撸撸| 九九九九国产| 五月丁香六月婷综合成人综合| 91狠婷| 91熟女视频网| 性爱1区| AV天堂电影网| 亚洲国产97| 伦理片秋霞免费影院| 偷拍亚洲高清图片| 久久久久久久97| 白嫩国模丰满一二三区| 九九拍拍精品视频在线播放| 中文?日韩?免费?精品| 69精品久久久久中文字幕| 蜜桃臀 后入 一区 二区 三区 在线| s片在线观看| 插入逼91| 奸色色 男人天堂 天天射| 精品美女人人干| 欧美一区二区三区四区综合| av大香蕉网站| 久久国产成人精品国产成人亚洲| 色婷婷成人综合| 在线二区不卡| 色色色色综合网| 九九九影院| 欧差乱伦二三| 特级大荫道BBwBBwBBW| 久久东京热久久| 91中文在线| 日韩丨制服丨中文|在线| 精品久久久av无码免费| 久久性爱视频99| 天天插天天射| 日日骚中文字幕| 久久久久人妻| 久草在线| 久久99精品国产| 影音先锋乱伦资源| 91性高| 亚洲字幕一区二区| 亚洲欧美日韩电影网站一区| 午夜120视频在线观看| 搞中出视频在线观看| 综合久久久久久久综合网| 亚洲自拍欧美国产首页网曝 | 99热9| 午夜九九| 老熟女91av| 亚洲天堂精品日韩电影| 男插女青青影院| av无码精品久久久久| 男人的亚洲天堂| 亚乱色| 成人情色综合网| 九九aV| 伊人麻豆传媒| 熟女高潮合集-永久久久-成人AV| 九九综合久久| 日韩黄片影院| 亚洲九九视频| 蜜桃久久久久久久| 精品亚洲国产成人av网站| 欧亚揄拍偷拍精品视频| 欧美图片偷拍| 福利操逼| 九九久久玖玖| 好舒服视频| 国产AV高清AV无码| 国产精品嫩草久久久久| 2017,超碰| 宅男午夜在线视频| 亚洲欧美中文一区二区三| 伊人视频| 青青11操操操操操操操操| 黄色片A级一区二区三区| 欧美亚洲AN| 久热99| 免费观看网黄| 色噜噜狠狠色综无码久久合欧美| 天天日天天屌天天操| 欧美黄片视频在线观看免费 | 无码免费精品高清| 上特色A在线| 国产熟女二区| 极品粉嫩一区二区| 五月天综合网| 成人性爱视频在线看| 久9精品| 精品人妻一二三四区视频| 五月激情啪啪| 国产中文精品一区二区在线观看| 久 久无码人妻AV| 熟女AV一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 无码抄逼网| 久久亚洲AV无码白度| 日本精品一区二区三| 亚洲熟妇乱女区二区三区| 久久无码电影| 国产精品亚洲天堂网址| 极品销魂美女一区二区| 伊人超碰97| 亚州色阁| 蜜臀久久久国产| 很很干很很操| 97天天摸天天碰| 大香蕉综合在线| 国产精品女生av| 极品销魂美女一区二区| 日韩三级av片| 欧美亚洲丝袜人妻制服中文99| 九九九九九九视频| 天美精品一区二区三区四区在线观看| 精品视频97| 97超碰碰碰| 狠狠干狠狠干| 九月色婷婷| 黑人精品成人一区二区三区| 脫衣舞一区二区三区| 欧美日本成人一区二区| 国产精品成人AV片免费看网站| 欧美翘臀视频网站一区二区三区| 色综合91好| 男人精品区| 97在线免费视频观看| 蜜臀va69| 花花AV导航| 草草草视频| 蜜桃久久一区二区| 91视频综合| 日韩97P| 少妇淫妇久久久久久久| 天天久久| 人人操人人摸人人看人人插| 把腿张开老子CAO烂你| 岛国视频一二三区| 中文字幕在线观看二区三区| 五月丁香综合啪啪| 大香交伊人网| 97硬碰| 亚洲美女30b| 精品成人女人久久| 超碰色大香蕉| av毛片aaaaa免费看| 亚洲成人性爱网站在线播放| 国产又色又爽又舒服的三级视频| 超碰人妻在线| 熟女在线视频| 99爱爱| 亚欧美无遮挡| 一级二级在线观看| 日本操逼视频导航| 人人爱操| 97在线青| 天天看天天干| 欧美日韩性爱操大逼| 婷婷丁香在线| 99综合自拍| 中文子幕一二三| 熟妇熟女一区二区三区| 亚洲图片激情综合另类| 再深点灬舒服灬太大了好硬好爽| 中文字幕日产av人| 天美传媒精品久久视频| 日本伦乱九九九综合| 亚洲91在线播放影院| 日本日皮视频逼| 婷婷在线播放| 91精品免费| 人人搞人人插人人操| 精品久久久久av影院| renqi久久久久久久久久久久| 欧美日韩国产中文精品字幕自在自线,| 成人在线永久| 久久久蜜桃一区二区三区| 麻豆婷婷成人一二三| 97国产精品久久久久| 黄色视频高清无码网站| 国内自拍 日韩激情 99| 大香蕉92| 自怕偷自怕亚洲精品| 91婷婷| 一区二区视频你懂的| 熟妇女伦乱视频| 这里只有精品视频在线观看麻豆| 五月天激情小说网| 大香蕉狠狠爱| www.色操逼| 91黑丝美女| 中国特猛少妇色xxx| 黄色av网站在线播放| 淫淫总合网| 怡红院久久老司机| 色婷婷丁香五月| 熟女久久久| 操操操日本的逼| 熟女一区二区| 一级性爱网| 久久麻豆一区二区| 男人综合网| 大屁股xxxxx| 久久久男人的天堂| 国产黄色影片在线观看| 久久欧洲| 中文精品一区二去| 日本性一区| 成人性爱视频在线看| 久久欧洲| 强奸国产精品视频| 欧美日韩国产色五月综合在线| 另类TS人妖一区二区三区| 成人情色综合网| 久久av成人无码免费| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 亚洲激情综合另类男同| 欧美伦乱爱| 中文人妻av高清一区| 亚洲美女30b| 囯产精品久久久久久久久久梁医生| 五月丁香亭亭| 日韩免费中文字幕视频| 91AV天美在线视频| 韩国一级婬片A片AAAAA| 九九九久久久| 久久精品视频在线观看| 91丨熟女丨丰满熟女| 亚洲麻豆18发?| 国产精品一级片在线看| 在线 欧美 亚洲| 麻豆这里只有精品| 亚洲**2021在线观看| 日本999精品| 男人综合网| av网站免费看| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 日韩黄色片子| 亚洲无线观看久久| 亚洲本色精品一区二区久久| 91美女片在线| 超碰狠狠操| 超碰97男人| 国产玖玖| 97超碰69| 97色诱| 国产久久久9999| 被窝影院午夜看片无码| 夜夜操天| 成人网站 免费观看| 九月婷婷久久| 久久精品视| s片在线观看| 少妇熟女1区2区3区| 亚洲色图亚洲无码强奸乱伦| 亚洲少妇在线影音| 一区二区三区成人高清视频| 日韩熟女精一区二区三区不卡| 国产日韩欧美| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 色欲久久99精品久久| 超碰99在线| 人妻喷水| 本道综合精品| 日韩精品资源| 九九热免费国产视频婷婷伊人五月 | 国产盗摄美女如厕大神作品在线观看| 久久熟女人| 欧美色图天堂网m| 久久伊人网视频一区二区三区| 熟女色图在线| 五月婷婷hd| 欧美日韩亚洲五月天婷婷| 精品人妻一区二区三区夜夜| 欧洲亚洲天堂精品| 日韩有码专区| 国内精品嫩模A∨私拍小视频| 亚洲成人精品在线一区| 国产精品无码av在线| 欧美十八禁在线看| 欧美黑人猛交春色影视大全| 久久超碰98| 377p欧洲日本亚洲大胆| 欧美 亚洲 另类 综合| 亚洲九九视频在线观看| 亚洲91色| 丁香六月婷婷综合| 影音先锋一区二区在线资源| 国产精品乱码久久久久久久久| 97天天日| 亚洲人妻AV| 青青欧美| 影音先锋日本一区二区| 精品久久99| 国产免费黄色一级大片| 91精品国产高清久久久久久,亚洲成人 | 天天日天天舔天天喷天天射| 自拍亚洲综合| 亚洲av综合色区图片亚洲| 九九九九九九九精品视频| 亚洲91大片| 18禁无码永久免费无限制| 中文字暮97| 国产精品丝袜在线| 99热国产| 最近二区三区视频大全| 九九色逼| 一二三区精品视频| 中文字幕在线24| 日本二三四区| 欧美亚州手机在线| 亚洲中文字幕在现观看| 国产一区二区三区不卡手机在线| 天天综合~91| 91美腿丝袜在线观看| 亚洲国产成人综合碰碰三级经典| 天堂av2019| 精品国产av一区二区三区四区入口| 久热免费视频| 日韩黄色av中文字幕| 青青草白白色| 99精彩视频| 亚洲经典啪啪| 97亚洲欧美| 日韩精品熟妇| 丁香九月婷婷| 17c在线成人免费A片观看| 天堂涩涩| www鬼畜国产男人的天堂| 强奸乱伦AV网址| 国产91丝袜在线播放蜜月| 丁香五月天堂| 国产成人无码啪| 亚洲图片91| 欧亚不卡| 少妇无码太爽| 性生活久久久久久久久久| 日韩特级毛片免费观看全集| 欧洲精品欧洲精品| 亚洲城人男人的天堂| 91在线超高颜值国产| 人人妻人人爽一区二区三区| 美女毛片999| 欧美不卡在线美女| 欧美色婷婷| 精品少妇人妻av久久免费| 精品人妻一区二区三区不卡断| 五月天色图| 婷婷色综合| 国产日韩在线播放| 国产欧美一级在线观看| 国产树林里野战在线看| 国产婷婷综合在线观看| 外站AV在线| 亚洲 在线| 精品少妇一区二区| 熟女高潮精品一区二区| 欧美第一页| 青青草色插素人| 岛国人妻少妇av在线观看| 久都青青视频| 思思热在线视频免费| 亚洲色图美腿丝袜| h无码动漫在线观看| 操逼无码操逼| 欧美真人抽搐一进一出gif | 五月大香蕉| 国产福利av精彩对白| 成人性爱美曰韩| 中文字幕在线第二页| 蜜臀久久久久久999| 欧美少妇熟女| 日日夜夜噜| 九一综合网| 欧美中日韩XXXX| 无码78| 久热香蕉精品在线视频| 亚洲最大AV网| 精品大久久| 超碰人妻中文在线| 情色大香蕉| 天天视频黄| 欧美大香蕉专区网| 99爱久久视频频| 熟女精品一区二区在线观看| 四虎免费在线观看| 岛国在线一区二区三区| 日韩偷拍色图| 在线色资源| 强奸乱伦免费网站| 婷婷五月花| 精品一区二区三区四区外站| 欧美99999| 嫩草影院在线观看精品| 91国产丝袜足交精品视频| 超碰午夜| 国产精品无码av| 国产乱婷婷精品二区三区| 九九九九97| 强奸乱伦AV一天堂网| www.狠狠| av片在线观看免费播放| 性色高清在线| 97视频网站| 999在线电影香蕉| 日韩91网| 99青草| 98久久| 99国内精品| 中文字幕丰满人妻日本| 嫩草 人人网精品| 欧美一区二区三区互相| 亚州久久9| 乱伦Av网| 亚洲色图欧美色18直播在线| 五月天婷婷小说| 丝袜AV一区二区三区| 国产欧美第五页| 中文字幕欧美日韩三级| 91视频成人福利网站在线一区 | 丁香六月婷婷综合| 亚洲97在线观看| 欧美精品双插| 五月天玖玖资源站| 黄色无码高清黄色无码网站| 久久九九一区二区三区成人| 青青操青娱乐| 午夜福利无毒不卡| 成 人 A V免费视频在线观看| 婷婷国产精品九区| 伊人久久婷婷| 亚洲丝袜少妇在线| 玖玖综合色| 91快色色色色色| 97欧美精品综合| 色色九区| 亚洲AO在线| 激情五月天视频| 视频不卡中文字幕| 久久久成人免费av电影| 中文字日本乱码| 再深点灬舒服灬太大了好硬好爽| 色综合av综合久久| 五月婷婷青青草娱乐伊人| 美女诱惑1区2区| 日本中文字幕在线视频| 综合伊人激情| 婷婷超| 久久久久九九九九九| 久久婷婷色综合一区二区三区| 三级三级三级a级全黄三| 超碰在线一区二区| 91综合网站| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 啪啪啪东京| 丰满人妻一区二区三区四区| KK色在线影院| 97欧美色| 亚洲图片欧美偷拍| 夜夜嗨TV| 易易A毛视频| 色网亚洲人| 四虎免费在线播放| 九九九九热只有精品| 欧美最婬乱婬爆婬牲视频| 久久久久9| 国产蜜臀在线| 精品人妻一区二区三区不卡断| 99最新日韩偷拍视频| 性交一区二区在线播放| 色情婷婷久久五月天| av线电影| 国产91美女视频| 高清孕妇孕交 交| 久久久久久999| 精品人妻中文字幕高清| 国产精品久久天天干| 欧美大香蕉同搞| 午夜国产成人福利视频| 看日韩美女二区三区免费操逼视频 | 沈阳熟女高潮对白视频| 草草影院最新网址| 成片免费播放| 日逼五月天| 激情婷婷丁香| 亚洲女优有码无码高清| 亚洲熟女乱色| 久久少妇人妻| 射久久| 搞中出久久| 久久久五月天| 91嫩草欧美| 久久久久久九九九九九| 久久久久亚洲三级电影| 日本一级一级一级一级| 伊人精品视频| 91殴美| 99热66| 日韩射图| 操逼国产免费| 长长久久88视频| 国精综合一二三区影视| 黄站在线免费观看| 久久久久久亚洲中文| 五月天激情网图片| 亚洲天堂一二| 久久xxxx| 欧美综合色综合| 国产精品自拍欧美在线| 高清肉丝中文无码| 精品中文字幕第一页| 曰本精品久久久| 17c嫩草51久久91嫩草| 久久99网站| 男人天堂毛片| www.99热| 久久婷婷电影网| 2011国产精品| 五月丁香黄色网| 91精品人妻一区二区三区蜜桃臀 | 日日AAvv| 五月色综合| 亚州一区二区| laoshunv91| 中文字幕一区电影在线观看| 免费成人在线熟妇网| 色就色综合| 久久久中文| 五月天伊人网| 精品一区二区三区四区女| 女同女同恋久久级三级| 蜜桃臀AV在线| 殴美牲| 久久婷综合| 精品人妻一区二区三区-国产| 亚洲婷婷丁香在线| 9九九国产| 日韩欧美中文字幕搭讪巨乳美人妻视频| av爱爱爱| 久久精品高清AV| 家庭乱伦国产精品| 夜夜嗨一区二区| 在线视频五十市| 国产三级中文字幕粉嫩| 亚洲一本大道中文字幕无码在线| 91少妇通奸网站| 成人午夜小视频手机在线看| 91狠狠狠| 磁力99AV| 国产午夜激片Av毛片不卡| 国产熟女自拍| 青苹果影院男人的天堂| 被男人吃奶很爽的毛片| 青操影院| 一区二区久久天天干狠狠| 91亚洲色图| 欧美久久人妻少妇一区二区| 丁香色婷婷| 韩国三级一线观看久| 日韩无码AB| 玖色AV| 噜噜噜在线视频| 欧美人妻一区二区| 中文字幕少妇色| 人妻熟女av国产网站| 亚洲中文字幕在现观看| 蜜桃丰满熟妇av无码区不卡| 婷婷香蕉欧美在线一区二区三区| 国产成人亚洲精品无码最新在线| 日本性一区| 老师充足的奶水小说| 亚洲国产第一页综合视频| 国产区91柔拿会所技师| 蜜桃狠狠色伊人亚洲综合网站| 91综合国产精品| 日日日啊啊啊| 99热97| 99精品成人免费看| 国产多人在线观看视频| av亚欧| 国产精品96| 日韩欧视频| 97在线观看视频| 好湿好紧视频| 玖玖大干人妻| 久久久久幕乱码| AV在线播放网址| 福利五区| 操熟女91| 日本人妻丰满熟妇久久久久久| 久夜视频| AA级电影三区| 黄色操人| 国产日韩欧美亚洲精品95 | 亚洲中文字幕日产无码久久| 啊啊啊啊啊啊啊国| 中文字幕制服欧美久久一区| 极品色社| 超碰97玖玖爱| 国产超碰97| 视频二区美腿制服人妻欧美| 亚洲色狠| 久久婷婷亚洲| 青青色综合| 大香蕉伊然在亚洲91| 亚洲AV无码久久精品蜜桃小说| 久久草视频污视频| 97操碰| 秋霞Av理论一级在线| 天天日天天搞天天干| 另类专区在线观看| 性生活久久久久久久久久| 欧洲亚洲综合| 激情天天视频| 3571色综合一区二区二区| 久久超碰大香蕉| 综合久久97| 俺去俺来也在线www| 69精品少妇一区二区三区蜜桃| 玖玖资源中文字幕制服丝袜| 啊啊啊啊操死我| 亚洲中文字幕三级在线| 蜜臀99999| 美女啊啊啊啊啊啊| 一本一道vs波多野结衣| a人欧美综合天堂麻豆| 91一区二匹| 丁香五月久久| 亚洲精品蜜桃久久久| 青草草免费网站av| 97天天弄| 天天草夜夜草高潮片| 极品白嫩福利在线| 亚洲最新Av| 亚洲国产欧美日韩人妻日中文| 久久久久久99999国产精品| 国产精品久久久久久无码红治院| 亚洲高清视频在线观看| 福利操逼| 啊啊啊在线看| 一块操欧美| 国产丁香精品露脸视频| 欧美日韩性爱精品| 日韩青久久| 五月丁香综合激情| 人妻久久一区二区三区| 中文字幕一区二区三区蜜臀| 国产精品成人AV片免费看网站| 黄色污污污污污污网站| 日韩熟女三十乱伦| 久久久久久裸体| 丁香五月影院| 2018天天日天天日| 啊啊啊啊啊啊啊啊啊啊在线观看| 操逼视频免费日韩无码| 欧美一二三| 成熟熟女国产精品一区二区| 麻豆久久久一区二区| 操逼操2| 中文无线日韩一区| 在线天堂999| 色眯眯射| 婷婷情色综合网| 日本五十路熟女一区二区| 亚洲欧美情色| 亚洲熟久久| 欧美人妻精品| 婷婷五月天综合网| 亚洲国产成人高清在线| 国产精品极品美女视频| 超碰在线一区| 91美女视频。| 97精品视频在线播放| 东北老女人的激情视频| 青娱乐 成人娱乐在线| 日韩在线观看中文字幕视频| 中文字幕亚洲永久精品| 澳门黄片一香蕉视频| 日本一区二区不卡| 99热在线播放| 亚洲日韩电影| 青草精品视频-日本久久久久网站| 色网1| 少妇人妻激情四射| 国产不卡中文字幕免费avi| 狠狠干综合| 五月天色图| ,国产乱人伦精品一区二区三区| 六九九九| 欧美 中文字幕 一区| 116美女午夜| 97在线精品| 91亚州日韩高清| 97午夜剧场日韩| 热久日综合| 欧美精品不卡一二三四在线91| 91蜜桃传媒精品久久久一区二区| 久久久亚洲精品中文字幕人妻| 亚洲 欧美 日本 国内 首页| 人妻人人做人人澡人人爽欧美一区| 强奸乱伦免费网站| 亚洲av影院在线观看| 激情婷婷五月天| 久久久99999久网站| 91久热| 91久久久久久久久18| 人妻偷拍一区二区三区| 亚洲av影音先锋| 久久熟女人| 龙兴卡官方查询| 国产成人在线观看网址| 影音先锋中文字幕日本好一区二区| www.av在线观看| 强上我不卡卡| 欧美一区二区三区成人性生活 | 欧美爱国产综合、| 绯色一区二区三区不卡少妇| 91成人精品在线播放| 久久久蜜桃一区二区三区| 99精品人人爽| se01国产在线视频| 欧美久久草熟女| 亚洲中文字幕一区二区| 午夜免费福利视频一区| 亚洲 欧美 综合 91| 亚洲色欲天天天堂色欲网女| 天无日色综合| 天天操妹子| 天天色综亚洲91污| 嗯嗯嗯啊啊啊干死我吧| 亚洲黄色视频在线观看视频| 久久国产精品91| 久久久久久九九九九| 99爱视频| 亚洲无码偷拍| 亚州中文字幕超碰97| 91在线|亚| 91亚洲电影| 精品免费一区二区三区在线亚洲人成| 色欲久久99精品久久| 青娱乐久久艹| 国产不卡的视频| 国产呦精品一区二区三区下载| 欧美性综合| 97人人模人人爽人人| 亚洲精品电影| 亚洲五区熟女| 黄片免费看黄片免费看| 色97欧美| 亚洲永久永久永久永久一级一级一级精品| 国产亚洲精品A在线观看下载| 男人天堂综合| 韩国一级婬片A片AAAAA| 亚洲人综合19| 粘花网06av视频| 国产黄色av大片网站| 97久久久网站| 我中文字幕6区| 五月婷婷激情综合| 激情无码日韩| 精品国产Av无码久久久亚洲| 一区二区三区男女操逼黄色小电影| 欧美美女视频| 日韩欧美久久婷婷网站| 中文字幕AV片| 91色五月俺来也| 欧美日韩99精品麻豆传媒| 人人操人人操草草| 一级岛国大片| 欧美综合另类| 91熟女丨91老女人| 天天综合网合集91| 美女91在线观看| 五月天偷拍| 天堂种子在线www网资源| 成人五级久久| 探花精品 一区二区| 亚洲97资源| 校园春色家庭伦理欧美激情| 麻豆天美传媒在线视频天堂| 91在线欧色| 婷婷尹人大香蕉免费| 色99视频| 欧洲与亚洲欧美精品中文字幕| 香蕉一区二区三区在线视频| 亚洲精品男人的天堂| 久久精品欧美一区蜜桃| 亚洲欧洲网站免费观看| 精品国产精品一区二区| 狠狠色综合网| 九九久久久久久爱| 91九九九逼| 91AV天美在线视频| 999热日韩精品| 日本一道在线播放高清| 大香蕉视频一二三区| 黑人狂躁日本妞一区二区三区| 成人三一级一片aaa| 国产一区在线观看无码AV| 人妻色偷色噜| 亚洲一本色道中文无码aV天美| 色小视频蜜乳| 96AV久久久| 日韩无码服务区| 青娱乐二区免费| 天堂а√在线最新版在线| 国产无码一二三区| 久久五月综合| 久久人爽| 97这里有精品| 亚洲成人无码影院| 五月激情综合网| 日韩中文字幕2020| 日本不卡在线二区三区| 黄色电影在线播放综合网站| 久久人妻视频| 美女网站黄页| 国产高清无码一区三区二区| 亚洲午夜免费狠狠干| www.男人天堂| 欧美高清18A片| 日韩人妻无码专区| 超碰在线1234区| 亚洲精品三| 青青草视频在线观看一区二区| 91成人亚洲色图| 午夜欧美女人操逼| 97碰碰日本乱偷人妻中文的| 欧美欧美啪啪视频| 男人的天堂激情| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲欧美自拍偷拍| 亚洲欧美精品久| 久久久久久日韩| 精品国产国产AV| 国产精品麻豆免费视频| 狠狠夜色午夜久久综合在线| 欧美宗合网| 人人摸人人干人人拍97| 91国内外在线| 婷婷激情综合网| 日本人人操人人操| 国产在线激情| 91社区伊人| 欧美一区二区三区不卡高清视频| 九九综合九九综合| 久久久com| 五月婷亚洲精品天堂| 九九九综合精品| 乱伦一区二区三区‘| 国产盗摄美女如厕大神作品在线观看| 日本三级一区二区 在线| 日日骚 av| 99热官网| 一区二区三区亚洲| 国产精品久久泡妞网站| AND人妻系列| 人妻精品一区二区在线| 激情综合网激情综合| 精品一区二区三区四区女| 乱伦熟女区| 国产精品毛片?v一区二区三区| 国产兽交视频在线播放| 97干综合网| 97视频在线观看播放与子乱对白在线…… | 91欧美经典| 欧美色图私拍91| 99精品网| 亚洲 欧美日韩 另类| 一区不卡在线观看av| 欧美黄业| 99热在线只有精品| 97少妇人妻中文字幕久久| 国产精品网站免费| 999久久久久久久精| 乱伦熟女区| 1禁看欧美黄片免费看| 欧美呦呦性爱| 午夜无遮挡男女啪啪视频| 欧美色图色综合| 色欧洲| 日韩兔费看黄片| 大香蕉欧美| 人妻精品视频一区二区三区| 亚洲女优有码无码高清| 中出在线视频| 亚洲中文字幕久久无码精品| 欧美天天影院| 欧美人妻制服| av黄图片在线观看| 青草草免费网站av| 欧美日日操| 黄色区免费观看中文字幕| 色屁屁影院www国产| 久久久久久日韩| 91人妻做a观看视频| www.色操逼| 97天天摸天天碰| 一区二区三区网站日日骚| 欧美色66| 亚热日本熟女| 东京太热男人的天堂久久久| 神马久久久久久久| 久久无码成人| 91 在线亚洲| 日韩二三区| 蜜臀久久99精品久久久久久成人小说| 蜜臀久久99精品久久久久久婷婷| 国产乱伦搜索结果91P| 中文字幕亚洲永久精品| 亚洲天堂区| 亚洲性图91| 少妇久久久久久久| 亚洲码专区| 黄页大片在线观看| 国产精品毛片| 天天操天天插| 97精品一区| 欧美日韩国产高清在线一二三区 | 九九热五区| 97伊人网| 色婷婷丁香五月| 欧美亚洲清纯| 国产黄色影片在线观看| 一区久久久二区| 亚洲在线a| 色爱三区| 夜夜嗨绯色| 天天操夜夜操| 欧美一级色| 怡红院久久老司机| 日韩精品中文字幕二区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久久男人的天堂| 9l视频自拍9l九色成人| 人妻色情天天操| 国产69精品久久久久99尤物| 日韩精品人妻中文字有码在线| av网站在线观看了| 热久日综合| 日韩欧美国产高清视频| 哑洲在线| 懂色AV一区二区三区| 亚洲天堂在线怕怕视频| 爱啪精品一区| 日本在线播放不卡一区| 深夜激情 | 国产精品久久久久久久久久久久久久久久 | 熟妇人妻精品一区二区视频色欲| 九九亚洲| 九一综合网| 亚洲国产一区二区三区四区国产| 色哟哟av| 91美女中出| 国产成人精品必看| 国产精品夜夜夜| 麻豆亚洲Av成人无码一区精品| 久久精品国产精品一区| 亚洲和欧美裸体美女双飞视频| 97人人操人人摸人人爱| 777奇米影视777四色| 91插B网站| 美日韩在线不卡人妻| 91国产精品在线看| 人人操人人操人人人操| 午夜αv| 四虎在线观看网站| 久久久不能久久久久| 婷婷导航| 无码在线亚洲| 天天色黄色影院天天操| 91亚州| 日本欧美不卡| 香蕉精品二区二区| 国产视频小说| 国产精品suv一区| 内射黑人| 色九九九九| 欧美亚洲厕所精品偷拍91| 亚洲精品丝袜| 97WW精品| 国产精品久久久视频| 日韩人妻大香蕉| 日韩素人无码一区二区三区三州| 九九AV| 一起草av| 国产又黄又猛又粗又爽的网站| 性爱动态120秒| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 久肏视频字幕| 91爱| 免费日韩黄片| 黄片com.| 天天爱天天操| 91人妻视频| 啊啊啊啊啊啊啊在线| 久久9精品网站| 亚洲高清色综合| JIZZJIZZ亚洲女人被躁| 欧美日韩国产三级黄色| 亚洲黄色网址视频| 九九色色| 久久久99999久网站| 亚洲久久东京热一二三四五区视频| 亚洲美腿丝袜香蕉影视欧美成人| 蜜臀99精品国产高清在线观看| 婷婷丁香激情| 一区二区三区精品视频| 草b在线| 亚洲中文字幕一区| 一级做a爰片性色毛片久久| 亚洲偷拍自拍在线视频| 欧美三级不卡| 蜜桃久久一区| 日韩一区二区高清在线观看的| www.婷婷五月天| 97超色| 另类小说综合网| 亚洲免费精品一区| 欧美日韩精品久久久久久久久东北老熟妇| 国产无码久久高清| 婷婷五月天av| 哈哈操电影| 午夜无码精品免费看性色| 97 亚洲 日韩 欧美 在线| 97日韩超碰超碰中文字幕| 日韩成人性爱AV| 天天看特黄的免费网站| 成人一二| 91在线欧色| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 插入粉嫩少妇视频| 久久东京伊人一本到鬼色| 丝袜喷水在线| 99热官网| 3PAV乱伦视频| 91夜色chaopeng| 热无码中文亚洲H一道本一区二区| 精品91摸| 乱伦一区二区三区‘| 国产丰满少妇久久久精品影院| 天天色黄色影院天天操| 欧美精品久久| 黄色片大香蕉| 欧美色图第一页| 亚洲天堂第一页| 亚瑟国产精品久久无码| 超碰免费欧美7| 亚洲欧洲偷拍一区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 激情无码日韩| 91综合天天看| 国产夫妻一区二区| 欧美黄色大片在线观看| av橘色网站| 青青青青草av在线观看| 夜夜操青青草| 九月伊人中文字幕| 美女让帅哥通她小鸡鸡| 超碰亚洲97| 亚洲精品乱码久久久久久蜜桃麻豆| 国产传媒美日韩av| 91欧美美女日韩国产婷婷| 国产精品999zyz| 中文乱码字字幕在线第5页| 毛片麻豆91糖心精品毛情片| 色婷五月天| 成年人性爱日韩| 性爱Av免费| 亚洲天堂一区| 欧美性色欧美| 抽插一区二区视频| 色偷偷男人的天堂麻豆| 天天看人人操屄犊摸阴| 水澄无码AV| 性色一线| 99爱爱| 色五月综合| 婷婷色综合| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 |