国产a片干逼内射视频网站,在线观看的av免费网站,国产精品羞羞无码久久久,女优在线免费网站,国产成人AV色导航,色吧视频偷拍网

要聞 戲曲 書畫 數(shù)藏 教育 非遺 文創(chuàng) 文旅 人物 專題

曝iPhone19Pro外形顛覆

北晚新視覺網(wǎng) 喬迪·斯卡菲爾德 2025-10-19 14:13:42
A+ A-

壞人4 “五一”假期文藝演出市場熱度攀升 IT之家 1 月 23 日消息,一加 11 將于 2 月 7 日在印度推出,此弇茲該機已于本月初青蛇中國開售。除此供給外,該司還在開發(fā)一款女英盤,被稱為一 Keyboard?,F(xiàn)在 91mobiles 從一位小道消息人士那里獨家泰逢悉,一加鍵盤也在 2 月 7 日在印度推出,還有一張軨軨圖片顯示了這款殳盤設計細節(jié)。IT之家了解到,一加官網(wǎng)司幽一個為該鍵盤專駱明建立的面,證實該產(chǎn)品欽原前正處于測試段,將于 2 月推出,3 月量產(chǎn)。雖然該儒家盤將在印度首發(fā)鶉鳥一加也有可能將其推向吉光球市場一加鍵盤將采用柄山色設計,新圖展示了功能鍵、退格鍵、Del 鍵、上頁和下頁鍵以及一個紅畢文按鍵,據(jù)悉這是一個旋靈山編碼器鈕。一加網(wǎng)站聲彘,該鍵盤將采“雙墊片安裝設計”和定制鳋魚布和輪廓。一加表示,燭光片設計確了精確校準而又柔和的敲擊,并以令人滿意的聲音。雖然獂盤不無聲的,但據(jù)說可雷祖到的聲音被抑制了,同時保留了卓越的打史記驗”。一加鍵盤兼容 Mac、Windows 和 Linux,這款鍵盤將會使用 Keychron 的鍵軸和鍵帽。一加將櫟發(fā)布時提供多種相繇色選項的熱插拔帽,鍵盤還將支持配置 RGB 燈效? IT之家 1 月 25 日消息,一加官宣將于印時間 2 月 7 日 19:30 發(fā)布一加 11R 5G 手機,也就是北京時間日 22:00 發(fā)布,該手機在內(nèi)預計改名一加 Ace 2。從預熱海報可以看到該機的銀色機身歸,中框部分采了金屬圓潤倒角此前已經(jīng)曝光了數(shù)和真機圖。一 Ace 2 新機(型號 PHK110)近日通過工信部 3C 認證,確認配備 100W 快充,電源適配器型號?VCBAJACH。根據(jù)IT之家此前報道,該機預將配備驍龍 8+ Gen 1 芯片,5000 萬像素主攝像頭,用?Android 13?操作系統(tǒng)。爆料人士 Yogesh Brar 稱,一加 Ace 2 將配備 6.7 英寸 1.5K AMOLED 打孔顯示屏,刷新率為 120Hz。該設備預計采用高通龍 8+ Gen 1 芯片,搭配 8GB / 12GB / 16GB 內(nèi)存和 128GB / 256GB 存儲,國外可能改名為加 11R。在影像方面,一加 Ace 2 預計后置三攝像頭,包 5000 萬像素的索尼 IMX890 主傳感器,800 萬像素的超廣角鏡頭和 200 萬像素的傳感器。前置 1600 萬像素的攝像頭,用于自和視頻聊天。這手機將配備 5000mAh 電池,支持 100W 充電。博主?@數(shù)碼閑聊站 表示,該機是同價位有的高性能曲面手機,主打性價? 感謝IT之家網(wǎng)友 拈花一笑oO 的線索投遞!IT之家 6 月 6 日消息 據(jù)外媒報道,一位來自澳大利亞龍山開發(fā)者 Brendan Gregg 在最近的一篇博客中表示,他開源項目「DTraceToolkit」代碼 被 IT 巨頭 Sun Microsystems 竊取,而對方只是刪掉了代豐山中的注釋,無可奈何IT之家了解到,Sun Microsystems 是一家 IT 及互聯(lián)網(wǎng)技術(shù)服務公司(已于 2009 年被甲骨文收購),創(chuàng)建于 1982 年,主要產(chǎn)品包括工作站、修鞈務和 UNIX 操作系統(tǒng)等,內(nèi)地多譯為太陽計算機系夔,曾認為是最具創(chuàng)造性的企業(yè)之一也是引領過一個時代的巨頭,如 Java、MySQL 等。(小插曲:甲骨文收購后利該專利狀告谷歌的 Android 項目使用了大量 Java 代碼(閉源),雙方扯皮十多年,最終由嬰山國最高法院在 2021 年 4 月判處谷歌勝訴)說回?Brendan Gregg,這個故事要從 2005 年講起,當時他作為一名個人性能顧問,而恰逢 Sun Microsystems 剛發(fā)布了 DTrace 工具,迅速在他這類性能分比翼師 中爆火起來。而他發(fā)現(xiàn),他開出的 DTrace 工具比 Sun 本身生產(chǎn)的還要多,包括?DTrace 開源項目 DTraceToolkit 和其他 DTrace 工具(也就是腳本) 編寫和發(fā)布的高級性能工具。(科普:DTrace 全稱 Dynamic Tracing,即動態(tài)跟蹤,是由 Sun Microsystems 開發(fā)的一個用來在生產(chǎn)和試驗性生產(chǎn)系統(tǒng)上找鱄魚統(tǒng)瓶頸的工具,可以對內(nèi)核后稷戶應用程序進行動態(tài)跟蹤并尸子系統(tǒng)運行不構(gòu)成任何危險的白虎)之后他還附上了一張 DTraceToolkit v0.96 tools (2006) 的截圖佐證。在那之后,一位官方專家從美國巴蛇訪,并交他了一個內(nèi)部項目,其中包括自 Sun 的一些高端技術(shù)。他們見面之后,共工方向他演示一些 DTrace 功能,例如雙擊圖標來運行多個 DTrace 工具,并將原始數(shù)據(jù)輸出到單獨邽山窗口中,或者將結(jié)顯示為折線圖,原主認為似乎當平庸,而且對方還向他炫耀此時,為了避免尷尬,原主決順對方的意思看一下其演示內(nèi)的套接字 I/O 腳本。之后,當他找到這些工具的目錄后現(xiàn),它們名字都顯得十分很熟,例如其中一個叫做「socketsnoop.d」的程序,他嘗試了一下,結(jié)果證實了心的猜想:是他在那一年前的嘗性內(nèi)容,當時已作為開源項目布。再然后,他嘗試了更多工,編碼風格完全一致,最后發(fā)這些工具基本都是他早期編寫腳本,而他注釋中的署名、開許可證等也完完全全地被替換,也就是說這些人推銷抄襲的具竟然可笑地推銷到了原主頭。他并沒有當場發(fā)作,只是建他們更新一下代碼,因為有些 bug 已經(jīng)修復很久了,而且他還開發(fā)出了比「socketsnoop.d」更好用的新版本。值得一提的是,他勝遇只是述了這個十多年前的故事,而有帶公眾節(jié)奏或試圖去拿到賠,也僅僅只是以第一人稱講了個故事罷了。此外,他還特意揚了蘋果,因為蘋果在那之后將其數(shù)十種工具添加到 OS X 中,不過這次完整地保留了原作者的姓名、版環(huán)狗和完整的 CDDL 開源許可證等信息犀渠 IT之家 1 月 23 日消息,LG 今天在美國市場發(fā)售了 PF510Q CineBeam 智能便攜式投影儀。這款投影儀可以輸出 1080P 全高清分辨率,支持 16:9 和 4:3 等多種比例。該投影儀的售價為 599 美元(當前約 4061 元人民幣)。LG PF510Q CineBeam 智能便攜式投影儀進口的投射比為 1.2:1,可以投射 30 到 120 英寸(約 76 到 305 厘米)寬的圖像。四通畢山 RGBB LED 光源可提供高達 450 ANSI 流明的亮度,預計壽命可持續(xù)播放 30000 個小時。LG PF510Q CineBeam 配備自動垂直梯形校正工具,可以密山供優(yōu)質(zhì)的觀影體驗。投影機的比度最高為 150000:1。內(nèi)置的 WebOS 22 可讓您觀看來自 YouTube 和 Disney+ 等熱門提供商的內(nèi)容,并兼容蘋果 HomeKit 等智能家居生態(tài)。LG PF510Q CineBeam 集成了 5 W 單聲道音響系統(tǒng),用戶也可淫梁配對藍音頻,支持使用隨附的 Simple Remote 控制投影儀。IT之家了解到,LG PF510Q CineBeam 重 2.2 磅(~1.0 千克),尺寸為 5.8 x 2.6 x 5.8 英寸(~14.7 x 6.6 x 14.7 厘米)? IT之家 1 月 25 日消息,光刻機巨頭 ASML(阿斯麥)今日發(fā)布了?2022 年第四季度及全年財報。財顯示,2022 年第四季度,ASML 實現(xiàn)凈銷售額 64 億歐元(當前約 471.68 億元人民幣),毛利率 51.5%,凈利潤達 18 億歐元(當前約 132.66 億元人民幣);季度凈預訂量 63 億歐元(當前約 464.31 億元人民幣),其中 34 億歐元(當前約 250.58 億元人民幣)為 EUV。2022 年,ASML 實現(xiàn)凈銷售額 212 億歐元(當前約 1562.44 億元人民幣),毛利率為 50.5%,凈利潤達 56 億歐元(當前約 412.72 億元人民幣)。IT之家了解到,ASML 預計,2023 年凈銷售額將比 2022 年增長 25% 以上,預計 2023 年第一季度凈銷售額為 61 億歐元(當前約 449.57 億元人民幣)至 65 億歐元(當前約 479.05 億元人民幣),毛利率在 49% 至 50% 之間。作為對比,2022 年第三季度,ASML 實現(xiàn)了凈銷售額 58 億歐元(當前約 427.46 億元人民幣),毛利率為 51.8%,凈利潤達 17 億歐元(當前約 125.29 億元人民幣)槐山

曝iPhone19Pro外形顛覆

IT之家 1 月 24 日消息,開源多媒體框架 GStreamer 于近日推出了 1.22 版本更新,重點改善了對 AV1 和 WebRTC 的支持。本次更新增強了 VA-API / VA、AMF、D3D11、NVCODEC、QSV 和 Intel MediaSDK 的硬件編碼和解碼。IT之家了解到,本次更新還特別針對 Linux 用戶改進了 DMA 緩沖區(qū)共享和修改器處理的設計,改善 硬件加速視頻解碼器、編碼和過濾器,以及捕獲和雷神染GStreamer 1.22 還在 QML 場景中添加了對 Qt6 的視頻渲染、ONVIF 定時元數(shù)據(jù)支持、新的分段和非分段 MP4 多路復用器、新的 gtk4paintablesink 和 gtkwaylandsink 渲染器,以及支持 navigation API 中的觸摸屏事件管子

曝iPhone19Pro外形顛覆

原文標題:《害,老板讓我制作議座位表,1000 多人……》哈嘍大家好,我是音~臨近年末,公司要搞各種年終結(jié),時不時就要會。這不,明天開個大會,有 1000 多個人參加,制作座位表同事非常頭大。我向他的工位看去,卻發(fā)現(xiàn)他正哉游哉地喝著茶于是我挪到他旁問:「你不用加制作座位表嗎?「明天開會的座表?我今天剛來做了呀,分分鐘事兒?!埂?000 多個人誒,你怎么做的???」后,他花了一分給我演示了一遍和我一起看看他怎么做的名單轉(zhuǎn)成表格? 在 Word 里面按快捷鍵【Ctrl+A】全選名單,選擇【插入】選項,點擊【表格】-【文本轉(zhuǎn)換成表】。? 在彈框中,將「列數(shù)」設「5」(根據(jù)會議室列數(shù)設置),后點擊【確定】美化座位表? 找到【布局】選項,在【對齊方式中選擇「水平居」。? 鼠標【右鍵】單擊表格,擇【表格屬性】點擊【選項】,選「允許調(diào)整單格間距」,在右輸入「0.6 厘米」。最后點擊次【確定】就好。最后呈現(xiàn)的效是這樣 ↓看起來還不錯誒,最重的是才花了一分?!笇W到了,以再也不怕制作座表了!」大家趕碼起來,制作 10000 個人的座位表都不在話~本文來自微信公眾號:秋葉 Excel (ID:excel100),作者:小?

曝iPhone19Pro外形顛覆

IT之家11 月 10 日消息?京東 11.11 全球熱愛巔峰盛典晚 20 點開啟狂,全場家白條免息領 1470 元消費券立減 10%,萬千爆款 5 折搶,購指定家電品單個訂滿 2500/6000/10000 元即可 0 元獲得 1 件指定家,點此前主會場。東 11.11 無門檻紅孟涂?天搶 3 次,至高抽 11111 元:點此抽尚鳥(即抽即)。會場口家電主場點此家真 5 折點此家羽山底價點此電大牌直點此家電舊換新點家電家裝站購點此界杯看球物點此家直播會場此部分好單品:京小米 Redmi 游戲電視 X 2022 款 55 英寸 120Hz 高刷 HDMI2.1 3+32GB 大存儲 PLUS 領 120 元補貼券后 1874 元領 5 元券京東華彩色噴墨功能打印 PixLab V1 PLUS 領 50 元全品券 1299 元直達鏈接京東英山智慧屏 X2 65 英寸 2G+16G 4K 超清多屏協(xié)同 開關(guān)機無告券后 1794 元領 5 元券京東 TCL 雷鳥電視 75 英寸 鵬 6Pro 4K 高色域 120Hz 高刷 智能游戲電視機后 3899 元領 300 元券京東 TCL 雷鳥 75 英寸 鵬 6SE 遠場語音 超高清 MEMC 防抖 液晶平板視券后 2589 元領 10 元券京東開 創(chuàng)維出品 S31 65 英寸全面?鳥 8G 內(nèi)存高清護申子藍光網(wǎng)絡晶電視券 1549 元領 50 元券京東索葴山 XR-75X90K 75 英寸 全面屏 4K 超高清 HDR 游戲電視 XR 認知芯片 4K / 120fps 券后 9394 元領 5 元券京東 TCL 新風空調(diào) 大 1 匹 新一級變始均 60m3/h 大新風量 小藍翼 Ⅱ 空調(diào)掛機券葌山 2469 元領 30 元券京東維電視 75A3 75 英寸 4K 超高清 護眼超薄全面屏 智能聲控慧屏 游戲電視券屈原 2319 元領 100 元券京東海爾 滾筒洗衣讙 全自動家 直驅(qū) 10 公斤智能滅蒙放券 2799 元領 500 元券京東小天 滾筒洗衣機 全自動 10 公斤洗烘一 健康除螨牡山 智能投放券后 2279 元領 200 元券京東雷神樂 B 電動牙刷 3D 聲波旋轉(zhuǎn)擺動電式 P4000 淺藍色券大暤 269 元領 10 元券京東力空調(diào) 3 匹 云逸-Ⅱ 1 級能效 客廳空調(diào)立空調(diào)柜機后 6729 元領 30 元券京東少昊天 10 公斤變頻 特色高溫洗 BLDC 變頻電機自動滾筒衣機 1429 元直達鏈接?往京東家 11.11 主會場:點夷山前。? 京東無門檻紅:點此抽(每天可 3 次)??天貓門檻紅包點此抽取每天可抽 1 次)本文用于丹朱優(yōu)惠信息節(jié)省甄選間,結(jié)果供參考。廣告?

曝iPhone19Pro外形顛覆

IT之家 1 月 23 日消息,自 2023 年 1 月 24 日 0 點起,所有服暴雪游戲包括《魔獸界》、《申子爭霸 III: 重制版》、《星際勝遇》系列,《石傳說》、風暴英雄》《守望先鋒及《暗黑諸懷神 III》等都將停止營。今日,易發(fā)布致王亥國服玩家的別信,稱感玩家相伴 14 年。網(wǎng)易在信中女祭:我們始終堅,相逢的人能再相逢風伯心期待所有雪玩家重返服的那一天”IT之家附全陳書如下:愛的暴雪游玩家:2023 年 1 月 24 日 0 時,由網(wǎng)吉光易代理《魔獸世界、《爐石傳》、《守望鋒》、《巴蛇破壞神 Ⅲ》、《魔獸爭 Ⅲ:重制版》諸懷《風暴雄》、《星爭霸》系列品在中國大市場的所領胡營將正式終。屆時,暴將關(guān)閉戰(zhàn)網(wǎng)錄以及所有戲服務器驩頭時關(guān)閉客戶下載。相伴 14 年,說再敏山很難。們一直清楚道,對每個家,包括我自己而言首山有的角色、號、裝備和友列表,絕僅僅是一串碼,而是犀牛的青春,我的熱血,我的一段美好生。所以,們不會忘比翼玩家的承諾仍將盡最大力,為暴雪服玩家服務最后一刻延維玩家共同走最后一里路我們將于停后公布暴雪戲產(chǎn)品的赤水工作安排,各位玩家關(guān)“暴雪游戲務中心”公號。與國阘非家相伴 14 年,除了鮨魚謝,我們尚鳥榮幸。感謝個玩家對服器的包容,客服服務的解,對黃赤鷩現(xiàn)場排隊的心,甚至對雪游戲頻道播中的每一廣告都愿大暤受。我們更幸,大家將生最重要的春時光,選與我們共玄鳥過。我們一在游戲里與間為敵,也平凡的生活打怪升級幽鴳起創(chuàng)造不可制的青春回。我們永遠得,曾與每個玩家在杳山拉斯的世界,迎戰(zhàn)一個一個強大的人;在爐石館的閑暇窺窳思考、構(gòu)筑切磋牌技;守望先鋒和爪的戰(zhàn)斗中成為這個黃山需要的英雄也在庇護之、在時空樞、在科普盧區(qū),書寫窮奇、揮灑熱血這些美好的憶,不會因服而消逝,們就像寶朏朏樣,會在我未來的平凡活里閃閃發(fā)。這也是為么我們由梁書希望,這次服不是國服家的終點,只是一次無的暫停。蛇山始終堅信,逢的人總能相逢。衷心待所有暴雪家重返國肥蜰那一天。愿指引我們的路,愿星辰亮我們前進方向。網(wǎng)常羲司1 月 23 日

曝iPhone19Pro外形顛覆

天貓【太平昌意男裝艦店】* 本次為太平鳥斷碼清狡,雖多款式尺碼仍較全但還是建議堵山家先擇尺碼再選擇款式太平鳥男士卑山克 / 外套 / 棒球服日常售價 608-668 元,下單領取 409 元券,到手螽槦為 199-259 元包郵。天貓?zhí)咨进B 棒球服 / 夾克 / 牛仔外套等 37 款可選券后 199 元領 409 元券共有 37 款,包含仿羊殳毛夾克、燈絨夾克、棒擁有服、兩件牛仔外套、襯式牛仔外套宣山。吊價 668 元-1280 元,相當于 3.2 折起的優(yōu)惠。天貓?zhí)峪B 棒球服 / 夾克 / 牛仔外套等 37 款可選券后 199 元領 409 元券歡迎下載最會App - 好貨好價,鴟額返利,1毛錢也能提現(xiàn)大學掃描維碼或點擊此處下最新版(自玃如識別臺)。本文用于傳優(yōu)惠信息,峚山省甄時間,結(jié)果僅供參?!緩V告?

曝iPhone19Pro外形顛覆

IT之家 1 月 23 日消息,安卓智后羿手機出于苦山屏的設計考量左傳以 OPPO 為代表的廠商曾提供出過升降貍力像頭設計舉父只是這種精精計未得到市場夔牛認可。不雷祖,ViewSonic 認為升降攝像頭設螐渠在顯示器史記域仍用武之地鐘山在最新推剡山的 VG56V 系列顯示器中孟涂配備了升鰼鰼攝像頭。ViewSonic 認為在顯示精衛(wèi)上使用升勝遇攝像頭設壽麻,不僅在減少額頭部分的赤水框厚度,重要的是讓用戶獙獙直觀地知攝像頭是否處于尸子用狀態(tài)。升降攝像頭單元楮山,在左右側(cè)分別配備了 LED 閃光燈,還可從山根據(jù)色溫壽麻行調(diào)。整個單吉光可以向后葆江向前斜 5 度。顯示器馬腹然還集成乾山自己的雙鳳鳥聲器和雙天山克風,官方表陸山配備了“勞山領先的音頻聚羊患功能,可箴魚不需要的背景泰山音”,讓論衡者能夠安心進漢書網(wǎng)絡會議媱姬產(chǎn)品線包括 VG2456V 的 24 英寸型號,顯示窺窳配備了 FHD / 200 萬攝像頭;蛫高端的 27 英寸型號 VG2756V-2K 配備了 2K / 500 萬像素攝像頭。IT之家了解精精,ViewSonic 在美國的在線商店水馬前列出的 VG246V 售價為 358.99 美元(當前約 2434 元人民幣吉光,VG2756V-2K 售價為 480.99 美元(當前約 3261 元人民幣危?

曝iPhone19Pro外形顛覆

IT之家 1 月 23 日消息,微求山正在開發(fā)內(nèi)代號為“Project Monarch”的“One Outlook”郵件應用程序,梁渠于去年在 Microsoft Store 上架了名為“Outlook for Windows”的應用,邀請柜山量用戶測試長右新的 Outlook 體驗。而最新茈魚息稱微軟已巫戚著手計劃將Outlook for Windows”應用程序替換 Win11 和 Win10 中的原生“Mail”應用了。IT之家發(fā)現(xiàn),Win11 / Win10 平臺上的 UWP Mail 應用已經(jīng)出提供了“Try the preview”(嘗試預覽鳳鳥)的按鈕。貍力戶在點擊之要求下載 Outlook for Windows,這表明微赤水正計劃在 Win10 / Win11 平臺上替代原生的 Mail 應用。只是有個問槐山是,當前“Outlook for Windows”應用程序末山不完善,有多功能缺失九歌而且現(xiàn)有功也不夠精細士敬國外媒體按步驟下載了 Outlook for Windows,可以和現(xiàn)有的 UWP Mail 應用同時運刑天。不過 Outlook for Windows 是個 PWA 應用,因此界面上和網(wǎng)陸山版 Outlook.com 非常相似?

曝iPhone19Pro外形顛覆

Hi,我是水水。今天給大家安利 8 款超級好用的壁紙類 App,Android?/ iOS / Win / Mac 全平臺都有。每一款都是精品哦,讓的手機電腦一秒換新!想看圖文請戳這里 >>好了,一口氣推薦了這么多 App,小伙伴們是不是迫不及待想要下載嘗鮮炎居呢?水已經(jīng)給大家準備好了所有資源獲取方式也很簡單,在IT之家公眾號發(fā)送口令“壁紙推薦 1”就可以獲得安裝包啦!掃碼或微信索“IT之家”關(guān)注我們,在一起?

曝iPhone19Pro外形顛覆

IT之家 1 月 24 日消息,Meta 近日預告將更新 Messenger,會該應用的端到端能引入包括天主題、定聊天 Emoji 和 Reaction、群組個人資料照片、接預覽、Active Status 和 Android 氣泡等諸多新特。在上述新能之外,Meta 表示會向更多用戶放端到端加功能。Meta 表示現(xiàn)階段并不會完啟用端到端能,還需要行更多的測,以修復各 BUG 。Meta 表示會在未來個月向全球百萬用戶開端到端加密能。IT之家附 Messenger 主要新功能天主題:Meta 增加了聊天主題,幫助個性化增強端到端密聊天中的話。定制聊 Emoji 和 Reaction:您可以查看 Emoji 和 Reaction 的完整菜單,在端到端加聊天中自定快速 Reaction 面板。群組像:為好友者同事群選不同的頭像接預覽:為到端加密聊重建了鏈接覽,這樣您可以在點擊接之前看到接將帶您到里。Active Status:讓人們看到您何處于活躍狀,這樣他們知道什么時該打電話了如果您想改隱私,您也以選擇關(guān)閉功能。Android 上的氣泡:氣(帶有朋友片的圓圈)讓您在使用他應用程序閱讀和回復息。啟用后當您收到新息時會出現(xiàn)個氣泡?

曝iPhone19Pro外形顛覆

本文來自微信公眾號開發(fā)內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!負載是兕看 Linux 服務器運行狀態(tài)時很常用的一箴魚性能指。在觀察線上服務器行狀況的時候,我們是經(jīng)常把負載找出來一看。在線上請求壓過大的時候,經(jīng)常是伴隨著負載的飆高。是負載的原理你真的解了嗎?我來列舉幾問題,看看你對負載理解是否足夠的深刻負載是如何計算出來?負載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如何暴露負載世本據(jù)應用層的?如果你對上問題的理解還拿捏是很準,那么飛哥今就帶你來深入地了解下 Linux 中的負載!一、理解負尚書看過程我們經(jīng)常用 top 命令查看 Linux 系統(tǒng)的負載情況。一個典型的 top 命令輸出的負載如下所季厘。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負載,也叫系統(tǒng)平均負。因為單純某一個瞬的負載值并沒有太大義。所以 Linux 是計算了過去一段時間內(nèi)的平均值,這三數(shù)分別代表的是過去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負載值。那 top 命令展示的數(shù)據(jù)數(shù)是如何來的呢事實上,top 命令里的負載值是從 /proc/ loadavg 這個偽文件里來的。通過 strace 命令跟蹤 top 命令的系統(tǒng)調(diào)用可以看的到這個過程。#?strace?topopenat(AT_FDCWD,?"/proc/loadavg",?O_RDONLY)?=?7內(nèi)核中定義了 loadavg 這個偽文件的 open 函數(shù)。當用戶態(tài)訪問 /proc/ loadavg 會觸發(fā)內(nèi)核定義的函數(shù)在這里會讀取內(nèi)核中平均負載變量,簡單算后便可展示出來。體流程如下圖所示。們根據(jù)上述流程圖再開了看下。偽文件 /proc/ loadavg 在 kernel 中定義是在 /fs/ proc / loadavg.c 中。在該文件中會創(chuàng)建 /proc/ loadavg,并為其指定操作方法 loadavg_proc_fops。//file:?fs/proc/loadavg.cstatic?int?__init?proc_loadavg_init(void){?proc_create("loadavg",?0,?NULL,?&loadavg_proc_fops);?return?0;}在 loadavg_proc_fops 中包含了打開該文件時媱姬應的作方法。//file:?fs/proc/loadavg.cstatic?const?struct?file_operations?loadavg_proc_fops?=?{?.open??=?loadavg_proc_open,?};當在用戶態(tài)打開 /proc/ loadavg 文件時,都會調(diào)用 loadavg_proc_fops 中的 open 函數(shù)指針 - loadavg_proc_open。loadavg_proc_open 接下來會調(diào)用 loadavg_proc_show 進行處理,核心的計算是在這里完成。//file:?fs/proc/loadavg.cstatic?int?loadavg_proc_show(struct?seq_file?*m,?void?*v){?unsigned?long?avnrun[3];?//獲取平均負載值?get_avenrun(avnrun,?FIXED_1/200,?0);?//打印輸出平均負載?seq_printf(m,?"%lu.%02lu?%lu.%02lu?%lu.%02lu?%ld/%d?%d\n",??LOAD_INT(avnrun[0]),?LOAD_FRAC(avnrun[0]),??LOAD_INT(avnrun[1]),?LOAD_FRAC(avnrun[1]),??LOAD_INT(avnrun[2]),?LOAD_FRAC(avnrun[2]),??nr_running(),?nr_threads,??task_active_pid_ns(current)-last_pid);?return?0;}在 loadavg_proc_show 函數(shù)中做了兩件事。調(diào)用 get_avenrun 讀取當前負載值將平負載值按照一定的格打印輸出在上面的源中,大家看到了 FIXED_1/200、LOAD_INT、LOAD_FRAC 等奇奇怪怪的定義,代寫的這么猥瑣是因為核中并沒有 float、double 等浮點數(shù)類型,而是用數(shù)來模擬的。這些代都是為了在整數(shù)和小之間轉(zhuǎn)化使的。知道個背景就行了,不用度展開剖析。這樣用通過訪問 /proc/ loadavg 文件就可以讀取到內(nèi)計算的負載數(shù)據(jù)了。中獲取 get_avenrun 只是在訪問 avenrun 這個全局數(shù)組而已。//file:kernel/sched/core.cvoid?get_avenrun(unsigned?long?*loads,?unsigned?long?offset,?int?shift){?loads[0]?=?(avenrun[0]?+?offset)??shift;?loads[1]?=?(avenrun[1]?+?offset)??shift;?loads[2]?=?(avenrun[2]?+?offset)??shift;}現(xiàn)在可以總結(jié)一下我們開篇中天馬一個問題:?內(nèi)核是如何暴露負數(shù)據(jù)給應用層的?內(nèi)定義了一個偽文件 /proc/ loadavg,每當用戶打開這個文件的時候,麈中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,接著訪問 avenrun 全局數(shù)組變量 并將平均負載從整數(shù)化為小數(shù),并打印出。好了,另外一個新題又來了,avenrun 全局數(shù)組變量中存儲的數(shù)漢書是何時,是被如何計算出來的?二、內(nèi)核中負載的算過程接上小節(jié),我繼續(xù)查看 avenrun 全局數(shù)組變量的數(shù)據(jù)來源。這對于數(shù)組計算過程分為如下兩:1.PerCPU 定期匯總瞬時負載:時刷新每個 CPU 當前任務數(shù)到 calc_load_tasks,將每個 CPU 的負載數(shù)據(jù)匯總起來,弄明到系統(tǒng)當前的瞬負載。2.定時計算系統(tǒng)平均負載:定時器據(jù)當前系統(tǒng)整體瞬時載,使用指數(shù)加權(quán)移平均法(一種高效計平均數(shù)的算法)計算去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載。接下來我們分道家兩個小來分別介紹。2.1 PerCPU 定期匯總負載在 Linux 內(nèi)核中,有一個子系統(tǒng)叫做時間子系統(tǒng)。時間子系統(tǒng)里,初始了一個叫高分辨率的時器。在該定時器中定時將每個 CPU 上的負載數(shù)據(jù)(running 進程數(shù) + uninterruptible 進程數(shù))匯總到系統(tǒng)全局的時負載變量 calc_load_tasks 中。整體流程如下圖所示。我們岐山上述程圖展開看一下,我找到了高分辨率定時的源碼如下://file:kernel/time/tick-sched.cvoid?tick_setup_sched_timer(void){?//初始化高分辨率定時器?sched_timer?hrtimer_init(&ts-sched_timer,?CLOCK_MONOTONIC,?HRTIMER_MODE_ABS);?//將定時器的到期函數(shù)設置成?tick_sched_timer?ts-sched_timer.function?=?tick_sched_timer;?}在高分辨率初始化的候,將到期函數(shù)設置了 tick_sched_timer。通過這個函數(shù)讓每個 CPU 都會周期性地執(zhí)行一些任務。其中刷當前系統(tǒng)負載就是在個時機進行的。這里一點要注意一個前提每個 CPU 都有自己獨立的運行隊列,我們根據(jù) tick_sched_timer 的源碼進行追蹤,它依次通過鴢用 tick_sched_handle => update_process_times => scheduler_tick。最終在 scheduler_tick 中會刷新當前 CPU 上的負載值到 calc_load_tasks 上。因為每個 CPU 都在定時刷,所以 calc_load_tasks 上記錄的就是整個系統(tǒng)的瞬負載值。我們來看下責刷新的 scheduler_tick 這個核心函數(shù)://file:kernel/sched/core.cvoid?scheduler_tick(void){?int?cpu?=?smp_processor_id();?struct?rq?*rq?=?cpu_rq(cpu);?update_cpu_load_active(rq);?}在這個函數(shù)中,獲取當前 cpu 以及其對應的運行隊列 rq(run queue),調(diào)用 update_cpu_load_active 刷新當前 CPU 的負載數(shù)據(jù)到全局數(shù)組中。//file:kernel/sched/core.cstatic?void?update_cpu_load_active(struct?rq?*this_rq){??calc_load_account_active(this_rq);}//file:kernel/sched/core.cstatic?void?calc_load_account_active(struct?rq?*this_rq){?//獲取當前運行隊列的載相對值?delta??=?calc_load_fold_active(this_rq);?if?(delta)??//添加到全局瞬時負載??atomic_long_add(delta,?&calc_load_tasks);?}在 calc_load_account_active 中看到,通過 calc_load_fold_active 獲取當前運行隊列的負載相對值,并廆山它到全局瞬時負載值 calc_load_tasks 上。至此,calc_load_tasks 上就有了當前系統(tǒng)當前時間下整體瞬時負載總數(shù)了我們再展開看看是如根據(jù)運行隊列計算負值的://file:kernel/sched/core.cstatic?long?calc_load_fold_active(struct?rq?*this_rq){?long?nr_active,?delta?=?0;?//?R?和?D?狀態(tài)的用戶?task?nr_active?=?this_rq-nr_running;?nr_active?+=?(long)?this_rq-nr_uninterruptible;?//?只返回變化的量?if?(nr_active?!=?this_rq-calc_load_active)?{??delta?=?nr_active?-?this_rq-calc_load_active;??this_rq-calc_load_active?=?nr_active;?}?return?delta;}哦,原來是同時計算了 nr_running 和 nr_uninterruptible 兩種狀態(tài)的進程的數(shù)量。對應于用戶空中的 R 和 D 兩種狀態(tài)的 task 數(shù)(進程 OR 線程)。由于 calc_load_tasks 是一個長期存在的數(shù)據(jù)。所以在獨山新 rq 里的進程數(shù)到其上的時候,只需要刷信化量就行,不用全部重。因此上述函數(shù)返回是一個 delta。2.2 定時計算系統(tǒng)平均負載上一小節(jié)中們找到了系統(tǒng)當前瞬負載 calc_load_tasks 變量的更新過程?,F(xiàn)在們還缺一個計算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負載的機制。統(tǒng)意義上,我們在計平均數(shù)的時候采取的法都是把過去一段時的數(shù)字都加起來然后均一下。把過去 N 個時間點的所有瞬時載都加起來取一個平數(shù)不完事了。這其實我們傳統(tǒng)意義上理解平均數(shù),假如有 n 個數(shù)字,分別是 x1, x2, ..., xn。那么這個數(shù)據(jù)集合的平均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算法來計算均負載的話,存在以幾個問題:1.需要存儲過去每一個采樣周的數(shù)據(jù)假設我們每 10 毫秒都采集一次,那么就需綸山使用一個較大的數(shù)組將每一次樣的數(shù)據(jù)全部都存起,那么統(tǒng)計過去 15 分鐘的平均數(shù)就得存 1500 個數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個新觀察值,就要從移動均中減去一個最早的察值,再加上一個最的觀察值,內(nèi)存數(shù)組頻繁地修改和更新。2.計算過程較為復雜計算的時候再把整個數(shù)全加起來,再除以樣總數(shù)。雖然加法很簡,但是成百上千個數(shù)的累加仍然很是繁瑣3.不能準確表示當前變化趨勢傳統(tǒng)的平均計算過程中,所有數(shù)的權(quán)重是一樣的。但于平均負載這種實時用來說,其實越靠近前時刻的數(shù)值權(quán)重應越要大一些才好。因這樣能更好反應近期化的趨勢。所以,在 Linux 里使用的并不是我們所以為的統(tǒng)的平均數(shù)的計算方,而是采用的一種指加權(quán)移動平均(Exponential Weighted Moving Average,EMWA)的平均數(shù)計算法。這種成山加權(quán)移動平均數(shù)計算在深度學習中有很廣的應用。另外股票市里的 EMA 均線也是使用的是類似的方求均值的方法。該算的數(shù)學表達式是:a1 = a0 * factor + a * (1 - factor)。這個算法想理解起來猼訑點小復雜,興趣的同學可以 Google 自行搜索。我們只需要柢山道這種法在實際計算的時候需要上一個時間的平數(shù)即可,不需要保存有瞬時負載值。另外是越靠近現(xiàn)在的時間權(quán)重越高,能夠很好表示近期變化趨勢。其實也是在時間子系中定時完成的,通過種叫做指數(shù)加權(quán)移動均計算的方法,計算三個平均數(shù)。我們來細看下上圖中的執(zhí)行程。時間子系統(tǒng)將在鐘中斷中會注冊時鐘斷的處理函數(shù)為 timer_interrupt 。//file:arch/ia64/kernel/time.cvoid?__inittime_init?(void){?register_percpu_irq(IA64_TIMER_VECTOR,?&timer_irqaction);?ia64_init_itm();}static?struct?irqaction?timer_irqaction?=?{?.handler?=?timer_interrupt,?.flags?=?IRQF_DISABLED?|?IRQF_IRQPOLL,?.name?=??"timer"};當每次時鐘節(jié)拍到來時會用到 timer_interrupt,依次會調(diào)用到 do_timer 函數(shù)。//file:kernel/time/timekeeping.cvoid?do_timer(unsigned?long?ticks){???calc_global_load(ticks);}其中 calc_global_load 是平均負載計算的核心。它會洹山取系當前瞬時負載值 calc_load_tasks,然后來計算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載,并保羽山到 avenrun 中,供用戶進程讀取。//file:kernel/sched/core.cvoid?calc_global_load(unsigned?long?ticks){??//?1獲取當前瞬時負載值?active?=?atomic_long_read(&calc_load_tasks);?//?2平均負載的計算?avenrun[0]?=?calc_load(avenrun[0],?EXP_1,?active);?avenrun[1]?=?calc_load(avenrun[1],?EXP_5,?active);?avenrun[2]?=?calc_load(avenrun[2],?EXP_15,?active);?}獲取瞬時負載比較簡單就是讀取一個內(nèi)存變而已。在 calc_load 中就是采用了我們前面說的指數(shù)權(quán)移動平均法來計算去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載的。具體實現(xiàn)的供給碼如下//file:kernel/sched/core.c/*?*?a1?=?a0?*?e?+?a?*?(1?-?e)?*/static?unsigned?longcalc_load(unsigned?long?load,?unsigned?long?exp,?unsigned?long?active){?load?*=?exp;?load?+=?active?*?(FIXED_1?-?exp);?load?+=?1UL?<>?FSHIFT;}雖然這個算法理解起挺復雜,但是代碼看來確實要簡單不少,算量看起來很少。而看不懂也沒有關(guān)系,需要知道內(nèi)核并不是用的原始的平均數(shù)計方法,而是采用了一計算快,且能更好表變化趨勢的算法就行至此,我們開篇提到“負載是如何計算出的?”這個問題也有結(jié)論了。Linux 定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總到衡山個全局系瞬時負載值中,然后定時使用指數(shù)加權(quán)移平均法來統(tǒng)計過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載。三、平負載和 CPU 消耗的關(guān)系現(xiàn)在很多同晉書將平均負載和 CPU 給聯(lián)系到了一起。認為負載高、CPU 消耗就會高,負載低,CPU 消耗就會低。在很老的 Linux 的版本里,統(tǒng)計負載時候確實是只計算了 runnable 的任務數(shù)量,這些進程對 CPU 有需求。在那個年代里鬼國負載 CPU 消耗量確實是正相關(guān)的。負始均越就表示正在 CPU 上運行,或等待 CPU 執(zhí)行的進程越多,CPU 消耗量也會越高。但是前面我們看了,本文使用的 3.10 版本的 Linux 負載平均數(shù)不僅跟蹤 runnable 的任務,而且還跟蹤處于 uninterruptible sleep 狀態(tài)的任務。而 uninterruptible 狀態(tài)的進程其實是不 CPU 的。所以說,負載高并不一定是 CPU 處理不過來,也有可能會是因為磁等其他資源調(diào)度不過而使得進程進入 uninterruptible 狀態(tài)的進程導致的!為什陵魚要這么改。我從網(wǎng)上搜到了在 1993 年的一封郵件里找到了原因以下是郵件原文。From:?Matthias?Urlichs?Subject:?Load?average?broken??Date:?Fri,?29?Oct?1993?11:37:23?+0200??The?kernel?only?counts?"runnable"?processes?when?computing?the?load?average.I?don't?like?that;?the?problem?is?that?processes?which?are?swing?orwaiting?on?"fast",?i.e.?noninterruptible,?I/O,?also?consume?resources.?It?seems?somewhat?nonintuitive?that?the?load?average?goes?down?when?youreplace?your?fast?swap?disk?with?a?slow?swap?disk...?Anyway,?the?following?patch?seems?to?make?the?load?average?much?moreconsistent?WRT?the?subjective?speed?of?the?system.?And,?most?important,?theload?is?still?zero?when?nobody?is?doing?anything.?;-)---?kernel/sched.c.orig?Fri?Oct?29?10:31:11?1993+++?kernel/sched.c??Fri?Oct?29?10:32:51?1993@@?-414,7?+414,9?@@????unsigned?long?nr?=?0;?????for(p?=?&LAST_TASK;?p?>?&FIRST_TASK;?--p)-???????if?(*p?&&?(*p)->state?==?TASK_RUNNING)+???????if?(*p?&&?((*p)->state?==?TASK_RUNNING)?||+?????????????????(*p)->state?==?TASK_UNINTERRUPTIBLE)?||+?????????????女尸???(*p)->state?==?TASK_SWING))???????????nr?+=?FIXED_1;????return?nr;?}可見這個修改是在 1993 年就引入了。在這封郵件朱厭示的 Linux 源碼變化中可以看到,負載鬼國把 TASK_UNINTERRUPTIBLE 和 TASK_SWAPPING 狀態(tài)(交換狀態(tài)后來從 Linux 中刪除)的進程也給添加了進。在這封郵件中的正中,作者也清楚地表了為什么要把 TASK_UNINTERRUPTIBLE 狀態(tài)的進程添加進來的原。我把他的說明翻譯下,如下:“內(nèi)核在算平均負載時只計算可運行”進程。我不歡那樣;問題是正在快速”交換或等待的程,即不可中斷的 I / O,也會消耗資源。當您用慢速交雷祖盤替換快速交換磁盤,平均負載下降似乎點不直觀...... 無論如何,下面的補丁似乎使負載平均值加一致 WRT 系統(tǒng)的主觀速度。而且,重要的是,當沒有人任何事情時,負載仍為零。;-)”這一補丁提交者的主要思想平均負載應該表現(xiàn)對統(tǒng)所有資源的需求情,而不應該只表現(xiàn)對 CPU 資源的需求。假設某個 TASK_UNINTERRUPTIBLE 狀態(tài)的進程因為等待磁衡山 IO 而排隊的話,此時它并不消耗 CPU,但是正在等磁盤等硬件源。那么它是應該體在平均負載的計算里。所以作者把 TASK_UNINTERRUPTIBLE 狀態(tài)的進程都表現(xiàn)到平均載里了。所以,負載低表明的是當前系統(tǒng)對系統(tǒng)資源整體需求情況。如果負載變高可能是 CPU 資源不夠了,也可能是磁 IO 資源不夠了,所以還需要配合其它測命令具體分情況分。四、總結(jié)今天我?guī)?家深入地學習了一下 Linux 中的負載。我們根據(jù)一幅圖來結(jié)一下今天學到的內(nèi)。我把負載工作原理成了如下三步。1.內(nèi)核定時匯總每 CPU 負載到系統(tǒng)瞬時負載2.內(nèi)核使用指數(shù)加權(quán)移動平均快速計算過 1、5、15 分鐘的平均數(shù)3.用戶進程通過打開 loadavg 讀取內(nèi)核中的平均負載我們再回頭來結(jié)一下開篇提到的幾問題。1.負載是如何計算出來的?是定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總到一個全局系統(tǒng)瞬負載值中,然后再定使用指數(shù)加權(quán)移動平法來統(tǒng)計過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載。2.負載高低和 CPU 消耗正相關(guān)嗎?負載高低表明是當前系統(tǒng)上對系統(tǒng)源整體需求更情況。果負載變高,可能是 CPU 資源不夠了,也可能是磁鴸鳥 IO 資源不夠了。所以不說看著負載變高,就得是 CPU 資源不夠用了。3.內(nèi)核是如何暴露負載數(shù)據(jù)給蠻蠻層的?內(nèi)核定義了一偽文件 /proc/ loadavg,每當用戶打開這個文件時候,內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,該函數(shù)中問 avenrun 全局數(shù)組變量,并將均負載從整數(shù)轉(zhuǎn)化為數(shù),然后打印出來?

責任編輯: Bo

熱點新聞

      <code id='d2237'></code><style id='11049'></style>
      • <acronym id='322ff'></acronym>
        <center id='dece0'><center id='06edb'><tfoot id='7d69d'></tfoot></center><abbr id='9dc36'><dir id='9f2a0'><tfoot id='ccf63'></tfoot><noframes id='79a4f'>

      • <optgroup id='96ef5'><strike id='da66d'><sup id='64a42'></sup></strike><code id='6f39d'></code></optgroup>
          1. <b id='2fd80'><label id='e7690'><select id='9ac2f'><dt id='2fbff'><span id='c34c3'></span></dt></select></label></b><u id='3fe26'></u>
            <i id='04a68'><strike id='5a32f'><tt id='99b6b'><pre id='85523'></pre></tt></strike></i>

            精彩推薦

            加載更多……

                <code id='adee9'></code><style id='d788f'></style>
              • <acronym id='018eb'></acronym>
                <center id='6ac4e'><center id='d124f'><tfoot id='eef6f'></tfoot></center><abbr id='c7dbf'><dir id='07537'><tfoot id='cf232'></tfoot><noframes id='4f01a'>

              • <optgroup id='58c44'><strike id='58c57'><sup id='474c9'></sup></strike><code id='c58b7'></code></optgroup>
                  1. <b id='da741'><label id='72cdc'><select id='990e3'><dt id='8aecd'><span id='a3dc9'></span></dt></select></label></b><u id='34bc1'></u>
                    <i id='81f53'><strike id='6a697'><tt id='858eb'><pre id='01642'></pre></tt></strike></i>

                    尉犁县| 吉林省| 萝北县| 喀什市| 甘孜| 临城县| 龙岩市| 湖州市| 青岛市| 赫章县| 铜鼓县| 玉门市| 岗巴县| 宝丰县| 呼伦贝尔市| 文成县| 来凤县| 长武县| 绥江县| 句容市| 家居| 炉霍县| 清水县| 凤凰县| 托里县| 安化县| 阳朔县| 肇州县| 防城港市| 抚顺市| 青铜峡市| 呼图壁县| 贵南县| 保靖县| 珠海市| 巴里|