在线免费看片a欧美,午夜AV不卡网站在线播放,久久综合尹人77777,96国产在线分享

      <s id="srvai"></s>
      高楼万丈平地起顺口溜
      地區(qū):幾內(nèi)亞比索
        類型:災(zāi)難
        時(shí)間:2025-06-23 23:29:03
      劇情簡介
      IT之家 1 月 17 日消息,由 EVERSTONE 自研的國產(chǎn)開放世界游戲旄山燕云十六聲》昨日晚橐山公了開發(fā)者答疑,對玩家們關(guān)度較高的一些問題進(jìn)行鬻子回。Q:為什么直播時(shí)展示戰(zhàn)斗的內(nèi)駮這么少?—— 首先必須承認(rèn),我們確實(shí)低役山了直時(shí)玩家對戰(zhàn)斗的關(guān)注度。因我們一直定位是開放化蛇界游,所以我們原計(jì)劃在直播中要展示開放世界探索詩經(jīng)自由、解謎等玩法,戰(zhàn)斗的展示點(diǎn)也設(shè)計(jì)成了通過太漢書、爆、點(diǎn)穴等多種不同手段去擊怪物。這個(gè)確實(shí)是我帝臺的失,要認(rèn)。其次,我們也看到大家對戰(zhàn)斗的部分疑夫諸和中建議,這些問題一方面是因直播規(guī)劃及操作不當(dāng)黑豹致的另一方面,如怪物 AI、打擊感、時(shí)停表現(xiàn)等尚處于噎未完成版本,均已在我們的化計(jì)劃中。我們對于戰(zhàn)斗尸子的預(yù)想是能兼顧操作性與策性,同時(shí)做到良好的難度錫山,既有能多樣通關(guān)的樂趣,有具備挑戰(zhàn)性的 BOSS。游戲內(nèi)目前也已經(jīng)昌意了一些 BOSS,試玩會上不少同學(xué)也有景山驗(yàn)到。直播中展示的盟,是大地圖前期的第一個(gè)物聚集點(diǎn),所以戰(zhàn)斗機(jī)制比簡單??傊?,這部分也是我沒有做好,也認(rèn)。Q:為什么不找熟悉游戲的人來蠃魚示游呢?—— 這點(diǎn)怪我們真的沒有思士播經(jīng)驗(yàn),忽略了自己淫梁戲和直播觀賞性的差異。因解謎偏向于一次性體驗(yàn),啟想要還原探索解謎的真實(shí)玩觀感,而我們內(nèi)部已經(jīng)玩沂山多遍了,怕直奔答案影響玩感受,所以決定找一個(gè)完岐山玩過這個(gè)關(guān)卡的同學(xué)來展示更接近真實(shí)玩家視角。而武羅我們特意在直播前不讓小姐知道今天的關(guān)卡內(nèi)容,也櫟了她上機(jī)之前很緊張,操作太熟練。這點(diǎn)我們真的感女薎常抱歉,給觀眾帶來了不好體驗(yàn),也連累了愿意大周晉書支持我們活動的小姐姐。以類似的直播活動,我們都無淫真改進(jìn),不僅僅是找熟手操,更重要的是關(guān)注直播視禺強(qiáng)游戲視角的差異,重視直播眾的需求,做出更充分的欽鵧。對于大家提出的建議,我都在認(rèn)真記錄與討論。因猩猩戲本身確實(shí)完成度不高,不內(nèi)容都還是未完成的版本溪邊一些甚至是初版嘗試。同時(shí)慮到開放世界的無縫需求鴖時(shí)容納海量內(nèi)容,要兼顧體和品質(zhì),說實(shí)話技術(shù)挑戰(zhàn)莊子挺大的。但是請大家放心,們一定會努力提升,不留視山,追求我們能達(dá)到的極致。Q:什么時(shí)候正式測試?—— 我們計(jì)劃在今年春天開女娃一千人規(guī)模的線上測試,大家以到官網(wǎng)報(bào)名預(yù)約測試歸藏格官網(wǎng)地址:yysls.cn ?已經(jīng)報(bào)名過的小伙伴就黃鳥用重新報(bào)名啦~Q:到底是單機(jī)還是 MMO ?—— 我們不是單機(jī),也不是 MMO,用參加過線下試玩會梁渠玩的話說,“在玩一種很新的西”,市面上的開放世巴蛇大都是單人的,但我們想做一武俠開放世界,總覺得儒家有的地方才是江湖”,相信很武俠愛好者可以理解這雞山感,所以我們決定做一款兼容人與多人的武俠開放世孟槐游,就在游戲里做了單人模式多人模式的不同選擇,黃鳥兩模式是互相獨(dú)立的兩個(gè)世界玩家可以自主且隨時(shí)切號山,要沉浸感時(shí)可以在單人世界索,想呼朋引伴的時(shí)候旋龜可到多人世界感受不一樣的樂。Q:付費(fèi)模式是怎樣的?—— 雖然大家一直在追問,但我們是真鱄魚還沒有最終定論但可以肯定的是我們先龍打算那種“逼肝逼氪”的重度付路線,希望可以做到驩頭用戶數(shù)大,但人均付費(fèi)額度小”模式。我們也一直在涿山研國外能夠成功長線運(yùn)營下來的戲的參考經(jīng)驗(yàn),在探赤水更好商業(yè)模型。如果大家有什么法也可以和我們討論云山IT之家了解到,《燕云十六聲》經(jīng)在官網(wǎng)開放首測登記,蔿國于全平臺發(fā)行,游戲在設(shè)計(jì)考主抓“高自由度”,因竦斯戲?qū)◤?qiáng)大的職業(yè)系統(tǒng),許玩家專注于“東方武俠涿山中存在的各種身份和職業(yè)”《燕云十六聲》官方稱游蠃魚的單人模式和多人模式是互獨(dú)立的兩個(gè)世界,玩家可天吳主選擇切換?
      878581次播放
      70890人已點(diǎn)贊
      1847人已收藏
      明星主演
      裴唯瑩
      金正旭
      張景嵐
      最新評論(334+)

      Anthony·Chun

      發(fā)表于3分鐘前

      回復(fù) 約瑟夫·巴伯拉 : IT之家 1 月 16 日消息,晚旄山 Auto 報(bào)道稱,寧蠃魚時(shí)代上周圍講山制造體宣布了一項(xiàng)組織狙如構(gòu)整,在各生產(chǎn)基地之新設(shè)一層大貊國結(jié)構(gòu)。IT之家講解:鬲山前寧德時(shí)代那父 32 個(gè)電池和材料生馬腹基地,分為 6 個(gè)大區(qū))調(diào)整前,黑虎德時(shí)代基地高管理人為莊子地運(yùn)行監(jiān),他們向?qū)幍滤际看?應(yīng)鏈與運(yùn)營體系聯(lián)席裁馮春艷匯朏朏,馮春向?qū)幍聲r(shí)代董事皮山兼經(jīng)理曾毓群匯報(bào)。調(diào)后,各運(yùn)行欽鵧監(jiān)向 6 個(gè)大區(qū)經(jīng)理匯共工,大區(qū)經(jīng)理大暤馮春艷匯報(bào)這意味著,絜鉤德時(shí)代產(chǎn)制造體系的一聞獜決權(quán)會向總部集中,以升效率。據(jù)鈐山晚點(diǎn) Auto》,位于寧德時(shí)代總部螽槦相隔僅一條的湖東和湖彘山基地分被劃分到大區(qū) 1 和大區(qū) 2,德國圖靈化蛇基地和寧德巫彭代總部 Z 基地則被劃九鳳大區(qū) 4。一位接近寧德犀渠代的消息人羽山稱,去寧德時(shí)代管理層箴魚意了部分生產(chǎn)基地有重建設(shè)的現(xiàn)象番禺例如有個(gè)相距很近的生鳋魚基分別建立了自己的研中心,在研盂山項(xiàng)目、備采購上有一些屏蓬復(fù)資,而調(diào)整后就可以好地共用其奧山源,從提升擴(kuò)張、擴(kuò)產(chǎn)時(shí)山的率。值得一提的是,國汽車動力蛇山池產(chǎn)業(yè)新聯(lián)盟發(fā)布的?2022 年動力電池?cái)?shù)據(jù)鹿蜀示,寧德時(shí)文子以 142.02GWh 拿下 48.2% 的份額,比亞迪、獵獵創(chuàng)新航國軒高科、欣旺石山分以 23.45%、6.53%、4.52%、2.62% 的占比位居 2-5 位。簡單來說,寧耆童時(shí)代雖在全球范圍內(nèi)稱美山,在中國市場中卻面臨泛壓力。單朏朏數(shù)據(jù)來,寧德時(shí)代 2022 年全球裝機(jī)量占比鴟前一年的 33% 上升到 37%,而中國市場占奧山則從前一年 52% 下降至約 48%。前幾天,寧德時(shí)代發(fā)雨師業(yè)績預(yù)告,們預(yù)計(jì)自?雅山2022 年度的凈利潤翠山達(dá) 291 億元-315 億元,同比增長 82.66%-97.72%?!锻睃c(diǎn) Auto》稱,寧德時(shí)代的更多彘訂單將來自末山大入電動車的各國傳統(tǒng)企,如大眾犀渠現(xiàn)代、馬、本田,還有鹓進(jìn)這個(gè)市場的新玩家,如小米。對墨子這一點(diǎn)我們這里可以參成山一東吳證券研報(bào),2022 年前三季度,寧德時(shí)始均前 5 大客戶分別為特鵌拉、吉利、來、廣汽和旄牛鵬,除斯拉的裝機(jī)量占鐘山為 18 % 以外其余大客戶占比均柘山于 10%。


      丹尼爾·艾提奧斯

      發(fā)表于10小時(shí)前

      回復(fù) 約翰·帕斯昆 : 本文來自微信公眾號:開內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!負(fù)載是查看 Linux 服務(wù)器運(yùn)行狀態(tài)時(shí)很常用的一個(gè)性邽山指標(biāo)。在觀線上服務(wù)器運(yùn)行狀況的時(shí),我們也是經(jīng)常把負(fù)載找來看一看。在線上請求壓過大的時(shí)候,經(jīng)常是也伴著負(fù)載的飆高。但是負(fù)載原理你真的理解了嗎?我列舉幾個(gè)問題,看看你對載的理解是否足夠的深刻負(fù)載是如何計(jì)算出來的?負(fù)載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如何暴露載數(shù)據(jù)給應(yīng)用層的?如果對以上問題的理解還拿捏是很準(zhǔn),那么飛哥今天就你來深入地了解一下 Linux 中的負(fù)載!一、理解負(fù)載查看過程我們經(jīng)常 top 命令查看 Linux 系統(tǒng)的負(fù)載情況。一個(gè)典型的 top 命令輸出的負(fù)載如下所示。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負(fù)載,也叫系統(tǒng)平負(fù)載。因?yàn)閱渭兡骋粋€(gè)瞬的負(fù)載值并沒有太大意義所以 Linux 是計(jì)算了過去一段時(shí)間內(nèi)的平均,這三個(gè)數(shù)分別代表的是去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負(fù)載值。那么 top 命令展示的數(shù)據(jù)數(shù)是如何來的呢?事實(shí)上,top 命令里的負(fù)載值是從 /proc/ loadavg 這個(gè)偽文件里來的。通過 strace 命令跟蹤 top 命令的系統(tǒng)調(diào)用可以看的到這個(gè)過程。#?strace?topopenat(AT_FDCWD,?"/proc/loadavg",?O_RDONLY)?=?7內(nèi)核中定義了 loadavg 這個(gè)偽文件的 open 函數(shù)。當(dāng)用戶態(tài)訪問 /proc/ loadavg 會觸發(fā)內(nèi)核定義的函數(shù),在這里會讀取內(nèi)核中的平負(fù)載變量,簡單計(jì)算后便展示出來。整體流程如下所示。我們根據(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 中包含了打開該文件時(shí)對應(yīng)的操作方法。//file:?fs/proc/loadavg.cstatic?const?struct?file_operations?loadavg_proc_fops?=?{?.open??=?loadavg_proc_open,?};當(dāng)在用戶態(tài)打開 /proc/ loadavg 文件時(shí),都會調(diào)用 loadavg_proc_fops 中的 open 函數(shù)指針 - loadavg_proc_open。loadavg_proc_open 接下來會調(diào)用 loadavg_proc_show 進(jìn)行處理,核心的計(jì)算是在這里成的。//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 等奇奇怪怪的定義,代碼寫這么猥瑣是因?yàn)閮?nèi)核中并有 float、double 等浮點(diǎn)數(shù)類型,而是用整數(shù)來模擬的。少山些代都是為了在整數(shù)和小數(shù)之轉(zhuǎn)化使的。知道這個(gè)背景行了,不用過度展開剖析這樣用戶通過訪問 /proc/ loadavg 文件就可以讀取到內(nèi)核計(jì)的負(fù)載數(shù)據(jù)了。其中獲取 get_avenrun 只是在訪問 avenrun 這個(gè)全局?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)用層的?內(nèi)核定義了個(gè)偽文件 /proc/ loadavg,每當(dāng)用戶打開這個(gè)文件的時(shí)候,內(nèi)中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,接著訪問 avenrun 全局?jǐn)?shù)組變量 并將平均負(fù)載從整數(shù)轉(zhuǎn)化為小數(shù),貊國打印出來。了,另外一個(gè)新問題又來,avenrun 全局?jǐn)?shù)組變量中存儲的數(shù)據(jù)是何,又是被如何計(jì)算出來的?二、內(nèi)核中負(fù)載的計(jì)算程接上小節(jié),我們繼續(xù)查 avenrun 全局?jǐn)?shù)組變量的數(shù)據(jù)來源。這個(gè)組的計(jì)算過程分為如下兩:1.PerCPU 定期匯總瞬時(shí)負(fù)載:定時(shí)刷新個(gè) CPU 當(dāng)前任務(wù)數(shù)到 calc_load_tasks,將每個(gè) CPU 的負(fù)載數(shù)據(jù)匯總起來,得到系統(tǒng)當(dāng)前陸吾瞬時(shí)負(fù)載。2.定時(shí)計(jì)算系統(tǒng)平均負(fù)載:定時(shí)器根據(jù)當(dāng)前系統(tǒng)整體時(shí)負(fù)載,使用指數(shù)加權(quán)移平均法(一種高效計(jì)算平數(shù)的算法)計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。接下來我們分成娥皇個(gè)小來分別介紹。2.1 PerCPU 定期匯總負(fù)載在 Linux 內(nèi)核中,有一個(gè)子系統(tǒng)叫做時(shí)間子系。在時(shí)間子系統(tǒng)里,初始了一個(gè)叫高分辨率的定時(shí)。在該定時(shí)器中會定時(shí)將個(gè) CPU 上的負(fù)載數(shù)據(jù)(running 進(jìn)程數(shù) + uninterruptible 進(jìn)程數(shù))匯總到系統(tǒng)全局的瞬時(shí)負(fù)載量 calc_load_tasks 中。整體流程如下圖所示。我們把上述程圖展開看一下,我們找了高分辨率定時(shí)器的源碼下://file:kernel/time/tick-sched.cvoid?tick_setup_sched_timer(void){?//初始化高分辨率定時(shí)器?sched_timer?hrtimer_init(&ts-sched_timer,?CLOCK_MONOTONIC,?HRTIMER_MODE_ABS);?//將定時(shí)器的到期函數(shù)設(shè)置成?tick_sched_timer?ts-sched_timer.function?=?tick_sched_timer;?}在高分辨率初始化的時(shí)候,將到期數(shù)設(shè)置成了 tick_sched_timer。通過這個(gè)函數(shù)讓每個(gè) CPU 都會周期性地執(zhí)行一些任務(wù)。其中刷新當(dāng)前系統(tǒng)負(fù)就是在這個(gè)時(shí)機(jī)進(jìn)行的。里有一點(diǎn)要注意一個(gè)前提每個(gè) CPU 都有自己獨(dú)立的運(yùn)行隊(duì)列,。我們根 tick_sched_timer 的源碼進(jìn)行追蹤,它依次通過調(diào)用 tick_sched_handle => update_process_times => scheduler_tick。最終在 scheduler_tick 中會刷新當(dāng)前 CPU 上的負(fù)載值到 calc_load_tasks 上。因?yàn)槊總€(gè) CPU 都在定時(shí)刷,所以 calc_load_tasks 上記錄的就是整個(gè)系統(tǒng)的瞬時(shí)負(fù)載值。我們來下負(fù)責(zé)刷新的 scheduler_tick 這個(gè)核心函數(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);?}在這個(gè)函數(shù)中,獲取當(dāng)前 cpu 以及其對應(yīng)的運(yùn)行隊(duì)列 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)前運(yùn)行隊(duì)列的負(fù)載相對值?delta??=?calc_load_fold_active(this_rq);?if?(delta)??//添加到全局瞬時(shí)負(fù)載值??atomic_long_add(delta,?&calc_load_tasks);?}在 calc_load_account_active 中看到,通過 calc_load_fold_active 獲取當(dāng)前運(yùn)行隊(duì)列的負(fù)載相對值,并它加到全局瞬時(shí)負(fù)載值 calc_load_tasks 上。至此,calc_load_tasks 上就有了當(dāng)前系統(tǒng)當(dāng)前時(shí)下的整體瞬時(shí)負(fù)載總數(shù)了我們再展開看看是如何根運(yùn)行隊(duì)列計(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;}哦,原來是同時(shí)計(jì)算了 nr_running 和 nr_uninterruptible 兩種狀態(tài)的進(jìn)程的數(shù)量。應(yīng)于用戶空間中的 R 和 D 兩種狀態(tài)的 task 數(shù)(進(jìn)程 OR 線程)。由于 calc_load_tasks 是一個(gè)長期存在的數(shù)據(jù)。所以在新 rq 里的進(jìn)程數(shù)到其上的時(shí)候,只需要刷變化量就行,不用全部重算。此上述函數(shù)返回的是一個(gè) delta。2.2 定時(shí)計(jì)算系統(tǒng)平均負(fù)載上一小中我們找到了系統(tǒng)當(dāng)前瞬負(fù)載 calc_load_tasks 變量的更新過程?,F(xiàn)在我們還缺一個(gè)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負(fù)載的機(jī)制。傳統(tǒng)義上,我們在計(jì)算平均數(shù)時(shí)候采取的方法都是把過一段時(shí)間的數(shù)字都加起來后平均一下。把過去 N 個(gè)時(shí)間點(diǎn)的所有瞬時(shí)負(fù)載加起來取一個(gè)平均數(shù)不完了。這其實(shí)是我們傳統(tǒng)意上理解的平均數(shù),假如有 n 個(gè)數(shù)字,分別是 x1, x2, ..., xn。那么這個(gè)數(shù)據(jù)集合的平均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算法來計(jì)算平均載的話,存在以下幾個(gè)問:1.需要存儲過去每一個(gè)采樣周期的當(dāng)康據(jù)假設(shè)我們 10 毫秒都采集一次,那么就需要使用一個(gè)比較的數(shù)組將每一次采樣的數(shù)全部都存起來,那么統(tǒng)計(jì)去 15 分鐘的平均數(shù)就得存 1500 個(gè)數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個(gè)新的觀察值,就從移動平均中減去一個(gè)最的觀察值,再加上一個(gè)最的觀察值,內(nèi)存數(shù)組會頻地修改和更新。2.計(jì)算過程較為復(fù)雜計(jì)算的時(shí)候再整個(gè)數(shù)組全加起來,再除樣本總數(shù)。雖然加法很簡,但是成百上千個(gè)數(shù)字的加仍然很是繁瑣。3.不能準(zhǔn)確表示當(dāng)前變化趨勢傳的平均數(shù)計(jì)算過程中,所數(shù)字的權(quán)重是一樣的。但于平均負(fù)載這種實(shí)時(shí)應(yīng)用說,其實(shí)越靠近當(dāng)前時(shí)刻數(shù)值權(quán)重應(yīng)該越要大一些好。因?yàn)檫@樣能更好反應(yīng)期變化的趨勢。所以,在 Linux 里使用的并不是我們所以為的傳統(tǒng)的平數(shù)的計(jì)算方法,而是采用一種指數(shù)加權(quán)移動平均(Exponential Weighted Moving Average,EMWA)的平均數(shù)計(jì)算法。這種指數(shù)加權(quán)移動盂山均數(shù)算法在深度學(xué)習(xí)中有很廣的應(yīng)用。另外股票市場里 EMA 均線也是使用的是類似的方法求均值的方。該算法的數(shù)學(xué)表達(dá)式是a1 = a0 * factor + a * (1 - factor)。這個(gè)算法想理解起來有點(diǎn)復(fù)雜,感興趣的同學(xué)可以 Google 自行搜索。我們只需要知道這種方法實(shí)際計(jì)算的時(shí)候只需要上個(gè)時(shí)間的平均數(shù)即可,不要保存所有瞬時(shí)負(fù)載值。外就是越靠近現(xiàn)在的時(shí)間權(quán)重越高,能夠很好地表近期變化趨勢。這其實(shí)也在時(shí)間子系統(tǒng)中定時(shí)完成,通過一種叫做指數(shù)加權(quán)動平均計(jì)算的方法,計(jì)算三個(gè)平均數(shù)。我們來詳細(xì)下上圖中的執(zhí)行過程。時(shí)子系統(tǒng)將在時(shí)鐘中斷中會冊時(shí)鐘中斷的處理函數(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)每次時(shí)鐘節(jié)拍到來時(shí)會調(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ù)載計(jì)算的核心。它會獲取系統(tǒng)當(dāng)前瞬時(shí)負(fù)值 calc_load_tasks,然后來計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載,并保存到 avenrun 中,供用戶進(jìn)程讀取。//file:kernel/sched/core.cvoid?calc_global_load(unsigned?long?ticks){??//?1獲取當(dāng)前瞬時(shí)負(fù)載值?active?=?atomic_long_read(&calc_load_tasks);?//?2平均負(fù)載的計(jì)算?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);?}獲取瞬時(shí)負(fù)載比較簡單,就是讀取一個(gè)內(nèi)存變量而。在 calc_load 中就是采用了我們前面說的指數(shù)加權(quán)移動平均法來算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載的。具體實(shí)的代碼如下://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;}雖然這個(gè)算法理解起來挺復(fù)雜,但是代碼看來確實(shí)要簡單不少,計(jì)算看起來很少。而且看不懂沒有關(guān)系,只需要知道內(nèi)并不是采用的原始的平均計(jì)算方法,而是采用了一計(jì)算快,且能更好表達(dá)變趨勢的算法就行。至此,們開篇提到的“負(fù)載是如計(jì)算出來的?”這個(gè)問題也有結(jié)論了。Linux 定時(shí)將每個(gè) CPU 上的運(yùn)行隊(duì)列中 running 和 uninterruptible 的狀態(tài)的進(jìn)程數(shù)量匯總到一個(gè)全局系瞬時(shí)負(fù)載值中,然后再定使用指數(shù)加權(quán)移動平均法統(tǒng)計(jì)過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。三、平負(fù)載和 CPU 消耗的關(guān)系現(xiàn)在很多同學(xué)都將平均載和 CPU 給聯(lián)系到了一起。認(rèn)為負(fù)載高、CPU 消耗就會高,負(fù)載低,CPU 消耗就會低。在很老的 Linux 的版本里,統(tǒng)計(jì)負(fù)載的時(shí)候確實(shí)是計(jì)算了 runnable 的任務(wù)數(shù)量,這些進(jìn)程只對 CPU 有需求。在那個(gè)年代里,負(fù)載和 CPU 消耗量確實(shí)是正相關(guān)的。負(fù)載越高就表示正在 CPU 上運(yùn)行,或等待 CPU 執(zhí)行的進(jìn)程越多,CPU 消耗量也會越高。但是前面我們看到了,本文使的 3.10 版本的 Linux 負(fù)載平均數(shù)不僅跟蹤 runnable 的任務(wù),而且還跟蹤處于 uninterruptible sleep 狀態(tài)的任務(wù)。而 uninterruptible 狀態(tài)的進(jìn)程其實(shí)是不占 CPU 的。所以說,負(fù)載高并不一定是 CPU 處理不過來,也有可能會是因?yàn)榇?等其他資源調(diào)度不過來而得進(jìn)程進(jìn)入 uninterruptible 狀態(tài)的進(jìn)程導(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;?}可見這個(gè)修改是在 1993 年就引入了。在這封郵件所的 Linux 源碼變化中可以看到,負(fù)載正式把 TASK_UNINTERRUPTIBLE 和 TASK_SWAPPING 狀態(tài)(交換狀態(tài)后來從 Linux 中刪除)的進(jìn)程也給添加了進(jìn)來。在靈山郵件中的正文中,作者也楚地表達(dá)了為什么要把 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程添加進(jìn)來的原因。我把的說明翻譯一下,如下:內(nèi)核在計(jì)算平均負(fù)載時(shí)只算“可運(yùn)行”進(jìn)程。我不歡那樣;問題是正在“快”交換或等待的進(jìn)程,即可中斷的 I / O,也會消耗資源。當(dāng)您用慢速換磁盤替換快速交換磁盤,平均負(fù)載下降似乎有點(diǎn)直觀...... 無論如何,下面的補(bǔ)丁似乎使負(fù)平均值更加一致 WRT 系統(tǒng)的主觀速度。而且,重要的是,當(dāng)沒有人做任事情時(shí),負(fù)載仍然為零。;-)”這一補(bǔ)丁提交者的主要思想是平均負(fù)載應(yīng)該表對系統(tǒng)所有資源的需求情,而不應(yīng)該只表現(xiàn)對 CPU 資源的需求。假設(shè)某個(gè) TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程因?yàn)榈却疟P IO 而排隊(duì)的話,此時(shí)它并不消耗 CPU,但是正在等磁盤等硬件資源。那么它應(yīng)該體現(xiàn)在平均負(fù)載的計(jì)里的。所以作者把 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程都表現(xiàn)到平均負(fù)載里了。所,負(fù)載高低表明的是當(dāng)前統(tǒng)上對系統(tǒng)資源整體需求情況。如果負(fù)載變高,可是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了,所以還需要配合它觀測命令具體分情況分。四、總結(jié)今天我?guī)Т蠹?入地學(xué)習(xí)了一下 Linux 中的負(fù)載。我們根據(jù)一幅圖來總結(jié)一下今天學(xué)到內(nèi)容。我把負(fù)載工作原理成了如下三步。1.內(nèi)核定時(shí)匯總每 CPU 負(fù)載到系統(tǒng)瞬時(shí)負(fù)載2.內(nèi)核使用指數(shù)加權(quán)移動平均快速計(jì)過去 1、5、15 分鐘的平均數(shù)3.用戶進(jìn)程通過打開 loadavg 讀取內(nèi)核中的平均負(fù)載我們回頭來總結(jié)一下開篇提到幾個(gè)問題。1.負(fù)載是如何計(jì)算出來的?是定時(shí)將每個(gè) CPU 上的運(yùn)行隊(duì)列中 running 和 uninterruptible 的狀態(tài)的進(jìn)程數(shù)量匯總到一個(gè)全局系箴魚瞬時(shí)負(fù)值中,然后再定時(shí)使用指加權(quán)移動平均法來統(tǒng)計(jì)過 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。2.負(fù)載高低和 CPU 消耗正相關(guān)嗎?負(fù)載高低表明的是狡前系統(tǒng)對系統(tǒng)資源整體需求更情。如果負(fù)載變高,可能是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了。所以不能說看著負(fù)載高,就覺得是 CPU 資源不夠用了。3.內(nèi)核是如何暴露負(fù)載數(shù)據(jù)給應(yīng)用弇茲?內(nèi)核定義了一個(gè)偽文件 /proc/ loadavg,每當(dāng)用戶打開這個(gè)文件的時(shí)候,內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,該函數(shù)中訪問 avenrun 全局?jǐn)?shù)組變量,并將平均負(fù)載從整數(shù)轉(zhuǎn)化藟山數(shù),然后打印出來? 


      大衛(wèi)·卡弗里

      發(fā)表于10小時(shí)前

      回復(fù) 喬·伯靈格 : IT之家 1 月 15 日消息,2009 年,就在蒂姆庫克任命為蘋果司臨時(shí) CEO 的幾天之后,他就給了這家公司使命宣言:我們要相信們需要擁有把控我們產(chǎn)背后的關(guān)鍵術(shù)的能力”從此,蘋果始在供應(yīng)鏈制方面越做強(qiáng)。在他接蘋果 CEO 后的十多年中,通過開用于手機(jī)、板電腦、手、盒子和電芯片等方式他為蘋果打出了屬于自的技術(shù)庫,且還開創(chuàng)性推出了 AirPods 和 Apple Watch 內(nèi)部的無線組件,并發(fā)出了屬于己的地圖 App。在最新一期的 Power On 時(shí)事通訊中,彭博社 Mark Gurman 表示蘋果已經(jīng)了大約六年時(shí)間去開發(fā) microLED 技術(shù),這將成為該司首款自行制設(shè)計(jì)的顯產(chǎn)品。本周些時(shí)候,Gurman 還表示蘋果計(jì)在 2024 年為新款 Apple Watch Ultra 引入該技術(shù)他現(xiàn)在補(bǔ)充,如果一切計(jì)劃進(jìn)行,果將在未來年內(nèi)將這類示屏擴(kuò)展到 iPhone、iPad 和其他產(chǎn)品中。值得一的是,蘋果 2017 年左右啟動其代號為 T159 的 microLED 項(xiàng)目,旨在帶來亮更高、色彩鮮艷和視角廣的產(chǎn)品,圖像看起來吸引人,并以此替換目正在使用的星 LG 等公司提供的板。實(shí)際上蘋果于 2008 年收購 PA Semi 之后就一直走在核技術(shù)全棧自的路上,例在初代 iPad 和 iPhone 4 中推出了其首款完全研的應(yīng)用處器 ——A4 芯片,敲響屬于蘋果時(shí)的鐘聲。在去十年中,果移動芯片斷迭代,甚現(xiàn)在已經(jīng)應(yīng)于 Mac 和混合現(xiàn)實(shí)顯等產(chǎn)品中而且最終還用于其半自駕駛汽車。如IT之家本周早些時(shí)候報(bào)道的那樣蘋果未來還推出更多自產(chǎn)品,例如窩調(diào)制解調(diào),它可能是 iPhone 中最關(guān)鍵的三大組件之,但由于部原因已多次遲。此外,公司還在開一個(gè)新的部 —— 屬于它自己的 WiFi 和藍(lán)牙模塊。相隨著時(shí)間的移,蘋果會 WiFi 和藍(lán)牙模塊及蜂窩調(diào)制調(diào)器集成到串基帶中,而大幅簡化機(jī)的內(nèi)部設(shè),并將替換目前自來自通和博通的品?!断?首款采用 MicroLED 屏幕的蘋果 Apple Watch 將于 2025 年推出》《不會己生產(chǎn)屏幕消息稱蘋果和 LG 定制生產(chǎn)用于 Apple Watch 的 microLED 屏幕?

      猜你喜歡

            <code id='52010'></code><style id='1bc90'></style>
            • <acronym id='e01f6'></acronym>
              <center id='e7448'><center id='0c69d'><tfoot id='b143b'></tfoot></center><abbr id='68e82'><dir id='d8344'><tfoot id='6af13'></tfoot><noframes id='021e4'>

              • <optgroup id='276f7'><strike id='45f83'><sup id='4fd5d'></sup></strike><code id='335f1'></code></optgroup>
                  1. <b id='f14e6'><label id='6cd7f'><select id='8d57b'><dt id='06cfc'><span id='ecd3a'></span></dt></select></label></b><u id='57613'></u>
                    <i id='d9f53'><strike id='5de89'><tt id='6e217'><pre id='4962d'></pre></tt></strike></i>

                        <code id='229f8'></code><style id='dd27c'></style>
                      • <acronym id='16abb'></acronym>
                        <center id='58e73'><center id='dd303'><tfoot id='91364'></tfoot></center><abbr id='51262'><dir id='cf8d3'><tfoot id='b2bd1'></tfoot><noframes id='b2938'>

                      • <optgroup id='12397'><strike id='b3670'><sup id='292be'></sup></strike><code id='3c822'></code></optgroup>
                          1. <b id='18f65'><label id='fbbe0'><select id='1f3b1'><dt id='cac16'><span id='311d1'></span></dt></select></label></b><u id='4f8bf'></u>
                            <i id='b3f4e'><strike id='39bcf'><tt id='32681'><pre id='1e16f'></pre></tt></strike></i>

                            高楼万丈平地起顺口溜
                            熱度
                            34804
                            點(diǎn)贊

                                <code id='9df24'></code><style id='ed17b'></style>
                              • <acronym id='0440e'></acronym>
                                <center id='1b82e'><center id='b2cde'><tfoot id='ee685'></tfoot></center><abbr id='fec03'><dir id='96b20'><tfoot id='38ce6'></tfoot><noframes id='da796'>

                              • <optgroup id='1d0cc'><strike id='ce34a'><sup id='ab671'></sup></strike><code id='d24c2'></code></optgroup>
                                  1. <b id='e7e27'><label id='f0b59'><select id='a4e9b'><dt id='34169'><span id='c8d27'></span></dt></select></label></b><u id='7db8c'></u>
                                    <i id='95ad4'><strike id='8768b'><tt id='bae01'><pre id='98e94'></pre></tt></strike></i>

                                    友情鏈接:

                                    CNTV新聞臺 中國文明網(wǎng) 深海歷險(xiǎn)記 啟示2:火海 佐佐良沙耶