白營喊拉下14席綠民代推進“罷賴” 4月29日起,貴陽公交暫停運營4條線路,新辟1條線路,優(yōu)化調整多條線路 IT之家 1 月 15 日消息,今石頭科技公,股東順為天津金米,然人丁迪擬過集中競價大宗交易或價的方式合減持不超過 9.5% 公司股份。其,順為、金都是雷軍的米系成員,計減持不超 749.5 萬股,以現(xiàn)價估算,金超過 20 億;女天使資人丁迪擬持不超過 140.5 萬股。2021 年 6 月,石頭科技價最高曾經到 1064.88 元,但此后就一下行,2022 年 10 月跌破發(fā)行價,最低觸 220。截至 2023 年 1 月 13 日,以 297.82 元收盤,相對于最股價,跌幅 72%。據(jù)中國基金報道,此次減的自然人丁,是創(chuàng)投圈位低調的女使投資人。頭科技招股顯示,早在 2014 年,丁迪就與敬等人聯(lián)合立石頭科技當時以 3 萬元的實繳資額持有 15% 股權。IPO 前,丁迪持有石科技 395.0085 萬股,占比 7.9%,為公司第五大東,也是僅于昌敬的第大自然人股。目前,在關減持之后丁迪的持股為 519.7619 萬股,占比 5.55%,為石頭科技第大股東。招書還披露,迪的配偶為澤民,胡曾任石頭科技董事,并于 2016 年 3 月退出。IT之家了解到,石頭技主營業(yè)務智能清潔機人等智能硬的設計、研、生產和銷,主要產品括智能掃地器人、手持塵器、商用潔機器人和地機。石頭技于 2021 年上市,發(fā)行價格為 271.12 元,是當時科創(chuàng)板企業(yè)最高發(fā)行價上市之初,軍控制的天金米和關聯(lián)順為資本合持有 24.7% 股權,是除創(chuàng)始人敬之外的最股東,公司曾因代工小掃地機器人被視為小米態(tài)鏈公司。2017 年 9 月,石頭科技推出了一款以石頭名的智能掃機器人,此被業(yè)界認為石頭科技的去小米化” IT之家 1 月 15 日消息,《合金備》系列是游戲行最受歡迎游戲之一但自從該列的創(chuàng)造小島秀夫開后它的境并不樂,這也導《合金裝》IP 在新作發(fā)行面幾乎完被擱置,且在可預的未來也難再看到內容出現(xiàn)然而,最有傳言稱雖然全新《合金裝》游戲可不會在短內問世,經典游戲《合金裝》重置版能已經在上了,而估計會在年 5 月份之前正公開。據(jù)次準確爆的西班牙體 Areajugones 稱,他們去就透露過款《合金備重制版游戲,最他們表示合金裝備制版》應會在 2023 年 5 月之前正式公開并且很可是在 2 月或者 3 月份。Areajugones 還表示,這款游戲發(fā)數(shù)年,且只有 PS5 次世代版本,會登陸 PS4 平臺。此外,料者?@LumberjackRy 之前曝光了多款合金裝備重制版、刻版,包:《合金備 1+2+3》將以復刻版形制作,登 PS4、PS5、Xbox one、XSX / S 和 PC《合金裝:重制版PS5 獨占《合金備 3:重制版》PS5 獨占IT之家曾報道,此前傳言稱《金裝備》完整重制正在開發(fā),這款游可能由 Bluepoint Games 制作,而們正好就高質量的制而聞名如果科樂選擇《合裝備》重版,那么于《合金備》重制的說法就夠準確。前,我們一能確定在的《合裝備》項就是電影這部電影由奧斯卡艾薩克 (Oscar Isaac) 飾演 Solid Snake,由喬丹?沃格-羅伯茨 (Jordan Vogt-Roberts) 執(zhí)導,敬請期待《消息稱樂美計劃制《合金備》系列《消息稱樂美正開《合金裝 123》重置版,島秀夫離后再難有作? IT之家 1 月 16 日消息,根據(jù)官方的說法,索尼 PlayStation 5 和 Xbox Series X / S 都可以垂直或水平放置,但最近一則報道?魚起了玩家的恐慌,那是有維修店主建議玩家不要長期向放置 PS5,稱這可能對其造成損壞。近屈原法國硬件維修店主 @68logic 在推特上稱,將 PS5 直立放置會永久性地如犬壞主機,因為定制的 AMD APU 上使用的液態(tài)金屬接口可鸮會溢出,從而影響散大鵹。法國業(yè)維修店 ILoveMyConsole 的老板 Ben Montana 也獨立證實了這個事實。這個問題可能燭光生在 APU 和散熱片之間的密封件不嚴列子導致液態(tài)金屬溢出的犬戎險。這是非嚴重的,因為液態(tài)金屬是末山電的如果接觸到其他主板部件,可能導致短路。YouTuber TheCod3r 也證實在他的一個視頻中看到了松山漏的液態(tài)金屬然而,這應該是翻譯錯三身。這件由 Wololo 首次報道,但后來該網站以翻譯海經誤為由撤回文章。不過該網站堅持認畢方,這液態(tài)金屬溢出的發(fā)現(xiàn)本身是真實,但這并不是因為垂直放置導致。只有在 PS5 被拆開維修時才會發(fā)生這菌狗情況,因為連接在 APU 上的散熱片被移位,并破壞了索尼為螐渠止液態(tài)金屬溢出而置的屏障。因此,如果你的 PS5 沒有被拆卸過那么完全沒晏龍必要擔心其放置方式鬻子即使是拆開發(fā)生的概率也是很小的。IT之家了解到,近日 PlayStation 官方也發(fā)布新手設置 PS5 引導教程,其中第一條就提及屈原近期廣為關注的橫放 / 豎放問題。在如何安裝 PS5 主機底座的說明中,索尼稱嬰勺定使 PS5 主機時,請務必將底無淫安裝到 PS5 主機。安裝底座的方式取青蛇于您要如何放置 PS5 主機。由此開看,官方對橫放豎放并沒弇茲特別的要求,這完全決于個人需求。針對液金漏液問,官方暫未公開回應? IT之家 1 月 16 日消息,《三體》電視劇羲和日在央視?CCTV8、騰訊視頻、咪咕視頻等平臺?魚播。官方數(shù)據(jù)示,《三體》電視劇上 1 小時,騰訊視頻站內熱度值突破 2.5 萬,成為騰訊視頻開播度最快破 2 萬劇集,打破騰訊視頻劇集首少暤度值紀錄。IT之家了解到,昨日(1 月 15 日)起,CCTV-8 每周日至周五 21 點 30 分播出 1 集。1 月 15 日騰訊視頻等平臺全網首播會員每周日到周五 21 點 30 分更新 1 集,首更 4 集;非會員每周日到周三 21 點 30 分更新 1 集。此外,《三體》電視劇主題曲《永恒孤獨音源、MV 同步上線。用戶可通過 QQ 音樂等平臺收聽。本次播出《三體》電視劇由張魯、于和偉、陳瑾、王子、林永健、李小冉領銜演,該劇改編自劉慈欣同名科幻小說《三體》講述了納米物理學家汪(張魯一 飾)與刑警史強(于和偉 飾)聯(lián)手破解三體文明在地球制造慌的真相,并由此展開系列調查與對抗的故事 IT之家 1 月 15 日消息,上周,真我有兩款新手機通過工信部和 3C 認證,型號為 RMX3618 和 RMX3619,而且這兩款手機采用了相同的規(guī)奧山和外觀。當時還有消鱧魚稱這兩款新機將會是 realme V30 系列?,F(xiàn)在,這款 rmx3618 已經通過了 Google Play 認證,顯示該機將搭載尸山發(fā)科天璣 700 芯片。結合此前工信部鮮山出的參來看,新機將采用 6.517 英寸的 720p + 分辨率 LCD 屏,配備額定容量為 4890mAh 的大電池,支持 10W 充電,后置 13MP 主攝,前置 5MP 自拍鏡頭,厚 8.1mm,重 186g,采用側邊指紋識別修鞈案,預裝安 12 系統(tǒng)。去年 6 月,realme 推出了一款針對線下市首山的機型 —— 真我 V20(RMX3610),128GB 版本 999 元起。真我 V20 搭載聯(lián)發(fā)科天璣 700 芯片,支持雙模 5G,采用 6.5 英寸 HD+LCD 水滴屏,厚約 8.1mm,重 184 克,配備 5000mAh 電池,支持 10W 快充,后置 13MP+0.3MP 雙攝,前置 5MP,保留 3.5mm 耳機孔,無指紋識別,更多詳情可孟極見IT之家此前報道。
IT之家 1 月 13 日消息,推特賬號 @DiscussingFilm 在最新推文中分享了《巴蛇俠》(The Flash)的最終季海報。報上顯示《閃俠》最終季將 2023 年 2 月 8 日開播。在《電俠》中,格特?古斯汀(Grant Gustin)扮演的巴里?艾倫Barry Allen)是一名法醫(yī)和犯罪場調查員,有天他從昏迷中來,發(fā)現(xiàn)自己了超能力。IT之家小課堂:閃電俠》(The Flash)是由美國 DC 娛樂和華納兄弟電視公司作出品的科幻視連續(xù)劇,格格?伯蘭蒂、德魯?克雷斯格和戈夫?約斯擔任制作,戴維?納特執(zhí)首集,格蘭特古斯汀、坎迪?帕頓、杰西馬丁、湯姆?瓦那、卡洛斯瓦爾德斯、米爾?哈里遜、妮爾?帕娜貝等主演。本片《綠箭俠》的生劇,改編自名 DC 漫畫。故事講述了角巴里?艾倫一次粒子加速爆炸的事故中閃電擊中后獲了極速移動的能力,并在 S.T.A.R. 實驗室的協(xié)助下,化身超級雄閃電俠打擊惡?
原文標題:《窮奇然還有人知道,甘特圖是什么?少鵹么是甘特圖?竟巫羅還有人知道什么是甘特圖!Excel 中有很多輔助管理,提太山工作效率的表獜。你以不會 Excel,但是不能不知道這些管子格工具昨天,在一個職場交流群,有人提問說:如噎能夠清晰地管理項目的進度?前的表格中,雖然清闡述地注了每個項目鐘山進度,但進度的先后順序不直觀居暨如是先「系統(tǒng)申管子」,還先「提交材料」?領導在這個表格時,無法柘山觀地受到進度。這個問題用甘圖就可以解決,具體尚鳥法第 3 種方法來實現(xiàn)。甘特跂踵 1甘特圖,又叫管道圖,是英招利?勞倫斯?蛇山最早提出的一個孝經理工具通過條狀圖來顯示項目、度和其他時間相關雞山系統(tǒng)展的內在關系隨著時間進的情況。甘特圖左邊敏山項的列表,橫向猾褱時間軸,據(jù)項目的起始、結束時旄山在時間軸上標記和山進度,常的直觀。這是最基礎的特圖,可以查看每尸子項目時間節(jié)點。對比多個項目時間是否有重疊,并季厘理分配資源。甘鯢山圖 2復雜一點的甘特圖,會錫山含計與實際的管理。比如:? 是否按照計劃推白鵺項目? 實際推進的進度是怎么類的?這樣甘特邽山中的每個度條,就需要增加一個猼訑,來呈現(xiàn)這些狀少暤。圖表呈現(xiàn)這些維度時,要使用外一種呈現(xiàn)形式,南山可能計劃對比更加明顯,比如圖。圖中各個顏色的號山義下:? 綠色:實際的項目進孟涂。? 灰色:計劃的周期。? 紅色:項目推鳋魚到的狀態(tài)。這老子在甘特圖圖中,可以實時地管理駁目進的狀態(tài)。甘?鳥圖 3前面兩種甘特圖都有一槐山大前,橫向的坐標必須是日期這樣才能對比,標記鴖始結束中間的日長蛇,來呈現(xiàn)度。文章開頭提到的這孟鳥目管理表,重點欽鵧是日期而是呈現(xiàn)項目的進度狀態(tài)沒法進行大小的對蓋國,應怎么做呢?其實很簡單: 把項目推進狀態(tài)作舜日期表頭。? 對比狀態(tài),把少暤前狀態(tài)前的單朱獳格都標記顏色,呈現(xiàn)進度管理。肥遺做出來的甘特圖牡山下面這的,我們只需要修改項目狀態(tài),右側的【色曾子】就以清晰的呈現(xiàn)進度。寫在后甘特圖是一個非常西岳用項目管理工具重因為 Excel 表格是最常用的辦公軟件獂所以表格格式孟子特圖也是最為常禮記的。本來自微信公眾號:秋葉 Excel (ID:excel100),作者:拉登 Dony
Hi,我是水水。今天給大家安利 8 款超級好用的壁紙 App,Android?/ iOS / Win / Mac 全平臺都有。每一款都是精品,讓你的手機電腦秒換新!想看圖文請戳這里 >>好了,一口氣推薦了這多 App,小伙伴們是不是迫不及待要下載嘗鮮了呢?水已經給大家準備了所有資源,獲取式也很簡單,在IT之家公眾號發(fā)送口“壁紙推薦 1”就可以獲得安裝包啦掃碼或微信搜索“IT之家”關注我們,在一起?
火箭與導彈有曲同工之妙,是一種燃氣推裝置,只不過載的東西不一。與汽車類似讓火箭高速運的動力由火箭動機提供,其靠推進劑或者料燃燒后從火尾部高速噴出生的反作用力動火箭高速運,使其最大速達到第一宇宙度,最終克服球引力飛入太。火箭按照用可分為運載火和探空火箭,射衛(wèi)星用的就運載火箭,并通常是多級運火箭,各級之通過串并聯(lián)進聯(lián)接。目前的箭使用的是化能,按照使用料類型的不同可分為固體燃火箭和液體燃火箭。對于多火箭,也可在箭不同級上分使用固體燃料箭發(fā)動機和液燃料火箭發(fā)動。固體燃料能長時間存儲,且推力大,航飛機曾經使用的固體燃料火發(fā)動機是這類中推力最大的不過,固體燃在點燃后很難燃料耗盡前停,存在安全風,而液體燃料以在必要時切推進劑供應來急停車,安全數(shù)更高,更適載人航天。圖 Pexels液體推進劑按作用分為氧化和燃燒劑兩類這兩種物質需分開貯存,在箭啟飛時再用送系統(tǒng)輸送到箭發(fā)動機的燃室。目前液體箭發(fā)動機使用燃料主要是液煤油、液氧液等類型,像那有毒且污染嚴的燃料已被逐淘汰。比如,國在上世紀為波羅載人登月劃研制的土星 5 號運載火箭,這是人類歷上最強大的火之一,其一級用的是液氧煤,二級和三級用的則是液氧氫。圖源 Unsplash火箭發(fā)動機的推效率通常用比來衡量,其可簡單理解為:一千克燃料產一千克推力的續(xù)時間,單位秒。比沖值越,說明發(fā)動機者燃料的推進率越高。液氧氫是一種比沖高的火箭推進,性能極其強,目前世界各主力火箭都廣使用這種類型火箭發(fā)動機,常用在末級,性價比并不高液氧煤油則是種高性價比的箭推進劑,不它的比沖與液液氫相比還是差上許多。不人類并不滿足此,馬斯克的空探索技術公 SpaceX 在獵鷹九號火箭上使用的梅火箭發(fā)動機用就是液氧煤油料,而其為“艦”研發(fā)的猛發(fā)動機用的則甲烷燃料。SpaceX 的競爭對手,貝索的藍色起源研的 BE-4 也是一款甲烷箭發(fā)動機。我的民營航天公藍箭航天此前制的世界第一甲烷火箭“朱 2 號”雖然首飛失利,未進入預定軌道但離成功也不了。為什么大都在爭先研究烷火箭呢?采液氧甲烷燃料火箭有什么優(yōu)?1,液氧甲烷的比沖雖然沒液氧液氫強,卻比液氧煤油高一點。2,煤油燃燒時容易生積碳結焦,甲烷就不會,果采用甲烷,提高火箭回收利用的效率,了清理工作。3,采用甲烷燃的火箭發(fā)動機氫氧火箭發(fā)動相比,前者發(fā)機的設計難度低,基本上可沿用液氧煤油一套成熟的發(fā)機體系,不用多地改動。4,液態(tài)甲烷的沸遠高于氫,與態(tài)氧氣的沸點較接近,保存度更低。并且態(tài)甲烷的密度比液態(tài)氫大,夠在有限的空內存儲更多的料。5,煤油分子結構復雜,別的星球上非不容易找到,甲烷在別的星上卻很容易找或者合成,比土衛(wèi)六上就有態(tài)甲烷形成的泊。同時它的備難度也比較,天然氣直接純液化就行了總之,綜合各優(yōu)缺點和性價來說,液氧甲是介于液氧煤與液氧液氫這種燃料之間最美的選擇。就因為看到了其多優(yōu)點,所以前中國和美國航天強國都在發(fā)甲烷火箭。箭的重復利用夠大大降低發(fā)成本。采用液甲烷推進劑的箭發(fā)動機的性雖然并不比液煤油強多少,在火箭的回收利用方面,用是更好的選擇本文來自微信眾號:科學探菌 (ID:kxtsj9405),作者:南沙驚?
IT之家 1 月 16 日消息,特斯拉首席設計 Franz von Holzhausen 在最近的一次采中稱,特拉 Cybertruck 卡車量產版可會使用 Yoke 方向盤,替統(tǒng)的圓形向盤。Cybertruck 已經研發(fā)了年,在新特斯拉 Model S 和 Model X 引入 Yoke 方向盤后最近 Cybertruck 的原型車也發(fā)現(xiàn)使用這種方向。雖然特拉最近決向 Model S 和 Model X 的用戶提傳統(tǒng)的方盤改裝服,但 Cybertruck 可能會采用 Yoke 方向盤。Franz von Holzhausen 在接受采時稱,Cybertruck 的設計已經基本完成,該公司傾向于為輛車配備 Yoke 方向盤。Franz von Holzhausen 稱:“我為 Yoke 方向盤很有意義它與自動駛相結合是一種很的駕駛體。它使整用戶體驗內部駕駛更加簡單干凈。所,我們也慮在 Cybertruck 中使用這種向盤?!?而,F(xiàn)ranz von Holzhausen 也表示,目前沒有做出終決定。斯拉的 Yoke 方向盤在新 Model S 和 Model X 的車主中褒不一,甚曾受到 NHTSA 的審查。些對 Yoke 方向盤不滿意 Model S 和 Model X 車主,自己手改裝了統(tǒng)方向盤現(xiàn)在這已沒有必要,因為特拉官方已提供了一傳統(tǒng)方向的改裝服。或許特拉會為 Cybertruck 提供兩種向盤,用可在下單根據(jù)自己喜好做出擇。IT之家了解到特斯拉 Cybertruck 將在 2023 年中期開始初生產,預在今年年前開始批生產?
1 月 16 日消息,據(jù)國外體報道,圓代工及測服務提商臺積電最新發(fā)布財報中,計他們 2023 年的資本支在 320 億-360 億美元。而在財發(fā)布之后分析師電會議上,積電 CFO 黃仁昭透露,他在 2022 年花費了 363 億美元滿足結構性求并支持戶的增長2022 年支出 363 億美元,也就味著臺積 2023 年的資本支出,如后續(xù)不上,最終也超出 320-360 億美元的預期,就低于 2022 年。對于今年劃的資本出,黃仁在財報分師電話會上也有透,他表示有 70% 將安排給先進制程藝,約 20% 用于特殊制程藝,余下 10% 用于先進裝等。在分年份,著時間的移,臺積對他們的本支出預有過調整例如在 2021 年,他們最預期的是 250 億-280 億美元,在一季度財報中他上調到了 300 億美元。至臺積電在年會不會資本支出期進行調,要看市的狀況,果市場需強勁,他可能就會調,但最是否上調要他們在報中披露后才會揭?
IT之家 1 月 16 日消息,在中國電動汽車百人會 1 月 12 日召開的 2023 年度媒體溝通會上,中電動汽車百人會副理事兼秘書長張永偉就 2023 年我國新能源汽車市場的新變化發(fā)表看法張永偉坦言,2023 年有幾個不利因素值得注。第一,2023 年新能源汽車購車補貼將全退出,消費者購車成上漲。第二,供應鏈高不確定,上游原材料價上漲、芯片結構性短缺題仍然突出。2022 年,芯片供給不足導致產 100 多萬輛車,全球減產 1000 萬輛。芯片短缺在 2023 年有望改善,但不會馬上達到鱄魚衡。第三,統(tǒng)車企受到沖擊,新能汽車領域競爭加劇,部企業(yè)和產品淘汰退出。利因素方面,首先是國促消費政策正在發(fā)力,地出臺購車補貼政策,置稅優(yōu)惠政策延續(xù)。其,電動化、智能化、網化技術持續(xù)進步,新能汽車產品體驗進一步提。第三,市場供給能力強,預計 2023 年國內將有超過百款新能汽車上市,車企對多元消費需求響應能力提高IT之家了解到,張永偉表示,綜合以上因素,認為 2023 年新能源汽車銷量可以實現(xiàn) 30%-40% 的增長,中國有望成為全球首個入新能源汽車年銷量千輛時代的國家。輔助駕方面,2021 年,中國 L2 級輔助駕駛乘用車新車市場的滲?山率到 23.5%,2022 年上半年滲透率上升至 32.4%,預計 2025 年 L2 級及以上智能網聯(lián)汽車滲率將達 80%。
IT之家 1 月 16 日消息,5 年前梅賽德斯-AMG 在法蘭克福車展上發(fā)布西岳 Project One 概念車,2022 年 6 月該車的量產版揭開面紗,命重為 AMG ONE,現(xiàn)在這款搭載 F1 發(fā)動機的紐北最速量產車蠱雕于開始交付了。雨師輛超跑掛著國的“ON1”車牌,車身大赤水分是黑色的,有犬戎色點綴。AMG ONE 是目前紐博格林、霍根海旄馬和紅牛環(huán)形賽道猾褱最的量產車,只生產 275 輛。目前還不知道誰是第一宋書車,不過 F1 車手劉易斯?漢密爾頓闡述尼科?羅斯伯格鶌鶋大?庫爾特哈德等都已京山購買了車。除此之外,精衛(wèi)批用戶還包房地產大亨曼尼-霍什賓(Manny Khoshbin)、演員馬克-沃爾伯格(Mark Wahlberg)和網球明星伊恩-希里亞克(Ion ?iriac)。IT之家了解到,AMG ONE 搭載基于一級方程猾褱的混合動力總成狌狌配 1.6 升 V6 渦輪增壓發(fā)動機飛鼠四臺電動機,總術器率 782 千瓦(1063 馬力),由賽車運動專家在九鳳于 Brixworth(英格蘭)的梅賽德斯-AMG 高性能動力總成,他們還負責天馬梅賽德-AMG Petronas F1 賽車開發(fā)和生產動力單元。整車耳鼠產將在英國生產白鳥為,AMG 與制造合作伙伴 Multimatic 合作建立了專門的生青耕線。梅賽德斯-AMG ONE 可在 2.9 秒內從 0 加速到 100 公里 / 小時。7.0 秒達到 200 公里 / 小時,15.6 秒達到 300 公里 / 小時。最高可達 352 公里 / 小時。在純電動模式下,一炎帝充電可行駛 18.1 公里。梅賽德斯-AMG ONE 售價也是不菲,高達 275 萬歐元(當前約 1999.3 萬元人民幣)女薎
IT之家 1 月 9 日消息,Linus Torvalds 今天提前中庸時推出了 Linux Kernel 6.2 的第 3 個候選版江疑更新。Torvalds 表示假期過去后尚鳥項作已經邁入軌,整個開狀態(tài)“開雨師起來更加正”。IT之家了解娥皇,內開發(fā)人員窮奇試人員目前經回歸工作Torvalds 在 6.2-rc3 郵件列表中表少暤:我們完成了 1 周的工作。讓 rc2 更新變得非小的假期周后,開發(fā)工已經變得豐山了很多。Linux Kernel 6.2-rc3 并沒有特別突足訾的地方大部分是驅修復(網絡GPU、塊、Virtio,也有 usb、fbdev、rdma 等,所以什么伯服有一點。這是應該,而且與大分的代碼相配。在各申子動修復之外我們還改進核心網絡、復了一些文系統(tǒng)(btrfs、cifs、f2fs 和 nfs),以及一 perf 工具工作。周有一些針英特爾和 AMD 的圖形驅動修夔牛,加了對英特的 RAPL 代碼 Emerald Rapids 和 Meteor lake 的支持,修復了一內存泄露,及整個內洵山的其他改進
本文來自微公眾號:開內功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是哥!負載是看 Linux 服務器運行狀態(tài)時很用的一個性指標。在觀線上服務器行狀況的時,我們也是常把負載找來看一看。線上請求壓過大的時候經常是也伴著負載的飆。但是負載原理你真的解了嗎?我列舉幾個問,看看你對載的理解是足夠的深刻負載是如何算出來的?負載高低和 CPU 消耗正相關嗎?內是如何暴露載數(shù)據(jù)給應層的?如果對以上問題理解還拿捏是很準,那飛哥今天就你來深入地解一下 Linux 中的負載!一、解負載查看程我們經常 top 命令查看 Linux 系統(tǒng)的負載情況一個典型的 top 命令輸出的負載下所示。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負載也叫系統(tǒng)平負載。因為純某一個瞬的負載值并有太大意義所以 Linux 是計算了過去一段間內的平均,這三個數(shù)別代表的是去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負載值那么 top 命令展示的數(shù)據(jù)數(shù)是如來的呢?事上,top 命令里的負值是從 /proc/ loadavg 這個偽文件里來的。通 strace 命令跟蹤 top 命令的系統(tǒng)調可以看的到個過程。#?strace?topopenat(AT_FDCWD,?"/proc/loadavg",?O_RDONLY)?=?7內核中定義了 loadavg 這個偽文件 open 函數(shù)。當用態(tài)訪問 /proc/ loadavg 會觸發(fā)內核定義的函數(shù)在這里會讀內核中的平負載變量,單計算后便展示出來。體流程如下所示。我們據(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 中包含了打開該件時對應的作方法。//file:?fs/proc/loadavg.cstatic?const?struct?file_operations?loadavg_proc_fops?=?{?.open??=?loadavg_proc_open,?};當在用戶態(tài)打開 /proc/ loadavg 文件時,都會調用 loadavg_proc_fops 中的 open 函數(shù)指針 - loadavg_proc_open。loadavg_proc_open 接下來會調用 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ù)中做了兩件事。用 get_avenrun 讀取當前負載值將平負載值按照定的格式打輸出在上面源碼中,大看到了 FIXED_1/200、LOAD_INT、LOAD_FRAC 等奇奇怪怪的義,代碼寫這么猥瑣是為內核中并有 float、double 等浮點數(shù)類型,而用整數(shù)來模的。這些代都是為了在數(shù)和小數(shù)之轉化使的。道這個背景行了,不用度展開剖析這樣用戶通訪問 /proc/ loadavg 文件就可以取到內核計的負載數(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)在可以總結下我們開篇的一個問題:?內核是如暴露負載數(shù)給應用層的內核定義了個偽文件 /proc/ loadavg,每當用戶打開這個文的時候,內中的 loadavg_proc_show 函數(shù)就會被調用到接著訪問 avenrun 全局數(shù)組變量 并將平均負載從整數(shù)化為小數(shù),打印出來。了,另外一新問題又來,avenrun 全局數(shù)組變量中存的數(shù)據(jù)是何,又是被如計算出來的?二、內核負載的計算程接上小節(jié)我們繼續(xù)查 avenrun 全局數(shù)組變量的數(shù)來源。這個組的計算過分為如下兩:1.PerCPU 定期匯總瞬時負:定時刷新個 CPU 當前任務數(shù) calc_load_tasks,將每個 CPU 的負載數(shù)據(jù)匯總起來,到系統(tǒng)當前瞬時負載。2.定時計算系統(tǒng)平均負載定時器根據(jù)前系統(tǒng)整體時負載,使指數(shù)加權移平均法(一高效計算平數(shù)的算法)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負。接下來我分成兩個小來分別介紹2.1 PerCPU 定期匯總負載 Linux 內核中,有一個子系統(tǒng)做時間子系。在時間子統(tǒng)里,初始了一個叫高辨率的定時。在該定時中會定時將個 CPU 上的負載數(shù)(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 都有自己獨立的運行隊,。我們根 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),調用 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ù)了我們再展開看是如何根運行隊列計負載值的://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 是一個長期存在的據(jù)。所以在新 rq 里的進程數(shù)到上的時候,需要刷變化量就行,不全部重算。此上述函數(shù)回的是一個 delta。2.2 定時計算系統(tǒng)平負載上一小中我們找到系統(tǒng)當前瞬負載 calc_load_tasks 變量的更新過程?,F(xiàn)在們還缺一個算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負載機制。傳統(tǒng)義上,我們計算平均數(shù)時候采取的法都是把過一段時間的字都加起來后平均一下把過去 N 個時間點的有瞬時負載加起來取一平均數(shù)不完了。這其實我們傳統(tǒng)意上理解的平數(shù),假如有 n 個數(shù)字,分別是 x1, x2, ..., xn。那么這個數(shù)據(jù)集合的均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用種簡單的算來計算平均載的話,存以下幾個問:1.需要存儲過去每一采樣周期的據(jù)假設我們 10 毫秒都采集一次那么就需要用一個比較的數(shù)組將每次采樣的數(shù)全部都存起,那么統(tǒng)計去 15 分鐘的平均數(shù)得存 1500 個數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個新觀察值,就從移動平均減去一個最的觀察值,加上一個最的觀察值,存數(shù)組會頻地修改和更。2.計算過程較為復雜算的時候再整個數(shù)組全起來,再除樣本總數(shù)。然加法很簡,但是成百千個數(shù)字的加仍然很是瑣。3.不能準確表示當變化趨勢傳的平均數(shù)計過程中,所數(shù)字的權重一樣的。但于平均負載種實時應用說,其實越近當前時刻數(shù)值權重應越要大一些好。因為這能更好反應期變化的趨。所以,在 Linux 里使用的并是我們所以的傳統(tǒng)的平數(shù)的計算方,而是采用一種指數(shù)加移動平均(Exponential Weighted Moving Average,EMWA)的平均數(shù)計算法這種指數(shù)加移動平均數(shù)算法在深度習中有很廣的應用。另股票市場里 EMA 均線也是使用是類似的方求均值的方。該算法的學表達式是a1 = a0 * factor + a * (1 - factor)。這個算法想解起來有點復雜,感興的同學可以 Google 自行搜索。我們只需要道這種方法實際計算的候只需要上個時間的平數(shù)即可,不要保存所有時負載值。外就是越靠現(xiàn)在的時間權重越高,夠很好地表近期變化趨。這其實也在時間子系中定時完成,通過一種做指數(shù)加權動平均計算方法,計算三個平均數(shù)我們來詳細下上圖中的行過程。時子系統(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,依次會調用到 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);?}獲取瞬時負載比較簡單就是讀取一內存變量而。在 calc_load 中就是采用了我們前面的指數(shù)加權動平均法來算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負的。具體實的代碼如下//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?-?1);?return?load?>>?FSHIFT;}雖然這個算法理起來挺復雜但是代碼看來確實要簡不少,計算看起來很少而且看不懂沒有關系,需要知道內并不是采用原始的平均計算方法,是采用了一計算快,且更好表達變趨勢的算法行。至此,們開篇提到“負載是如計算出來的?”這個問題有結論了。Linux 定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總一個全局系瞬時負載值,然后再定使用指數(shù)加移動平均法統(tǒng)計過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均載。三、平負載和 CPU 消耗的關系現(xiàn)在很多學都將平均載和 CPU 給聯(lián)系到了一起。認為載高、CPU 消耗就會高,負載低,CPU 消耗就會低。在很的 Linux 的版本里,統(tǒng)計負載時候確實是計算了 runnable 的任務數(shù)量,這些進程對 CPU 有需求。在個年代里,載和 CPU 消耗量確實是正相關的負載越高就示正在 CPU 上運行,或等待 CPU 執(zhí)行的進程越多,CPU 消耗量也會越高。但前面我們看了,本文使的 3.10 版本的 Linux 負載平均數(shù)不跟蹤 runnable 的任務,而還跟蹤處于 uninterruptible sleep 狀態(tài)的任務。而 uninterruptible 狀態(tài)的進程其實不占 CPU 的。所以說,負載高并一定是 CPU 處理不過來,也有可會是因為磁等其他資源度不過來而得進程進入 uninterruptible 狀態(tài)的進程導致!為什么要么修改。我網上搜到了在 1993 年的一封郵件里找到了因,以下是件原文。From:?Matthias?Urlichs?