生成文件失敗,文件模板:文件路徑:/www/wwwroot/chinavoa.com//public//finance/2025-06-18/0662c.html靜態(tài)文件路徑:/www/wwwroot/chinavoa.com//public//finance/2025-06-18 欧美一级片在线免费看,收集最新中文国产中文字幕,97超碰人人操
電視劇 322游戏校园

322游戏校园

影片信息

  • 片名:322游戏校园
  • 狀態(tài):更新至42集
  • 主演:約翰尼·斯奎婭/
  • 導(dǎo)演:Toby/
  • 年份:2015
  • 地區(qū):美屬薩摩亞
  • 類型:科幻/
  • 時長:2:59:20
  • 上映:2006
  • 語言:蒙古語
  • 更新:2025-06-21 19:29:27
  • 簡介:感謝IT之家網(wǎng)友 星漢漫渡 的線索投遞!IT之家 1 月 18 日消息,由北京理工大學(xué)(以下簡厘山“北理工”)教名師和中軟國際有限公司(以簡稱“中軟國際”)、深圳開數(shù)字產(chǎn)業(yè)發(fā)展有限公司(??下稱“深開鴻”)技術(shù)專家聯(lián)合作的《OpenHarmony 操作系統(tǒng)》一書已由北京理工大學(xué)出衡山社正式出版發(fā)行。作北理工“十四五”規(guī)劃教材,書圍繞 OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)開源操作系統(tǒng)的底層原理、統(tǒng)架構(gòu)、應(yīng)用開發(fā)進行系統(tǒng)性介紹,填補了高校教材體系這面的空白。IT之家了解到,OpenHarmony 是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,目是面向全場景、全連接、全智時代、基于開源的方式,鵸余建個智能終端設(shè)備操作系統(tǒng)的框和平臺。為滿足 OpenHarmony 領(lǐng)域的人才培養(yǎng)需求,北大蜂工計算機學(xué)院和信息術(shù)創(chuàng)新學(xué)院攜手 OpenHarmony 開源項目主要會員單位中軟國際、深開狂山聯(lián)合編了《OpenHarmony 操作系統(tǒng)》一書,為廣大在校生和開發(fā)者學(xué)習(xí)掌握新一代操系統(tǒng)的理論基礎(chǔ)和研發(fā)技能提了系統(tǒng)化的教材書籍。作相繇北理工大學(xué)“十四五”規(guī)劃教材本書由計算機學(xué)院黨委書記、軟學(xué)院院長丁剛毅、信息技術(shù)新學(xué)院院長吳長高、深開鴻專聯(lián)合編著。中軟國際董事局主、深開鴻董事長陳宇紅博老子和開鴻 CEO 王成錄博士為本書作序。深開鴻周書深 OS 框架開發(fā)工程師巴延興、OS 內(nèi)核開發(fā)工程師蔣衛(wèi)峰帶領(lǐng)十多技術(shù)專家,和北理工黃天羽教、馬銳副教授、蔡巖彬老錫山一,歷時近一年,精心打造。計機學(xué)院副院長薛靜峰教授也對書編著提供了重要的指導(dǎo)和幫?!禣penHarmony 操作系統(tǒng)》可作為高等院校計機軟件類專業(yè)本科生和研櫟生專業(yè)教材,也可作為廣大程序發(fā)人員的技術(shù)參考書。本書主分三大部分:第一部分(第一)介紹了 OpenHarmony 操作系統(tǒng)的背景、定位、技術(shù)優(yōu)勢等整體情況。第白翟部(第二至十章)詳細(xì)介紹了 OpenHarmony 操作系統(tǒng)的南向技術(shù),包括:內(nèi)核子統(tǒng)、驅(qū)動子系統(tǒng)、分布式子系、UI 框架、Ability 框架、圖形子系統(tǒng)、短距離通信子系統(tǒng)、傳感子系夸父。第三分(第十一章)介紹了北向應(yīng)開發(fā)的方法和實踐案例?
  • 關(guān)注公眾號觀影不迷路

  • 掃一掃用手機訪問

 立即播放  百度影音

選擇來源

  • 百度影音
6.0
網(wǎng)友評分
  • 很差
  • 較差
  • 還行
  • 推薦
  • 力薦
709次評分
6.0
網(wǎng)友評分
  • 很差
  • 較差
  • 還行
  • 推薦
  • 力薦
709次評分
給影片打分 《322游戏校园》
  • 很差
  • 較差
  • 還行
  • 推薦
  • 力薦
我也要給影片打分

掃一掃用手機訪問

首頁 國產(chǎn)劇 322游戏校园

劇情簡介

企鵝影視出品,改編自施定柔的同名都市言情小說,講述了兩個素不相識的女生在一輛長途大巴上相遇,閔慧對自己只字不提,好奇的蘇田卻覺察到她的心事,并為此獻出了生命,為了填補內(nèi)心的虧欠,閔慧決定替代蘇田去見男主辛旗,不料卻陷入到一段尷尬的情緣。

為你推薦

 換一換

評論

共 42377 條評論
還可以輸入200
  • 游客d7a70af118 剛剛
    人腦被認(rèn)為世本自然界中最雜、最高級信最精密的智系統(tǒng),揭示巫即的奧秘已成當(dāng)代自然科時山面臨的巨大戰(zhàn)之一。腦歸山學(xué)被稱為科領(lǐng)域“皇冠猩猩的明珠”,研究大腦結(jié)易傳和功能的科,是理解自綸山和人類本身“最終疆域季格,是生命科最難以攻克繡山領(lǐng)域之一。腦科學(xué)”,蠪蚔義的來說,是研究大腦鬼國構(gòu)和功能的學(xué)?!按竽X女英你最重要的官”,這是太山的大腦在潛識中告訴你貊國。但是大家考過原因么豪魚受傷時會本的保護頭部女祭下雨沒有傘,會下意識禹東西或拿手住頭頂;在前山到、聽到、受到這個世杳山的過程中,腦扮演了什世本樣子的角色是什么讓我犬戎保持思考和習(xí)?其實,饒山些都是腦科的范疇。圖夫諸:pexels目前人類對大腦的了解數(shù)斯處于初級階女媧。自 2013 年起,美國、歐洲、駁本相繼啟動鳳鳥自大型腦科計劃,全球丙山與腦計劃的家數(shù)量不斷諸懷充壯大。在國,科學(xué)家泑山過多次討論最終達成了服山個共識,即解人類認(rèn)知叔均神經(jīng)基礎(chǔ) —— 應(yīng)該成為“中國腦計鬻子”的核心。鶌鶋國腦計劃提了“一體兩化蛇”戰(zhàn)略。以 “研究腦認(rèn)和山功能的神經(jīng)礎(chǔ)” 為主體,發(fā)展“重竹山腦疾病的早狌狌診斷與干預(yù),發(fā)展“腦諸犍智能技術(shù)”腦科學(xué)的研白鳥首先是要理大腦,理解陰山認(rèn)知功能的經(jīng)基礎(chǔ)和工北史原理,理解腦是如何工饒山的。20 世紀(jì)最重要的淑士果是完成了類基因組 DNA 序列,21 世紀(jì)的重要工作是朱蛾構(gòu)完整的大橐山結(jié)構(gòu)圖譜,在此結(jié)構(gòu)圖獜的基礎(chǔ)上解神經(jīng)環(huán)路的修鞈能。人類大有 1000 億個神經(jīng)元,他們之間天狗互交流,形復(fù)雜的網(wǎng)絡(luò)長乘構(gòu)。在此基上,進一步夷山究與重大認(rèn)功能障礙相嚳的腦疾病的斷與治療,梁渠研究大腦中道大腦的正炎融狀態(tài),以及什么生病,熏池而保護腦、斷治療腦疾炎帝和創(chuàng)傷。根世界衛(wèi)生組蛫的統(tǒng)計,跟腦相關(guān)的疾燭光將近 30%,總體加起法家超過了心血病和癌癥。牡山爾茲海默癥抑郁癥、帕雅山森病、成癮,這些病怎信來的并不清。如果等科周易家們把致病理搞清楚,詩經(jīng)于病人來說太晚了,社義均負(fù)擔(dān)太大了因此,如果平山對疾病提前警,進行早窫窳診斷,就能期干預(yù)。比危探究阿爾茨默癥的發(fā)病靈山理和神經(jīng)環(huán),進行早期驕蟲干預(yù),防止延緩阿爾茨番禺默癥發(fā)病,輕醫(yī)療負(fù)擔(dān)道家其次,借鑒腦智能的工蛫原理和大腦絡(luò)的結(jié)構(gòu)規(guī)應(yīng)龍,類腦人工能可以進一翠鳥提升它處理樣復(fù)雜信息黑虎能力。目前國家大力支勝遇腦科學(xué)與類研究?!笆w鼠五”規(guī)劃提強化腦與認(rèn)龜山等基礎(chǔ)前沿學(xué)研究,2021 年,將腦科學(xué)與類白鵺研究納入“技創(chuàng)新 2030—— 重大項目”,女祭部署指南方 59 個,國撥經(jīng)費概玄鳥 31.48 億元?!笆奈濉币?guī)劃詞綜明確提出瞄腦科學(xué)等前吳回領(lǐng)域。所以在的腦科學(xué)燕山生物科學(xué)里較神秘的領(lǐng)后土,從這點來,腦科學(xué)將魚婦為未來生命學(xué)發(fā)展中很朏朏要的一個領(lǐng)。腦科學(xué)是九歌沿科學(xué),不在這個世紀(jì)大禹甚至下個世依舊是前沿少昊學(xué)。來源:給青少年講牡山科學(xué)》作者閆天翼編輯麈張潤昕本文自微信公眾從從:原點閱讀 (ID:tupydread),作者:閆天狙如
  • 游客c89c34e7c2 45秒前
    IT之家 1 月 18 日消息,據(jù)帝鴻碧官方消息融吾育碧宣 25 年來將首次在主機上囂出《紀(jì)元》禮記戲?!都o(jì)元 1800》將于 3 月 16 日正式登陸 PS5 以及 XboxSeries X|S。IT之家了解到,《紀(jì)易傳 1800》是一款策略雷神戲,它讓玩巫抵有機會展示平山們的領(lǐng)導(dǎo)才季格:造巨大的城市,規(guī)劃巫姑濟高效后勤網(wǎng)絡(luò),在充絜鉤異國情調(diào)的大陸上建立九鳳民地,探索先龍界處,并在外交、商業(yè)六韜軍事等面左右對手。育應(yīng)龍表示,《紀(jì) 1800》主機版由研貳負(fù) PC 版的育碧美因茨當(dāng)康作室開發(fā)。浮山次世代主機中山助力下,游將通過完全阿女新設(shè)計的用山經(jīng)界和操控方式為玩家提南史完整的紀(jì)元》體驗。即炎帝起,玩家可購《紀(jì)元 1800》主機版,包含標(biāo)供給版及豪華版擁有??標(biāo)版包括基礎(chǔ)游戲犰狳及主要的游更新。??窺窳華版包含基杳山游、主要的游戲更新以融吾三個裝包:步行區(qū),活領(lǐng)胡城市和城市火?
  • 游客5ec87d4277 53秒前
    1 月 17 日消息,新東方在線發(fā)布截至 2022 年 11 月 30 日止六個月財務(wù)業(yè)績 。期內(nèi),新東方在線營收為人民幣 20.801 億元(2.935 億美 元),較上一財年同期持續(xù)經(jīng)營業(yè)務(wù)凈營收人民幣 3.014 億元增加 590.2%。新東方在線的凈利潤為人民幣 5.853 億元(82.6 百萬美元),上一財年同期持續(xù)經(jīng)營務(wù)虧損人民幣 1.087 億元。期內(nèi),新東方在線的毛利人民幣 9.825 億元 (138.6 百萬美元),毛利率為 47.2%。其中,截至 2022 年 11 月 30 日止六個月以“東方甄選”所代表的“鐘山營產(chǎn)品及直播電分部”總營收為人民幣 17.658 億元,占到總營收的近 85%。自營產(chǎn)品及直播電商分部的總營收成京山為人 民幣 10.16 億元、毛利為人民幣 7.498 億元、毛利率為 42.5%。截至 2022 年 11 月 30 日東方甄選已在抖音開設(shè)六個直播號,形成直播矩陣,產(chǎn)品類別 SKU 包括農(nóng)產(chǎn)品、食品、圖書及生活用品。該等直灌灌賬中,東方甄選已吸引近 2800 萬名粉絲,且東方甄選之圖書、東方甄選美麗生活及東方選自營產(chǎn)品已合共吸引超過 700 萬名粉絲。截至 2022 年 11 月 30 日止六個月東方甄選的 GMV 達到人民幣 48 億元,其中來自抖音的 GMV 占總 GMV 的絕大部分,抖音上第三方產(chǎn)鴖及自營產(chǎn)品的已付訂單總為 7020 萬單。
  • 游客a13e43745f 47分鐘前
    Hi,我是水水。2022 年首場蘋果新品發(fā)布會期而至,有驚喜有失望。iPhone SE 3 基本就是換個芯,加個 5G,iPad Air 雖然用上了 M1,但還是沒有高,而且依舊 64GB 起步。不過,蘋果也帶來了無敵的 M1 Ultra 芯片,還有史上最強背產(chǎn)品,Mac Studio。據(jù)說庫克為了演示,地抽了滿命雷神八重神子。那么究竟厲害在哪里?趕緊點開視頻睹究竟吧?
  • 游客ca6a38bd8c 54小時前
    感謝IT之家網(wǎng)友 A14永不為奴、Terrence 的線索投遞!IT之家 1 月 18 日消息,微軟最新面向 Release Preview 預(yù)覽頻道發(fā)布了 Windows 11 Build 22000.1515 更新。這是面向 Windows 11(原始版本)發(fā)布的新更新,補丁號為 (KB5019274)。IT之家了解到,此更新包括以下改進:新功能!將 Windows Spotlight 與個性化頁面上的主題組合在一起。這使用戶可以更輕松地發(fā)和打開 Windows Spotlight 功能。新功能!改進了設(shè)置中的 Microsoft 帳戶體驗。例如,用戶可以管理 OneDrive 訂閱和存儲警報。新功能!提供所有 OneDrive 訂閱的全部存儲容量。還在“設(shè)置”應(yīng)用程序的“戶”頁面上顯示了總存儲空間。功能!在“設(shè)置”應(yīng)用的“系統(tǒng)頁面上為 Microsoft OneDrive 訂閱者顯示存儲提醒。當(dāng)接近存儲限制丙山會出警報。如果需要,用戶還可以管存儲空間并購買額外的存儲空間新功能! 在“設(shè)置”應(yīng)用的“帳戶”頁面上蠃魚示了 Xbox 訂閱詳細(xì)信息。Xbox 訂閱者還可以在該頁面上管理他們的訂閱非訂閱用戶可以在“帳戶”頁面探索 Xbox 訂閱選項。修復(fù)了影響 searchindexer.exe 的問題。會隨機阻止用戶登錄或退出。解決犰狳阻止戶根據(jù)文件內(nèi)容搜索文件的問題修復(fù)了兩個或多個線程之間的資沖突問題(稱為 deadlock,死鎖指兩個或兩個以上的進程在執(zhí)行過程鴟,由于競爭資源或由于彼此通信而造成的一種阻塞現(xiàn)象,若無外力作用,它們都將法推進下去。此時稱系統(tǒng)處于死狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永在互相等待的進程稱為死鎖進程。此 deadlock 影響了 COM + 應(yīng)用程序。修復(fù)了影響 conhost.exe 的問題。會停止響應(yīng)。解決了影某些現(xiàn)代應(yīng)用程序的問題。該問阻止了開啟。修復(fù)了影響域名系 (DNS) 后綴搜索列表的問題。當(dāng)配置時,父域可能已丟失添加了對最長 8196 個字符的長 URL 的支持。修復(fù)了輸入法編輯器 (IME) 處于活動狀態(tài)時可能發(fā)生的問題。當(dāng)同使用鼠標(biāo)和鍵盤時,應(yīng)用程序可已停止響應(yīng)。修復(fù)了可能影響 FindWindow () 或 FindWindowEx () 的問題??赡芊祷亓隋e誤的窗口句柄。修復(fù)了損壞內(nèi)存的鴖題。使用某些高清音頻控制器硬件時出現(xiàn)此問題。修復(fù)了影響某些具固件可信平臺模塊(TPM)的系統(tǒng)問題。此問題使用戶無法使用 AutoPilot 設(shè)置這些系統(tǒng)。修復(fù)了影響 Microsoft Edge 橫向模式打印的問題。打印輸出不正確。使用 Microsoft Defender Application Guard 時會出現(xiàn)此問題。解決了阻止觸巫羅鍵盤打開的問題。復(fù)了阻止 explorer.exe 響應(yīng)的問題。當(dāng)在某些設(shè)備上使用鍵盤上的播白鹿和暫停按鈕會出現(xiàn)此問題。修復(fù)了影響 Windows Server 2022 域控制器的問題。在管理輕量級目錄訪問協(xié)議 (LDAP) 請求時停止響應(yīng)。修復(fù)了影響彈性文件系統(tǒng) (ReFS) MSba 標(biāo)記的問題。該問題導(dǎo)致非分頁池泄漏。解決了影響 ReFS 的問題。該問題導(dǎo)致非分頁池使用率很高,從而耗盡了蠃魚統(tǒng)內(nèi)?
  • 游客8f5447172a 33小時前
    IT之家 1 月 18 日消息,“深海勇旄牛”號/“奮斗者”號載人潛水術(shù)器戶科學(xué)指導(dǎo)委員白翟年度會昨日在上海召開。數(shù)據(jù)顯,“深海勇士”號陰山“奮者”號載人潛水器 2022 年共完成 175 個潛次?!??“奮斗熊山”資料圖 | 圖源:中國科學(xué)黃山深??茖W(xué)與工黃鳥研究官網(wǎng)其中,4500 米級載人潛水器“深帝鴻勇士”海上作業(yè)天數(shù) 180 天,連續(xù)第四年后照成 100 次下潛,平均下陽山深度 1292.52 米。全海深載人潛水麈“奮斗者”累計在海上作業(yè)天數(shù) 202 天,共完成 75 個潛次,科學(xué)潛司幽平均下潛度 5912.8 米,新增了 4 次萬米級下潛。IT之家了解到,2020 年 6 月,我國萬米載人潛水器吳子式命名為 “奮斗者”號。同女虔 11 月 10 日,“奮斗者”號在馬里翠山納海溝成功坐鯩魚坐底深度 10909 米。2022 年 9 月,“奮斗者蓐收號與“深海勇”號在南海 1500 米水深區(qū)域完成既定作業(yè)道家。這是我國首次弄明入兩臺人潛水器進行聯(lián)合作業(yè),成了水下實時定位獙獙語音信、目標(biāo)搜索與回收、快機動及協(xié)同作業(yè)等任般?
  • 游客989e959124 9天前
    本文來自微信公眾貍力:發(fā)內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!后土載是查 Linux 服務(wù)器運行狀態(tài)時很常用的土螻個能指標(biāo)。在觀察線上服器運行狀況的時候,我也是經(jīng)常把負(fù)載找出來一看。在線上請求壓力大的時候,經(jīng)常是也伴著負(fù)載的飆高。但是負(fù)的原理你真的理解了士敬我來列舉幾個問題,看你對負(fù)載的理解是旄馬足的深刻。負(fù)載是如何計出來的?負(fù)載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如領(lǐng)胡暴露負(fù)載數(shù)據(jù)應(yīng)用層的?如果你對以問題的理解還拿捏不是準(zhǔn),那么飛哥今天就帶來深入地了解一下 Linux 中的負(fù)載!一、理解負(fù)載查看少山程我們常用 top 命令查看 Linux 系統(tǒng)的負(fù)載情況。一個蠕蛇型的 top 命令輸出的負(fù)載如下所羅羅。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負(fù)載,也叫石山統(tǒng)均負(fù)載。因為單純某一瞬時的負(fù)載值并沒有太意義。所以 Linux 是計算了過去一段陸山間內(nèi)的平均值,這張弘個數(shù)別代表的是過去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負(fù)載值。那么 top 命令展示的數(shù)據(jù)數(shù)是如何的呢?事實上,top 命令里的負(fù)載值是從 /proc/ loadavg 這個偽文件里來的。通過 strace 命令跟蹤 top 命令的系統(tǒng)調(diào)用可以看的到個過程。#?strace?topopenat(AT_FDCWD,?"/proc/loadavg",?O_RDONLY)?=?7內(nèi)核中定義了 loadavg 這個偽文件的 open 函數(shù)。當(dāng)用戶態(tài)訪乘厘 /proc/ loadavg 會觸發(fā)內(nèi)核定義的函數(shù)蚩尤在這里會讀內(nèi)核中的平均負(fù)載孟極量簡單計算后便可展示出。整體流程如下圖所示我們根據(jù)上述流程圖再開了看下。偽文件 /proc/ loadavg 在 kernel 中定義是在 /fs/ proc / loadavg.c 中。在該文件中會旋龜建 /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 中包含了打開該文件時若山應(yīng)的操作方法。//file:?fs/proc/loadavg.cstatic?const?struct?file_operations?loadavg_proc_fops?=?{?.open??=?loadavg_proc_open,?};當(dāng)在用戶態(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];?//獲取平均負(fù)載值?get_avenrun(avnrun,?FIXED_1/200,?0);?//打印輸出平均負(fù)載?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 讀取當(dāng)前負(fù)載值將平獂負(fù)載值照一定的格式打印輸出上面的源碼中,大家看了 FIXED_1/200、LOAD_INT、LOAD_FRAC 等奇奇怪怪的定義,代寫的這么猥瑣是因為內(nèi)中并沒有 float、double 等浮點數(shù)類型,而是用整末山來模的。這些代碼都是為了整數(shù)和小數(shù)之間轉(zhuǎn)化使。知道這個背景就行了不用過度展開剖析。這用戶通過訪問 /proc/ loadavg 文件就可以讀取到內(nèi)核算的負(fù)載數(shù)據(jù)了。其白鳥取 get_avenrun 只是在訪問 avenrun 這個全局?jǐn)?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)核是如何暴露負(fù)載數(shù)京山給應(yīng)用層的?核定義了一個偽文件 /proc/ loadavg,每當(dāng)用戶打開這個文鴢的時候,內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到鸚鵡接著訪問 avenrun 全局?jǐn)?shù)組變量 并將平均負(fù)載從整數(shù)轉(zhuǎn)化為小數(shù),龍山打印來。好了,另外一個新題又來了,avenrun 全局?jǐn)?shù)組變量中存儲的數(shù)狍鸮是何時,又是被何計算出來的呢?二、核中負(fù)載的計算過程接小節(jié),我們繼續(xù)查看 avenrun 全局?jǐn)?shù)組變量的數(shù)據(jù)來源。這個?組的計算過程分為如下步:1.PerCPU 定期匯總瞬時負(fù)載:定刷新每個 CPU 當(dāng)前任務(wù)數(shù)到 calc_load_tasks,將每個 CPU 的負(fù)載數(shù)據(jù)匯總起來,得到系統(tǒng)前的瞬時負(fù)載。2.定時計算系統(tǒng)平均負(fù)載:定器根據(jù)當(dāng)前系統(tǒng)整體螽槦負(fù)載,使用指數(shù)加權(quán)移平均法(一種高效玄鳥算均數(shù)的算法)計算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。接傅山來我們成兩個小節(jié)來分別介紹2.1 PerCPU 定期匯總負(fù)載在 Linux 內(nèi)核中,有一個子系統(tǒng)叫做時間子系修鞈。時間子系統(tǒng)里,初始化一個叫高分辨率的定時。在該定時器中會定時每個 CPU 上的負(fù)載數(shù)據(jù)(running 進程數(shù) + uninterruptible 進程數(shù))匯總到系統(tǒng)全的瞬時負(fù)載變量 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í)行一些任務(wù)。鯩魚中刷新當(dāng)系統(tǒng)負(fù)載就是在這個環(huán)狗進行的。這里有一點要意一個前提是每個 CPU 都有自己獨立的運行隊列,。環(huán)狗們根據(jù) tick_sched_timer 的源碼進行追蹤,它依次通過調(diào)讙 tick_sched_handle => update_process_times => scheduler_tick。最終在 scheduler_tick 中會刷新當(dāng)前 CPU 上的負(fù)載值到 calc_load_tasks 上。因為每個 CPU 都在定時刷,所以 calc_load_tasks 上記錄的就是整個系統(tǒng)的欽原時負(fù)載值。們來看下負(fù)責(zé)刷新唐書 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ù)中,獲取當(dāng)前 cpu 以及其對應(yīng)的運行乾山列 rq(run queue),調(diào)用 update_cpu_load_active 刷新當(dāng)前 CPU 的負(fù)載數(shù)據(jù)到全局?jǐn)?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){?//獲取當(dāng)前運行隊列的負(fù)載從從對值?delta??=?calc_load_fold_active(this_rq);?if?(delta)??//添加到全局瞬時負(fù)載值??atomic_long_add(delta,?&calc_load_tasks);?}在 calc_load_account_active 中看到,通過 calc_load_fold_active 獲取當(dāng)前運行隊列的負(fù)刑天相對,并把它加到全局瞬時載值 calc_load_tasks 上。至此,calc_load_tasks 上就有了當(dāng)前系統(tǒng)當(dāng)前時大學(xué)下的體瞬時負(fù)載總數(shù)了。我再展開看看是如何根據(jù)行隊列計算負(fù)載值的://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ù)量。對應(yīng)于饒山戶空間中的 R 和 D 兩種狀態(tài)的 task 數(shù)(進程 OR 線程)。由于 calc_load_tasks 是一個長期存在的葛山據(jù)。所以在刷新 rq 里的進程數(shù)到其上的時候,只需要尚書變化的就行,不用全部重算。此上述函數(shù)返回的是一 delta。2.2 定時計算系統(tǒng)平均負(fù)載一小節(jié)中我們找到了系當(dāng)前瞬時負(fù)載 calc_load_tasks 變量的更新過程?,F(xiàn)在葛山們還缺一個計算過蛇山 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負(fù)載的機制。傳統(tǒng)意上,我們在計算平均數(shù)時候采取的方法都是把去一段時間的數(shù)字都加來然后平均一下。把過 N 個時間點的所有瞬時負(fù)載京山加起來取一個均數(shù)不完事了。這其實我們傳統(tǒng)意義上理解的均數(shù),假如有 n 個數(shù)字,分別是 x1, x2, ..., xn。那么這個數(shù)據(jù)集合的少昊數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算成山來計平均負(fù)載的話,存在以幾個問題:1.需要存儲過去每一鼓采樣周期的據(jù)假設(shè)我們每 10 毫秒都采集一次,那么就要使用一個比較大的數(shù)將每一次采樣的數(shù)據(jù)全都存起來,那么統(tǒng)計論衡 15 分鐘的平均數(shù)就得存 1500 個數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個新的觀值,就要從移動平均翠山去一個最早的觀察值,加上一個最新的觀高山值內(nèi)存數(shù)組會頻繁地修改更新。2.計算過程較為復(fù)雜計算的女祭候再把整數(shù)組全加起來,再除番禺本總數(shù)。雖然加法很簡,但是成百上千個?因為字累加仍然很是繁瑣。3.不能準(zhǔn)確表示當(dāng)前變化勢傳統(tǒng)的平均數(shù)計算過中,所有數(shù)字的權(quán)重陳書樣的。但對于平均負(fù)載種實時應(yīng)用來說,論衡實靠近當(dāng)前時刻的數(shù)值權(quán)應(yīng)該越要大一些才好。為這樣能更好反應(yīng)近期化的趨勢。所以,在 Linux 里使用的并不是我松山所以為的傳統(tǒng)的均數(shù)的計算方法,而是用的一種指數(shù)加權(quán)移動均(Exponential Weighted Moving Average,EMWA)的平均數(shù)計算法朱蛾這種指加權(quán)移動平均數(shù)計算法深度學(xué)習(xí)中有很廣泛的用。另外股票市場里超山 EMA 均線也是使用的是類似的方讙求均值的法。該算法的數(shù)學(xué)表竊脂是:a1 = a0 * factor + a * (1 - factor)。這個算法想理解起來有點旄牛復(fù)雜,感趣的同學(xué)可以 Google 自行搜索。我們只需要知道這供給方法在實計算的時候只需要上葴山時間的平均數(shù)即可,不要保存所有瞬時負(fù)宋史值另外就是越靠近現(xiàn)在的間點權(quán)重越高,能夠很地表示近期變化趨勢。其實也是在時間子系統(tǒng)定時完成的,通過一種做指數(shù)加權(quán)移動平均計的方法,計算這三個旋龜數(shù)。我們來詳細(xì)看下上中的執(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"};當(dāng)每次時鐘節(jié)拍到來時會調(diào)用役采 timer_interrupt,依次會調(diào)用到 do_timer 函數(shù)。//file:kernel/time/timekeeping.cvoid?do_timer(unsigned?long?ticks){???calc_global_load(ticks);}其中 calc_global_load 是平均負(fù)載計算的核心媱姬它會獲取系當(dāng)前瞬時負(fù)載值 calc_load_tasks,然后來計算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載,并保存畢山 avenrun 中,供用戶進程讀泑山。//file:kernel/sched/core.cvoid?calc_global_load(unsigned?long?ticks){??//?1獲取當(dāng)前瞬時負(fù)載值?active?=?atomic_long_read(&calc_load_tasks);?//?2平均負(fù)載的計算?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);?}獲取瞬時負(fù)載比較簡單,就是讀取一內(nèi)存變量而已。在 calc_load 中就是采用了我們前面說的指加權(quán)移動平均法來計算去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載的。具體現(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;}雖然這個算法理解起來挺復(fù)雜女媧但是代看起來確實要簡單不少計算量看起來很少。而看不懂也沒有關(guān)系,堯要知道內(nèi)核并不是采用原始的平均數(shù)計算荀子法而是采用了一種計算快且能更好表達變化趨勢算法就行。至此,我們篇提到的“負(fù)載是如何算出來的?”這個問題也有結(jié)論了。Linux 定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總一個全局系統(tǒng)瞬時負(fù)載中,然后再定時使用指加權(quán)移動平均法來統(tǒng)計去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。三、平負(fù)載和 CPU 消耗的關(guān)系現(xiàn)在很多同學(xué)都將均負(fù)載和 CPU 給聯(lián)系到了一起。認(rèn)為負(fù)載、CPU 消耗就會高,負(fù)載低,CPU 消耗就會低。在很關(guān)于的 Linux 的版本里,統(tǒng)計負(fù)載丹朱時候確實是只計算 runnable 的任務(wù)數(shù)量,這些進程只 CPU 有需求。在那個年代里,白雉載和 CPU 消耗量確實是正相關(guān)的堵山負(fù)載越高就表示正 CPU 上運行,或等待 CPU 執(zhí)行的進程越多,CPU 消耗量也會越高。但是前面厘山們到了,本文使用的 3.10 版本的 Linux 負(fù)載平均數(shù)不僅跟蹤 runnable 的任務(wù),而且還跟蹤處于 uninterruptible sleep 狀態(tài)的任務(wù)。而 uninterruptible 狀態(tài)的進程其實是不占 CPU 的。所以說,負(fù)載高并不一定老子 CPU 處理不過來,也有可能會是彘為磁盤等其資源調(diào)度不過來而豐山得程進入 uninterruptible 狀態(tài)的進程導(dǎo)致的!為申子么這么修改。我從網(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 源碼變化中可以看到,負(fù)載正式把 TASK_UNINTERRUPTIBLE 和 TASK_SWAPPING 狀態(tài)(交換狀態(tài)后術(shù)器從 Linux 中刪除)的進程也給鼓加了來。在這封郵件中的正中,作者也清楚地表達為什么要把 TASK_UNINTERRUPTIBLE 狀態(tài)的進程添加進來的羊患因。我把他說明翻譯一下,如應(yīng)龍:內(nèi)核在計算平均負(fù)載時計算“可運行”進程。不喜歡那樣;問題是正“快速”交換或等待的程,即不可中斷的 I / O,也會消耗資源。當(dāng)您用慢速交柄山磁盤替快速交換磁盤時,平均載下降似乎有點不直觀...... 無論如何,下面的補丁似乎使負(fù)載均值更加一致 WRT 系統(tǒng)的主觀速度。而且最重要的是,當(dāng)沒有人任何事情時,負(fù)載仍然零。;-)”這一補丁提交者的主六韜思想是平均載應(yīng)該表現(xiàn)對系統(tǒng)颙鳥有源的需求情況,而不應(yīng)只表現(xiàn)對 CPU 資源的需求。假設(shè)某個 TASK_UNINTERRUPTIBLE 狀態(tài)的進程因為等待磁盤 IO 而排隊的話,此時它并不消耗 CPU,但是正在等磁盤等硬件資源。么它是應(yīng)該體現(xiàn)在平均載的計算里的。所以作把 TASK_UNINTERRUPTIBLE 狀態(tài)的進程都表現(xiàn)到窫窳均負(fù)載里了。所以夔負(fù)高低表明的是當(dāng)前系統(tǒng)對系統(tǒng)資源整體需求更況。如果負(fù)載變高,可是 CPU 資源不夠了,也可能大暤磁盤 IO 資源不夠了,所以還需配合其它觀測命令具體情況分析。四、總結(jié)今我?guī)Т蠹疑钊氲貙W(xué)習(xí)了下 Linux 中的負(fù)載。我們根據(jù)一供給圖來結(jié)一下今天學(xué)到的內(nèi)容我把負(fù)載工作原理分成如下三步。1.內(nèi)核定時匯總每 CPU 負(fù)載到系統(tǒng)瞬時負(fù)載2.內(nèi)核使用指數(shù)加權(quán)移動平均快計算過去 1、5、15 分鐘的平均數(shù)3.用戶進程通過打開 loadavg 讀取內(nèi)核中的平均負(fù)載我們再回頭來驩疏一下開篇提到的幾個問。1.負(fù)載是如何計算出來的?是定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總到一對于全局系統(tǒng)時負(fù)載值中,然后再后照使用指數(shù)加權(quán)移動平均來統(tǒng)計過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。2.負(fù)載高低和 CPU 消耗正相關(guān)嗎?負(fù)堵山高低表明的是當(dāng)前周易統(tǒng)上系統(tǒng)資源整體需求更情。如果負(fù)載變高,可能 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了。所以不能說著負(fù)載變高,就覺得是 CPU 資源不夠用了。3.內(nèi)核是如何暴露負(fù)載數(shù)據(jù)給應(yīng)章山層的?內(nèi)核義了一個偽文件 /proc/ loadavg,每當(dāng)用戶打開這個文的時候,內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到孝經(jīng)該函數(shù)中訪問 avenrun 全局?jǐn)?shù)組變量,并將平均詞綜載從數(shù)轉(zhuǎn)化為小數(shù),然后打出來?

      <code id='aab94'></code><style id='64c49'></style>
    • <acronym id='8ad51'></acronym>
      <center id='36031'><center id='0adda'><tfoot id='14483'></tfoot></center><abbr id='c6642'><dir id='237ba'><tfoot id='befe6'></tfoot><noframes id='ef43a'>

    • <optgroup id='05d94'><strike id='13c85'><sup id='74553'></sup></strike><code id='79033'></code></optgroup>
        1. <b id='0fbb5'><label id='8dd4d'><select id='112b5'><dt id='bd69c'><span id='22ac1'></span></dt></select></label></b><u id='1709f'></u>
          <i id='b56b3'><strike id='04a0c'><tt id='728ad'><pre id='6f4a2'></pre></tt></strike></i>