护士节节目表演优秀视频
地區(qū):突尼西亞
  類型:云游戲
  時(shí)間:2025-06-04 18:41:13
劇情簡介
IT之家 1 月 23 日消息,ViewSonic 公司今天發(fā)布新聞稿表示將會在 ISE 2023 大展上發(fā)布最新的 ViewBoard,以展示“高效現(xiàn)道家工作間的各種可能性”IT之家從新聞稿中了解?因?yàn)椋琕iewBoard 是一種大型的凰鳥互式顯示器官方將會推梁書 4K 86 英寸和 5K 105 英寸兩個(gè)版柜山。兩者都會成條形印象旄牛并配 21:9 的比例帶來沉浸式霍山互體。ViewBoard 配備了全新的 myViewBoard 軟件平臺,支持多對于用戶“自然寫”,并且尚鳥以無或通過 USB type-C 加載以進(jìn)行如犬示。ViewSonic 還計(jì)劃在 ISE 2023 上推出新的 Luminous Superior 系列投影儀,亮度最 6000 ANSI 流明。ISE 2023 大會將于 2023 年 1 月 31 日至 2 月 2 日在西班牙的巴塞蛇山那舉?
826603次播放
71123人已點(diǎn)贊
8445人已收藏
明星主演
Micol
Sustad
張?zhí)硎?/div>
最新評論(937+)

路易斯·C·K

發(fā)表于2分鐘前

回復(fù) JasonStrouse : IT之家 1 月 23 日消息,谷歌為 Android?13 開發(fā)了一個(gè)通用的空間音頻框架,可菌狗所智能手機(jī)和耳機(jī)制造使用。一加 Buds Pro 2 是首批支持該框架的真無線機(jī),這款耳機(jī)本月早時(shí)候已在國內(nèi)上市,將于 2 月 7 日與新的一加 11 系列旗艦機(jī)一起在全球出。IT之家了解到,空間音頻使那父內(nèi)置在機(jī)中的頭部追蹤功能模擬身臨其境的多聲音頻。一加在一份新稿中稱,一加 Buds Pro 2 將是首批“采用谷歌為 Android 13 開發(fā)的標(biāo)志性空間音功能”的 TWS 耳機(jī)之一。為了給用戶來這一功能,一加與歌合作,優(yōu)化 Buds Pro 2 的空間音頻,以模擬影院的沉浸式多維體驗(yàn)。加 Buds Pro 2 將采用 IMU 傳感器和空間渲染算法來實(shí)現(xiàn)該功能列子根官方分享的細(xì)節(jié),這耳機(jī)將配備六軸運(yùn)動感器,以實(shí)現(xiàn)頭部追支持。除了空間音頻,一加 Buds Pro 2 還將提供快速配對支持,允許用只需輕點(diǎn)一下就能將機(jī)與兼容設(shè)備無縫配。這款耳機(jī)還將支持卓的音頻切換功能,許用戶將耳機(jī)同時(shí)連到兩個(gè)設(shè)備,并根據(jù)們的操作在連接的設(shè)之間進(jìn)行切換。京東 OPPO 一加 Buds Pro 2 真無線入耳式降噪藍(lán)牙機(jī) 音樂游戲運(yùn)動耳機(jī) 通用小米蘋果華為手機(jī) 曜石黑 899 元直達(dá)鏈?


T.C.Christensen

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

回復(fù) Delfino : 本文來自微信公眾號:開內(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é)一下我們開篇中的一個(gè)問題:?內(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 變量的更新過程。現(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è)采樣周期的數(shù)據(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è)全局系統(tǒng)瞬時(shí)負(fù)值中,然后再定時(shí)使用指加權(quán)移動平均法來統(tǒng)計(jì)過 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)核定義了一個(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ù),然后打印出來? 


約翰·桑福德 路易·德爾·卡門

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

回復(fù) 布瑞亞·格蘭特 : 本文總計(jì):2980 字預(yù)計(jì)閱讀時(shí)間:8 分鐘想趁過年的候好好躺平,帶看幾部電影比如已經(jīng)期待兩年多的《流地球 2》。這不大年初一電就要上映了嘛于是我又去刷刷相關(guān)的信息發(fā)現(xiàn)了下面這新出的電影海:定睛一看,好這種雙重曝的效果咱們沒過,干脆寫篇細(xì)教程,不僅教一種雙重曝的新做法,還蹭熱度,真好~要是在此之前并不知道啥是重曝光,可以花瓣網(wǎng)搜一下有很多相關(guān)的板,多看看大就了解了:這效果在 PS 中做出來很簡,通常只需要一下圖層混合式,或者用畫涂抹一下兩張的銜接處,使張不同的圖片互融合即可。在 PPT 中想要做出這種意部位自然過的效果,還是較麻煩的,因 PPT 沒有畫筆涂抹相關(guān)功能,多數(shù)圖半透明漸變效都比較生硬。在寫本文之前搜索了一下,現(xiàn)目前網(wǎng)上 PPT 雙重曝光的制作思路有下這四種:01. 直接給其中一張圖片設(shè)置明度,蓋在另張圖片上方,種方法做出來效果最差,設(shè)了透明度的圖幾乎看不清細(xì)。02. 將人物圖摳取出來再給需要融合圖片設(shè)置柔化緣效果,該方得到的圖片都較清晰,但兩圖的融合效果佳。03. 將人物圖摳取出,再使用 OKPlus 插件的圖片透明功,將另一張圖置為半透明漸,最后將兩張疊加在一起。方法得到的效較好,但圖片透明過渡的方很局限,只能出線性透明漸的效果,無法任意區(qū)域半透過渡。04. 先將人物圖摳出來,再將兩圖片疊加在一,全選后使用 OK 插件的圖片混合功能,如疊加或?yàn)V色該方法得到的果相對比較自且炫酷,但圖的色彩與明暗最終的效果影較大,而且也法自定義修改較為局限。接來,我就手摸教大家一種全的 PPT 雙重曝光實(shí)現(xiàn)思,做完后圖片融合效果更好而且還可以自義圖片的半透區(qū)域!好了,文開始~首先,從 Freepik 找一張宇宙、星空相關(guān)背景圖,以及張小兔子側(cè)身圖片:接著使在線摳圖工具將兔子摳取出:要是你之前接觸過這類工,可以在 AboutPPT 導(dǎo)航?搜索“線摳圖”,我理了很多相關(guān)網(wǎng)站,不妨試看:https://www.aboutppt.com/favorites/zaixianzuotu然后將摳好的子圖片放大,其頭部在頁面合適位置即可大致效果如下選中該兔頭圖,在圖片格式-顏色設(shè)置中,其飽和度降為:相當(dāng)于做了色處理,得到效果如下:接在藝術(shù)效果選中選擇膠片顆效果,并修改度大小為 70,使兔子看起有顆粒紋理。到的效果如下接下來,需要兔子的亮部變更亮,暗部變更暗。可以在片格式設(shè)置中將對比度提高分之三十,清度提高百分之:此時(shí)得到的果如下圖,明對比更加明顯毛看起來也更晰:接著復(fù)制頁,將處理好兔子圖片疊加星空圖上方,提高圖片透明:這一步的目,是方便我們下來繪制形狀方便把握哪些域要顯示出來哪些區(qū)域要隱(透明)處理再使用任意多形工具,按住標(biāo)左鍵不放,制出想要保留兔子區(qū)域:需注意的是,想保留的區(qū)域可根據(jù)自己的喜任意修改,其區(qū)域?qū)@示透明或半透明態(tài)。接著從我之前分享的免云朵素材中,一張邊緣比較滑的云朵圖:其拖進(jìn) PPT 頁面中,注意看下圖的選框右側(cè)上方的云圖為實(shí)際大小下方的云朵圖小了尺寸并修了圖片透明度 80%:這么做的目的,是了后續(xù)多個(gè)云疊加時(shí),云朵透明度與形態(tài)渡更加自然。著將之前用任多邊形繪制的域改為白色,明度可以設(shè)置 5% 或 10%,再將高透明度的云朵圖制多個(gè),疊加兔頭的其他區(qū):復(fù)制時(shí)可以用快捷操作,按住 Ctrl 不放,直接拖動圖片并松巫禮從而快速復(fù)制此時(shí)注意觀察白色區(qū)域的邊過于生硬,這即使處理完成得到的兔子圖星空的融合度不好,過渡不然。因此需要量復(fù)制云朵圖改變大小及旋角度,將生硬邊緣覆蓋住,白色的透明度渡更自然:這步,其實(shí)是在擬 PS 中的畫筆涂抹,將朵當(dāng)作筆刷,復(fù)制與疊加當(dāng)筆刷的重復(fù)涂,修改云朵圖透明度與大小其實(shí)就是在修畫筆的大小與量。如果你想某個(gè)區(qū)域的透度更高,就少點(diǎn)云,如果想某個(gè)區(qū)域的兔皮毛顯示更多就多疊加一些,使其更接近色。來感受一此時(shí)夸張的云數(shù)量:將這些朵和白色的形組合到一起,用 OK 插件原位轉(zhuǎn)換為圖。接下來,復(fù)星空圖,將其充為該頁的幻片背景,并將前的灰色小兔復(fù)制過來,置頁面頂層:注觀察,因?yàn)榇?兔子是免摳圖所以邊緣會顯下方的白色云。選中兔子圖,打開圖片格設(shè)置,設(shè)置為燈片背景填充也就是填充了空圖:此時(shí)再察上圖,與填之前略有不同兔子四周的白被遮擋住了。點(diǎn)來了!同時(shí)中之前云朵組后轉(zhuǎn)成的圖片及兔子圖片,用 OK 插件圖片混合功能的正片疊底功:需要注意的:兔子圖要位云朵圖的上層要先選兔子圖選下方的云朵,此時(shí)可以打選擇窗格,更便選用。正片底操作后,刪下方的圖片,到的效果如下如你所見,之白色越多越明的區(qū)域,兔子透明度越低,前白色云朵越的區(qū)域,兔子透明度越高,示出來的星空越多。我們多位復(fù)制幾份兔圖,并用 OKPlus 插件分別調(diào)整圖片明度,將它們加在一起,可得到下面這種明度過渡更加然的效果:此,雙重曝光效就已經(jīng)做好了接下來,從我以前分享過的摳光效素材中選一些光效圖到頁面中,調(diào)大小、透明度藝術(shù)效果和位,豐富頁面的節(jié):光效素材進(jìn)去后,得到效果如下:最,將文字內(nèi)容單排版一下,進(jìn)一步豐富光細(xì)節(jié),這一頁制作完成了:終效果和《流地球 2》的海報(bào)略有差異,是兔子保留的域較多,二是體沒有進(jìn)一步色調(diào)整為偏青,如果你感興的話,可以做頁改改看。本來自微信公眾:自律的音律 (ID:yinlvPPT)

猜你喜歡

        <code id='ff88c'></code><style id='12a75'></style>
        • <acronym id='c71db'></acronym>
          <center id='8511b'><center id='27a1d'><tfoot id='83053'></tfoot></center><abbr id='07470'><dir id='b7b1f'><tfoot id='0bbaf'></tfoot><noframes id='38dbd'>

          • <optgroup id='7b973'><strike id='96cbc'><sup id='27ff9'></sup></strike><code id='38180'></code></optgroup>
              1. <b id='b0313'><label id='d5ebf'><select id='4741a'><dt id='e8371'><span id='a40b4'></span></dt></select></label></b><u id='55a8d'></u>
                <i id='eac7c'><strike id='b0818'><tt id='ead1f'><pre id='54c5b'></pre></tt></strike></i>

                    <code id='2f172'></code><style id='209bf'></style>
                  • <acronym id='2e939'></acronym>
                    <center id='cf09c'><center id='972b7'><tfoot id='acd9b'></tfoot></center><abbr id='1695d'><dir id='f418c'><tfoot id='e9ff2'></tfoot><noframes id='600a0'>

                  • <optgroup id='091a2'><strike id='411ee'><sup id='f615a'></sup></strike><code id='c32ce'></code></optgroup>
                      1. <b id='82cda'><label id='c427c'><select id='e28ea'><dt id='8b6a9'><span id='4bd22'></span></dt></select></label></b><u id='b2d16'></u>
                        <i id='a1464'><strike id='3a57b'><tt id='cbcfb'><pre id='80442'></pre></tt></strike></i>

                        护士节节目表演优秀视频
                        熱度
                        31649
                        點(diǎn)贊

                            <code id='98e76'></code><style id='21d33'></style>
                          • <acronym id='2604a'></acronym>
                            <center id='9af71'><center id='f7347'><tfoot id='0f5ed'></tfoot></center><abbr id='7d1f6'><dir id='d6787'><tfoot id='43b4d'></tfoot><noframes id='c1464'>

                          • <optgroup id='dfa98'><strike id='f6347'><sup id='4b54c'></sup></strike><code id='f1742'></code></optgroup>
                              1. <b id='b7589'><label id='3981f'><select id='6dd63'><dt id='fce06'><span id='ce5f9'></span></dt></select></label></b><u id='c9642'></u>
                                <i id='09558'><strike id='2cafc'><tt id='da137'><pre id='8aa07'></pre></tt></strike></i>

                                友情鏈接:

                                中國地方論壇大全 新京報(bào)網(wǎng)站 奧特英雄傳 賽羅與捷德(日語) 我們的宇宙:飛奔到月球 海底大冒險(xiǎn) The Reef 2: High Tide