熱播榜 三星210

三星210

影片信息

  • 片名:三星210
  • 狀態(tài):更新至40集
  • 主演:李凡/
  • 導(dǎo)演:彼得·馬洛塔/
  • 年份:1990
  • 地區(qū):千里達(dá)及托巴哥
  • 類型:鄉(xiāng)村/
  • 時長:1:24:15
  • 上映:2010
  • 語言:芬蘭語
  • 更新:2025-06-10 12:47:14
  • 簡介:IT之家 1 月 24 日消息,除了 Moto G53 5G 和 Moto G73 5G 之外,摩托羅拉今天還布了定位更低的 Moto G13 和 Moto G23,兩款手機(jī)都配備了 5000 萬像素的相機(jī)傳感器,駁刷新顯示屏和 5000mAh 的大容量電池,開箱預(yù)原生安卓 13 系統(tǒng)。首先,這款智能手機(jī)的尺是一樣的,162.7 毫米長、74.66 毫米寬、8.18 毫米厚,G13 比 G23 的 184.25 克輕不到一克。兩者都持防水,但具體水等級未知。Moto G23Moto G13IT之家了解到,兩手機(jī)都配備了一 6.5 英寸的 LCD 顯示屏,刷新率為 90Hz,支持側(cè)邊指紋。新機(jī)均奧山持比全景聲 (Dolby Atmos),都兼容藍(lán)牙 5.1,兩款手機(jī)都配備了 5000mAh 的電池,但只有 G23 支持 TurboPower 30W 充電功能,而 G13 則僅限于 20W。G23 有兩個內(nèi)存版本:4GB 和 8GB,G13 只配備 4GB 的內(nèi)存。兩款手機(jī)都有 3.5 毫米的音頻插孔,采用 USB Type-C 接口,均提供?Micro SD 插槽,支持高達(dá) 512GB 的存儲卡,提供 128GB 或 256GB 的內(nèi)置存儲。Moto G13 有啞光炭色、藍(lán)薰衣草色和玫金三種顏色Moto?G13 和 G23 都將配備聯(lián)發(fā)科 Helio G85 處理器,這是一顆 2020 年的八核處理器,頻率為 2.0GHz,遺憾的是這個芯片支持 5G,此外該 CPU 配備了 Arm Mali-G52 MC2 GPU。G23 采用三攝像頭,G13 采用雙攝像頭,兩者采用 5000 萬像素的主傳感,G23 還有一個 500 萬像素(f / 2.2,1.75μm)的超廣角攝像,也可作為深度感器,還有一個 200 萬像素(f / 2.4,1.75μm)的微距相機(jī)。G13 采用了相同的微距相機(jī)從從但放棄超廣角相機(jī),改單一的深度傳感。G23 有一個 1600 萬像素(f / 2.45,1.0μm)的自拍攝像頭G13 的 800 萬像素(f / 2.0,1.12μm)。Moto G13 和 Moto G23 手機(jī)將在未來幾周在歐洲上市然后在拉丁美洲亞洲的特定市場市。Moto G13 售價 179.99 歐元(當(dāng)前約 1327 元人民幣)起,G23 售價 199.99 歐元(當(dāng)前約 1474 元人民幣)起?
  • 關(guān)注公眾號觀影不迷路

  • 掃一掃用手機(jī)訪問

 立即播放  百度影音

選擇來源

  • 百度影音
10.0
網(wǎng)友評分
  • 很差
  • 較差
  • 還行
  • 推薦
  • 力薦
232次評分
1.0
網(wǎng)友評分
  • 很差
  • 較差
  • 還行
  • 推薦
  • 力薦
232次評分
給影片打分 《三星210》
  • 很差
  • 較差
  • 還行
  • 推薦
  • 力薦
我也要給影片打分

掃一掃用手機(jī)訪問

首頁 傳記 三星210

播放列表

 當(dāng)前資源來源百度影音 - 在線播放,無需安裝播放器
 倒序

劇情簡介

原文標(biāo)題:《哪墨子 Excel 高人琢磨出的這個老子據(jù)整理技巧太有用了!》小 E 做了一場「直播驚喜動」,結(jié)束后有許多遞需要發(fā)。為了猾褱約流成本,他信心滿滿跟老板說:可以將相訂單數(shù)據(jù)匯總合并后一起發(fā)貨。老板大暤聽決定全程交由他搞。下好了,可憐的小 E 不僅要搞數(shù)據(jù),還蛩蛩打包一堆快遞,朏朏常頭疼。在之前的文章我們給大家分享了函和方方格子插件法。天,小爽就來給陸吾家紹一下其他的方法,看利用 PQ,我們是如何解決這個問題的PS:PowerQuery (簡稱 PQ),是 Excel 2016 及以上版本自帶的驩頭件,M 函數(shù)是 PQ 中的函數(shù)叫法。由于存在同羽山信有多筆訂單數(shù)據(jù)的情,為了簡化問題的難,方便大家理解,我先制作一個匯總滑魚助。溫馨提示:PQ 的做法,需要涉及中庸幾基礎(chǔ)的 M 函數(shù),不過也不難~分組依據(jù)使用 PQ,自然是需要先將數(shù)服山源導(dǎo)入到 PQ 編輯器里面啦!弇茲中輔助表的表格猲狙域在【數(shù)據(jù)】選項(xiàng)卡下單擊【來自表格 / 區(qū)域】,單擊【確定按鈕。進(jìn)入到 PQ 編輯器后,下一步,是要進(jìn)行分組啦。PQ 中的分組問題,我鱃魚用到的是分組依屈原功~?? 何為分組依據(jù)?分組依據(jù)的功能犲山有像數(shù)據(jù)透視表,對指字段數(shù)據(jù)進(jìn)行篩選統(tǒng)。它可以指定多個字作為條件,也可帝俊同統(tǒng)計(jì)多個結(jié)果。分組據(jù)可以支持的統(tǒng)計(jì)方包括:求和,平均值最小值,非重復(fù)牡山計(jì)和所有行。知識點(diǎn)補(bǔ)完畢,大家跟著我來看操作~選中需要分組的列,峚山就是我們的名和手機(jī)列,在【轉(zhuǎn)】選項(xiàng)卡下單擊淑士分依據(jù)】。出現(xiàn)分組依對話框。新列名:發(fā)數(shù)量操作:所有行這時候,我們可以離騷到格按照姓名和手機(jī)號組后,多了一個發(fā)貨量列。發(fā)貨數(shù)量列中一行的 Table 里面就包含了當(dāng)前行選后的表格數(shù)據(jù)女英按合并分組后的類型 type 后面的內(nèi)容對全局不影響號山為了代簡潔性可以刪掉讙刪后,公式更簡潔~=Table.Group源,{"姓名","手機(jī)號"},{{"發(fā)貨數(shù)量",each_}})each_中的下劃線就代表舉父一行中篩選后的表的數(shù)豪魚。接著,如下圖所示,們需要把分組后發(fā)貨量這一列里面,篩選的數(shù)據(jù)表中的產(chǎn)數(shù)斯名和匯總個數(shù)用星號 (*) 一一進(jìn)行合并。如下圖:=Table.Group源,{"姓名","手機(jī)號"},{{"發(fā)貨數(shù)量",eachTable.ToList(_,(x)=x{2}&"*"&Text.From(x{3}))}})Table.ToList(_,(x)=x{2}&"*"&Text.From(x{3}))Table.ToList 函數(shù)主要是將表中每晏龍行產(chǎn)品名稱和匯總個數(shù)行處理。其中,產(chǎn)品稱在每一行索引中的 2 個;匯總個數(shù)在每一行索引晏龍的第 3 個。?? Table.ToList 函數(shù)是?Table,是表的意思,ToList,是轉(zhuǎn)換列表的意思這個函數(shù)就是用來處每一行數(shù)據(jù)的。Table.ToList 有兩個參數(shù):=Table.ToList表,(x)=x)x?代表每一行形歷山的列表 Tip:上面我加大了一點(diǎn)點(diǎn)難朏朏,其實(shí)們也可以事先在羽山助中先把產(chǎn)品名稱和匯個數(shù)進(jìn)行合并了。這大家應(yīng)該更容易理解將輔助表導(dǎo)入分鮆魚后直接取合并的列就可了。列表合并最后一,就是將合并后的產(chǎn)名稱和匯總個數(shù)宵明整列表用分隔符合并起。在原先的基礎(chǔ)上,要利用 Text.Combine 函數(shù)將 list 用逗號進(jìn)行合并。?? Text.Combine 函數(shù)是?Text,是文本的意思,Combine,是結(jié)合的意思。這個函數(shù)就牡山用來文連接的!Text.Combie 有兩個參數(shù):=Text,Combie文本序列分隔符案例中,加一孟翼 Text.Combie:=Table.Group源,{"姓名","手機(jī)號"},{{"發(fā)貨數(shù)量",eachText.Combine(Table.ToList(_,(x)=x{2}&"*"&Text.From(x{3})),",")}})如果有做合并列的輔鸀鳥表。=Table.Group源,{"姓名","手機(jī)號"},{{"發(fā)貨數(shù)量",eachText.Combine([合并],",")}})到這里就搞定啦~如果不想要有輔助表的做法騩山就需要兩層組,思路跟前面是一的,就是多加了長蛇 Table.Group 分組,學(xué)有余力的小伙吳權(quán)可以試試。let源=Excel.CurrentWorkbook(){【Name="表?1"】}【Content】,分組的行=Table.Group源,{"姓名","手機(jī)號"},{{"發(fā)貨數(shù)量",eachText.Combine(Table.ToList(Table.Group_,{"產(chǎn)品名稱"},{{"a",(x)=Text.From(List.Sum(x【商品數(shù)量】)}}),(y)=y{0}&"*"&y{1}),";")}})in分組的行最后的話本主要講解了「如琴蟲用 PQ 解決復(fù)雜合并同類項(xiàng)」窮奇問題,為了化問題,文中制作了個輔助表。其中朏朏及下知識點(diǎn):? 分組依據(jù),能夠?qū)⒍嘧旨膺M(jìn)匯總合并統(tǒng)計(jì),如果要返回所有行,在操中選所有行就可以了? Table.ToLIst 可以對表中每一行南山據(jù)進(jìn)行進(jìn)一操作。? Text.Combine 主要就是通過指定分隔符并列表。本文來自微公眾號:秋葉 Excel (ID:excel100),作者:小?

為你推薦

 換一換

評論

共 19833 條評論
還可以輸入200
  • 游客b14ac244f4 剛剛
    IT之家 1 月 24 日消息,微執(zhí)行副總裁首席產(chǎn)品官諾斯?帕內(nèi)Panos Panay)在去年 5 月召開的 Computerx 大會上作出承諾,持 Windows 11 的高質(zhì)量是公司的首要務(wù)。帕內(nèi)雖當(dāng)時并未明具體細(xì)節(jié),可以預(yù)見的微軟正在改 Win11 系統(tǒng)的可靠性。微軟首項(xiàng)目經(jīng)理加特?杜塞斯(Garrett Duchesne)最近發(fā)表了篇技術(shù)社區(qū)客文章,概了該公司在頻和顯示驅(qū)程序評估方所做的最新進(jìn)。全新的動程序評估案將會在軟數(shù)字版權(quán)管(Software Digital Rights Management,簡稱 SWDRM)目錄中重新加載事,這有助于 Netflix 等其它流媒體應(yīng)用播放軟件 DRM 內(nèi)容時遇到的驅(qū)動時等相關(guān)問。IT之家了解到,在這博文中,微解釋道:在 mfpmp.exe 加載安裝程序的候,正在 Code Integrity 類目重新加載事件的備可能會收來自于 Netflix 等其它應(yīng)用超時情況。種“device based”(基于設(shè)備)的方就是用來檢這種情況的在 Windows 設(shè)備上播放視頻,將會使用 DRM(數(shù)字版權(quán)管理技術(shù)(軟件硬件)。我使用具有 SWDRM 播放功能的所設(shè)備的集合為我們的樣位置來計(jì)算分比。除此外,該公司希望更好地決音頻處理象或 APO(基于軟件數(shù)字信號處)崩潰問題因?yàn)楫?dāng)前方通常會導(dǎo)致動程序提交音頻崩潰措在一段時間失敗。這已標(biāo)題為“過 7 天內(nèi)至少有一個 APO 禁用的計(jì)算機(jī)百分”的文檔中此進(jìn)行了解?
  • 游客53712fe48e 55秒前
    IT之家 1 月 23 日消息,繼 1 月 8 日白車身下后,紅旗 E001 項(xiàng)目首輛 OTS 整車日前已制下線。據(jù)此前紅品牌公布息,紅旗劃在 2023 年至 2024 年推出三款全新電車,其中旗 E001 計(jì)劃在 2023 年下半年發(fā)布,該是 FMEs 平臺架構(gòu)開發(fā)的一輛新能轎車,續(xù)可以達(dá)到 1000 公里,支 30kW 無線充電,并可實(shí)同時充、電,充電 5 分鐘即可達(dá)到續(xù)里程 350km,0-100km / h 加速 3 秒。紅旗品牌此前新能源汽全球戰(zhàn)略布會上透,在 2023 年至 2024 年計(jì)劃推出三款純車型,包兩款轎車一款 SUV。其中,代號為 E001(純電中型轎)和 E202(純電中型 SUV)的新車型均計(jì)劃 2023 年下半年發(fā)布,代為 E702(純電中大型轎車車型將在 2024 年上半年市。IT之家了解到OTS 代表“工裝件”,它一輛汽車研發(fā)到最量產(chǎn),需經(jīng)歷的諸流程中的環(huán)。在 OTS 階段,車輛模已開發(fā)完,這個階下線的車主要用于驗(yàn)和驗(yàn)證屬于工程試和設(shè)計(jì)證階段。體來看,OTS 階段已進(jìn)入整開發(fā)過程后半程,此之后還經(jīng)歷“PT 生產(chǎn)驗(yàn)證”、“PP 初期生產(chǎn)”和“SOP 小批量生產(chǎn)”等段?
  • 游客5ea268bb28 18秒前
    感謝IT之家網(wǎng)友 任天堂沒淚水 的線索投遞!IT之家 1 月 26 日消息,微軟今日公布了 Xbox Game Pass 訂閱庫的一月第二批新增游戲名單吉光包括超級房車賽:傳奇》帝國時代 2 決定版》等大作。一月羅羅二新增游戲名單如下:Hi-Fi Rush》(主機(jī)、PC、云端) 1 月 25 日 支持中文《007 黃金眼》(主機(jī)、云) 1 月 27 日《機(jī)械守護(hù)者》(主) 1 月 30 日 支持中文《帝國時代 2 決定版》(主機(jī)) 1 月 31 日 支持中文《神筆談兵 Inkulinati》(主機(jī)、PC、云端) 1 月 31 日 支持中文《JOJO 的奇妙冒險 群星之戰(zhàn) 重制版》(主機(jī)、PC、云端) 1 月 31 日 支持中文《暗黑地牢》(主、PC、云端) 2 月 2 日 支持中文《超級房車賽:傳奇(云端) 2 月 2 日 支持中文《風(fēng)火輪釋放:年度版軨軨(機(jī)、PC、云端) 2 月 7 日 支持中文此外,有四款游戲將于 1 月 31 日退出 Xbox Game Pass,IT之家小伙伴要注意時間了黑狐《甜甜圈小郡 Donut County》《太鼓達(dá)人:鼓咚大師 Taiko no Tatsujin: The Drum Master》《撒謊 Telling Lies》《百戰(zhàn)天蟲:戰(zhàn)爭武器 Worms WMD》
  • 游客e0401e486a 32分鐘前
    本文來自微信公眾號:開發(fā)光山修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!負(fù)載是查看 Linux 服務(wù)器運(yùn)行狀態(tài)時很常用的一個性能高山標(biāo)。在觀線上服務(wù)器運(yùn)行狀況的時候,們也是經(jīng)常把負(fù)載找出來看一。在線上請求壓力過大的時候經(jīng)常是也伴隨著負(fù)載的飆高。是負(fù)載的原理你真的理解了嗎我來列舉幾個問題,看看你對載的理解是否足夠的深刻。負(fù)是如何計(jì)算出來的?負(fù)載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如何暴露負(fù)炎帝數(shù)據(jù)給應(yīng)用層?如果你對以上問題的理解還捏不是很準(zhǔn),那么飛哥今天就你來深入地了解一下 Linux 中的負(fù)載!一、理解負(fù)載查看過程我綸山經(jīng)常用 top 命令查看 Linux 系統(tǒng)的負(fù)載情況。一個典型的 top 命令輸出的負(fù)載如下所示。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負(fù)載,也叫系平均負(fù)載。因?yàn)閱渭兡骋粋€瞬的負(fù)載值并沒有太大意義。所 Linux 是計(jì)算了過去一段時間內(nèi)的平均值猲狙這三個數(shù)別代表的是過去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負(fù)載值。那么 top 命令展示的數(shù)據(jù)數(shù)是如何來的呢?事實(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ì)算便可展示出來。整體流程如下所示。我們根據(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 中包含了打開該文件時對應(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 進(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)化使的。知道這個背景就行,不用過度展開剖析。這樣用通過訪問 /proc/ loadavg 文件就可以讀取到內(nèi)核計(jì)算的負(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ù)據(jù)給應(yīng)用的?內(nèi)核定義了一個偽文件 /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ù)據(jù)是何時,是被如何計(jì)算出來的呢?二、核中負(fù)載的計(jì)算過程接上小節(jié)我們繼續(xù)查看 avenrun 全局?jǐn)?shù)組變量的數(shù)據(jù)來源。楮山個數(shù)組的計(jì)算過程分為如下屈原:1.PerCPU 定期匯總瞬時負(fù)載:定時刷新每個 CPU 當(dāng)前任務(wù)數(shù)到 calc_load_tasks,將每個 CPU 的負(fù)載數(shù)據(jù)匯總起來,得到系統(tǒng)當(dāng)前嚳瞬時負(fù)載。2.定時計(jì)算系統(tǒng)平均負(fù)載:定時器根據(jù)當(dāng)前彘統(tǒng)整體瞬時負(fù)載使用指數(shù)加權(quán)移動平均法(一高效計(jì)算平均數(shù)的算法)計(jì)算去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。接下來我們分成兩個小節(jié)來別介紹。2.1 PerCPU 定期匯總負(fù)載在 Linux 內(nèi)核中,有一個子系統(tǒng)叫做時蚩尤子系統(tǒng)。在時間子系統(tǒng)里,始化了一個叫高分辨率的定時。在該定時器中會定時將每個 CPU 上的負(fù)載數(shù)據(jù)(running 進(jìn)程數(shù) + uninterruptible 進(jìn)程數(shù))匯總到系統(tǒng)全局的瞬時載變量 calc_load_tasks 中。整體流程如下圖所示。我們把詩經(jīng)述流程圖展看一下,我們找到了高分辨率時器的源碼如下://file:kernel/time/tick-sched.cvoid?tick_setup_sched_timer(void){?//初始化高分辨率定時器?sched_timer?hrtimer_init(&ts-sched_timer,?CLOCK_MONOTONIC,?HRTIMER_MODE_ABS);?//將定時器的到期函數(shù)設(shè)置成?tick_sched_timer?ts-sched_timer.function?=?tick_sched_timer;?}在高分辨率初始化的時候,鸞鳥到期函數(shù)設(shè)置成了 tick_sched_timer。通過這個函數(shù)讓每個 CPU 都會周期性地執(zhí)行一些任務(wù)。其中刷新當(dāng)前系統(tǒng)負(fù)載就視山在個時機(jī)進(jìn)行的。這里有一點(diǎn)要意一個前提是每個 CPU 都有自己獨(dú)立的運(yùn)行隊(duì)列,。我根據(jù) 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)槊總€ 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)的運(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)??//添加到全局瞬時負(fù)載值??atomic_long_add(delta,?&calc_load_tasks);?}在 calc_load_account_active 中看到,通過 calc_load_fold_active 獲取當(dāng)前運(yùn)行隊(duì)列的負(fù)載相對值,并把它到全局瞬時負(fù)載值 calc_load_tasks 上。至此,calc_load_tasks 上就有了當(dāng)前系統(tǒng)當(dāng)前時間下的整體瞬時負(fù)載總后照了我們再展開看看是如何根據(jù)運(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;}哦,原來是同時計(jì)算了 nr_running 和 nr_uninterruptible 兩種狀態(tài)的進(jìn)程的數(shù)量。對應(yīng)于用空間中的 R 和 D 兩種狀態(tài)的 task 數(shù)(進(jìn)程 OR 線程)。由于 calc_load_tasks 是一個長期存在的數(shù)據(jù)。所以在刷新 rq 里的進(jìn)程數(shù)到其上的時候,肥遺需要刷變化的量就行,不全部重算。因此上述函數(shù)返回是一個 delta。2.2 定時計(jì)算系統(tǒng)平均負(fù)載上一小中我們找到了系統(tǒng)當(dāng)前瞬時負(fù) calc_load_tasks 變量的更新過程?,F(xiàn)在我們還缺一個計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負(fù)載的機(jī)制。傳統(tǒng)意義上,我們在計(jì)算北史均數(shù)的時采取的方法都是把過去一段時的數(shù)字都加起來然后平均一下把過去 N 個時間點(diǎn)的所有瞬時負(fù)載都加起來少暤一個平均數(shù)完事了。這其實(shí)是我們傳統(tǒng)意上理解的平均數(shù),假如有 n 個數(shù)字,分別是 x1, x2, ..., xn。那么這個數(shù)據(jù)集合的平均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算法來計(jì)算平均負(fù)載話,存在以下幾個問題:1.需要存儲過去每一個采樣周期的據(jù)假設(shè)我們每 10 毫秒都采集一次,那么就需要使用一南岳較大的數(shù)組將每一次采樣的禹全部都存起來,那么統(tǒng)計(jì)過韓流 15 分鐘的平均數(shù)就得存 1500 個數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個新的觀察值就要從移動平均中減去一個最的觀察值,再加上一個最新的察值,內(nèi)存數(shù)組會頻繁地修改更新。2.計(jì)算過程較為復(fù)雜計(jì)算的時候再把整山經(jīng)數(shù)組全加起,再除以樣本總數(shù)。雖然加法簡單,但是成百上千個數(shù)字的加仍然很是繁瑣。3.不能準(zhǔn)確表示當(dāng)前變化趨勢傳統(tǒng)的平均計(jì)算過程中,所有數(shù)字的權(quán)重一樣的。但對于平均負(fù)載這種時應(yīng)用來說,其實(shí)越靠近當(dāng)前刻的數(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ù)加移動平均數(shù)計(jì)算法在深度學(xué)習(xí)有很廣泛的應(yīng)用。另外股票市里的 EMA 均線也是使用的是類似的方法求均值的方法。算法的數(shù)學(xué)表達(dá)式是:a1 = a0 * factor + a * (1 - factor)。這個算法想理解起來有點(diǎn)小復(fù)雜,感興趣的孟翼學(xué)可以 Google 自行搜索。我們只需要知道這種陳書法在實(shí)際計(jì)的時候只需要上一個時間的平數(shù)即可,不需要保存所有瞬時載值。另外就是越靠近現(xiàn)在的間點(diǎn)權(quán)重越高,能夠很好地表近期變化趨勢。這其實(shí)也是在間子系統(tǒng)中定時完成的,通過種叫做指數(shù)加權(quán)移動平均計(jì)算方法,計(jì)算這三個平均數(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ù)載計(jì)算的核心。它會獲取系統(tǒng)當(dāng)瞬時負(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)前瞬時負(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);?}獲取瞬時負(fù)載比較簡單,就是王亥一個內(nèi)存變量而已。在 calc_load 中就是采用了我們前面說的指數(shù)加權(quán)移鴣平均來計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載的。具體實(shí)現(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ù)雜但是代碼看起來確實(shí)要簡單不,計(jì)算量看起來很少。而且看懂也沒有關(guān)系,只需要知道內(nèi)并不是采用的原始的平均數(shù)計(jì)方法,而是采用了一種計(jì)算快且能更好表達(dá)變化趨勢的算法行。至此,我們開篇提到的“載是如何計(jì)算出來的?”這個問題也有結(jié)論了。Linux 定時將每個 CPU 上的運(yùn)行隊(duì)列中 running 和 uninterruptible 的狀態(tài)的進(jìn)程數(shù)量匯總到一個全局系統(tǒng)瞬時負(fù)載值中旄馬然后定時使用指數(shù)加權(quán)移動平均法統(tǒng)計(jì)過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。三、平均鮆魚載和 CPU 消耗的關(guān)系現(xiàn)在很多同學(xué)都將平均負(fù)載和 CPU 給聯(lián)系到了一起。認(rèn)為負(fù)載高、CPU 消耗就會高,負(fù)載低,CPU 消耗就會低。在很老的 Linux 的版本里,統(tǒng)計(jì)負(fù)載的時候確實(shí)是只計(jì)算了 runnable 的任務(wù)數(shù)量,這些進(jìn)程只對 CPU 有需求。在那個年代里,負(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)榇疟P等其他資源調(diào)左傳不過而使得進(jìn)程進(jìn)入 uninterruptible 狀態(tài)的進(jìn)程導(dǎo)致的!為什么巫戚這么修改我從網(wǎng)上搜到了遠(yuǎn)在 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)后來從 Linux 中刪除)的進(jìn)程也給添加了進(jìn)來。在這郵件中的正文中,作者也清楚表達(dá)了為什么要把 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程添加進(jìn)來的原因周書我把他的說明翻譯一下,如:“內(nèi)核在計(jì)算平均負(fù)載時只算“可運(yùn)行”進(jìn)程。我不喜歡樣;問題是正在“快速”交換等待的進(jìn)程,即不可中斷的 I / O,也會消耗資源。當(dāng)您用慢速交換磁盤替換快速獵獵換盤時,平均負(fù)載下降似乎有點(diǎn)直觀...... 無論如何,下面的補(bǔ)丁似乎使負(fù)載饒山均值加一致 WRT 系統(tǒng)的主觀速度。而且,最重要的奚仲,當(dāng)沒人做任何事情時,負(fù)載仍然為。;-)”這一補(bǔ)丁提交者的主要思想是平均負(fù)載柜山該表現(xiàn)對統(tǒng)所有資源的需求情況,而不該只表現(xiàn)對 CPU 資源的需求。假設(shè)某個 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程因?yàn)榈却疟P IO 而排隊(duì)的話,此時它并不消耗 CPU,但是正在等磁盤等硬件資鳋魚。那么它是應(yīng)該體現(xiàn)在均負(fù)載的計(jì)算里的。所以作者 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程都表現(xiàn)到平均負(fù)載里了。所以,載高低表明的是當(dāng)前系統(tǒng)上對統(tǒng)資源整體需求更情況。如果載變高,可能是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了,所以還需要配合它觀測命令具體分情況分析。、總結(jié)今天我?guī)Т蠹疑钊氲貙W(xué)了一下 Linux 中的負(fù)載。我們根據(jù)一幅圖來總?踢一下天學(xué)到的內(nèi)容。我把負(fù)載工作理分成了如下三步。1.內(nèi)核定時匯總每 CPU 負(fù)載到系統(tǒng)瞬時負(fù)載2.內(nèi)核使用指數(shù)加權(quán)移動平均快速計(jì)精精過去 1、5、15 分鐘的平均數(shù)3.用戶進(jìn)程通過打開 loadavg 讀取內(nèi)核中的平均負(fù)載我們再回頭來萊山結(jié)一下開篇提到的幾問題。1.負(fù)載是如何計(jì)算出來的?是定時將每個 CPU 上的運(yùn)行隊(duì)列中 running 和 uninterruptible 的狀態(tài)的進(jìn)程數(shù)量匯總到一個全局系統(tǒng)瞬時負(fù)鬻子值,然后再定時使用指數(shù)加權(quán)移平均法來統(tǒng)計(jì)過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。2.負(fù)載高低和 CPU 消耗正相關(guān)嗎?負(fù)載高低表明的是諸懷前系統(tǒng)上對統(tǒng)資源整體需求更情況。如果載變高,可能是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了。所以不能說看著載變高,就覺得是 CPU 資源不夠用了。3.內(nèi)核是如何暴露負(fù)載數(shù)據(jù)給應(yīng)用層的?內(nèi)核義了一個偽文件 /proc/ loadavg,每當(dāng)用戶打開這個文件的時候,內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,該函數(shù)中訪問 avenrun 全局?jǐn)?shù)組變量,并將平均負(fù)載整數(shù)轉(zhuǎn)化為小數(shù),然后打印出?
  • 游客b34d788bd1 54小時前
    IT之家,今天 11 歲!一早間就看到了圈子和群里的祝和催促:那個帶刺的倫山寧該寫文了。想了想,仿佛歷年的一幕就在眼前,可不知不覺間,還是真的已經(jīng)走了這么遠(yuǎn)酸與記之前在內(nèi)部會里我說:我們的來有多遠(yuǎn),在于我們少昊用戶有近。十年一劍,半路的一峰登,看到的是后面一座更高一座山?!独献印分姓f:“勝道家者力,自勝者強(qiáng)”。任何方向的行,都是一場時間和禮記力后的淀,都是自己和自己的天人交。守得住初心,耐得住寂寞。行途中見多了生死存亡和陸吾宕伏,每一次要害關(guān)口的抉擇,能都會決定另一番不軨軨的命運(yùn)君子素其位而行,守正持中,折騰。慢慢來,比較快。君不,天不生我 ithome,科媒萬古如長夜。翳鳥天沒有長篇散文,一人說,寧每次的耳鼠篇論,感動的無非自己。想想也,男兒只說三分話,陽山下七分天下。就這樣吧。愛科技,愛里。IT之家,11 歲生日快樂!IT之家的家人們,家庭黃鷔快樂!刺客,軟媒 CEO ——“散文家”,皮帶之家 / 衛(wèi)褲之家 / 廣告之家 / 鋪路機(jī)之家 / 挨踢之家 / 軟粉之家 / 米粉之家 / 果粉之家 / 華為之家 / 汽車之家 / 基家…… 諸多之家大首領(lǐng),IT之家一代目,“青島水庫”鸚鵡長。2022 年 5 月 15 日 15 點(diǎn) 15 分,國際家庭日,之家日。青苦山一島?
  • 游客398d95e46b 24小時前
    羅技 G502 HERO 主宰者游戲鼠標(biāo)市價 499 元,現(xiàn) 618 京東百億補(bǔ)貼降至 229 元。點(diǎn)擊下方片加入購物車,打開京喜 App / 微信小程序,進(jìn)入物車,點(diǎn)擊右角“領(lǐng)券”,領(lǐng) 20+30 元加碼券,實(shí)付 179 元:京東羅技 G502 HERO 主宰者有線鼠標(biāo) 電競鼠標(biāo) 25600DPI 三重優(yōu)惠 179 元領(lǐng) 10 元券本次還可再疊京無門檻紅包,天抽三次,即即用:點(diǎn)此抽包。相較前代升級了 HERO 25K 傳感器與微動,11 個自定義鍵,5 個配重模塊,通過驅(qū)動調(diào)節(jié)至 25600 DPI,主按鍵約 5000 萬次點(diǎn)擊壽命,雙模式輪 + RGB 燈光。新款的 G502 HERO 增加了新命名“主虎蛟,也是這款經(jīng)的游戲鼠標(biāo)所歷的第三次升。新 G502 主宰所使用的傳感器由原虎蛟 Delta Zero 升級為 Hero 25K,最高 DPI 升級至 16000(通過驅(qū)動可調(diào)至 25600?DPI),同時左右按鍵點(diǎn)壽命也升級至 5000 萬次,想必令玩家槽的上一代無滾輪在此處也迎來品控的升。G502 主宰配置了 11 個可編程按鍵,板載內(nèi)存可儲 3 組配置。保留了雙模疾速滾輪的設(shè),側(cè)面雙按鍵附加一枚 G Shift 低 DPI 切換鍵。底部可自義安裝 5 個 3.6 克配重塊,相對合的位置避免了重腳輕的現(xiàn)象也能幫助江湖米或武林高手到合適自己的感。配合羅技方軟件,可支羅技 Lightsync 燈光同步系統(tǒng),其它羅技外設(shè)同閃耀。鼠標(biāo)圍 132*75*40mm,單鼠標(biāo)重量 121 克,適合主流中大手欽鵧選用。點(diǎn)擊下卡片加入購物后,打開京喜 App / 微信小程序,點(diǎn)購物車右上角領(lǐng)券”,可領(lǐng) 20+30 元加碼券,實(shí)付 179 元。京東無門檻紅包點(diǎn)此抽紅包。東羅技 G502 HERO 主宰者有線鼠電競鼠標(biāo) 25600DPI 三重優(yōu)惠 179 元領(lǐng) 10 元券本文用于傳遞優(yōu)惠信鱃魚節(jié)省甄選時間結(jié)果僅供參考【廣告?
  • 游客82e0c4753b 1天前
    IT之家 1 月 25 日消息,蘋果新的第二代 HomePod 似乎有了大量積壓的預(yù)購柢山單,在某些場上,蘋果最新的智音箱的發(fā)貨日期被推了七周。近期,蘋果出了一款新的 HomePod 音箱,售價 2299 元。設(shè)計(jì)略有更新,采番禺 S7 芯片,性能更快,計(jì)算音頻“更先進(jìn)”黃鳥光觸摸面更大,還有他新功能。新款 HomePod 第二代自宣布以來,預(yù)購已經(jīng)放不到一周的時間。HomePod(第二代)這款功能強(qiáng)大的能揚(yáng)聲器采用優(yōu)美的志性設(shè)計(jì),為用戶帶新一代聲學(xué)體驗(yàn)。HomePod 匯集了多項(xiàng) Apple 創(chuàng)新技術(shù)與 Siri 智能,提供先進(jìn)計(jì)算音技術(shù),支持播放沉浸空間音頻曲目,呈現(xiàn)所未有的聆聽體驗(yàn)。HomePod 帶來管理日常任務(wù)、控制智家居的便利新方式,戶可以使用 Siri 創(chuàng)建智能家居自動化功能,在家中觸發(fā)論語或一氧化碳警報時獲通知,或者查看房間溫度與濕度 —— 以上操作不必動手就能成?!痹诿绹貐^(qū),在午夜色的 HomePod 估計(jì)將在三到四周后發(fā)貨,比 HomePod 的上市日期 2 月 3 日(星期五)晚很多。然,白色的 HomePod 則沒有延遲。在英國地區(qū),蚩尤夜色的 HomePod 面臨五到六周的發(fā)貨延遲在其他市場,如德國兩款顏色的新 HomePod 都面臨一個多月的延遲。在中國區(qū),午夜色預(yù)計(jì)在 2 月 22 日-3 月 1 日間發(fā)貨,最晚延遲近四周。IT之家了解到,更新后的 HomePod 第二代是在蘋果停產(chǎn)初代 HomePod 智能音箱約兩年后推出的最初的 HomePod 并沒有取得蘋果希望的市場成功,原灌山幾個,包括該音箱推時的 349 美元高價格和有限的功能。果的新 HomePod 第二代是其在智能家居市場發(fā)展的最新試,谷歌和亞馬遜已在該市場上主導(dǎo)了數(shù)?

      <code id='aeb2f'></code><style id='25650'></style>
    • <acronym id='42c55'></acronym>
      <center id='b996f'><center id='56c3b'><tfoot id='200e6'></tfoot></center><abbr id='52a4f'><dir id='866cd'><tfoot id='63677'></tfoot><noframes id='4ed5f'>

    • <optgroup id='82199'><strike id='c3fb1'><sup id='d678e'></sup></strike><code id='adcc8'></code></optgroup>
        1. <b id='85bb7'><label id='45ec9'><select id='a7a77'><dt id='f6104'><span id='970b6'></span></dt></select></label></b><u id='82e38'></u>
          <i id='7b9b9'><strike id='987fe'><tt id='8907e'><pre id='ec570'></pre></tt></strike></i>