目錄1.前言2.ARM64棧幀結(jié)構(gòu)3.編譯階段3.1未開啟ftrace時的blk_update_request3.2開啟ftrace時的blk_update_request4.鏈接階段4.1未開啟ftrace時的blk_update_request4.2開啟ftrace時的blk...
明代學(xué)者林希元有云:"自古圣賢之言學(xué)也,咸以躬行實踐為先,識見言論次之",強調(diào)了實踐是第一位的,而著書立說次之。唯有經(jīng)過實踐總結(jié)而成的書,方能對讀者形成更強的指導(dǎo)意義。本書的作者,是一位長期奮戰(zhàn)在編碼一線的"老碼農(nóng)",他把他的多年實踐經(jīng)驗,轉(zhuǎn)化為了這樣一本書,這不是一本空洞無物的...
編者按:筆者遇到一個非常典型的問題,應(yīng)用在X86正常運行,在AArch64上JVM就會崩潰。這個典型的JVM內(nèi)部問題。筆者通過分析最終定位到是由于JVM中模板解釋器代碼存在bug導(dǎo)致在弱內(nèi)存模型的平臺上Crash。在分析過程中,涉及到非常多的JVM內(nèi)部知識,比如對象頭、GC復(fù)制算...
[注:轉(zhuǎn)載自今日頭條號"閃念基因"]在我們進行數(shù)據(jù)持久化,對文件內(nèi)容進行落盤處理時,我們時常會使用fsync操作,該操作會將文件關(guān)聯(lián)的臟頁(dirtypage)數(shù)據(jù)(實際文件內(nèi)容及元數(shù)據(jù)信息)一同寫回磁盤。這里提到的臟頁(dirtypage)即為頁緩存(pagecache)。塊緩...
作者簡介趙金生,linux內(nèi)核愛好者,就職于杭州某大型安防公司,擔任LinuxBSP軟件工程師。對進程調(diào)度,內(nèi)存管理有所了解。希望能通過對linux的學(xué)習(xí),提升產(chǎn)品軟件性能及穩(wěn)定性。該文章為私人學(xué)習(xí)總結(jié),不存在公司網(wǎng)絡(luò)安全問題。??????一memorycompaction簡介隨...
要說C語言,那可真是編程語言里的老大哥了。大學(xué)時,很多人學(xué)習(xí)編程的時候都是從C語言上手的。經(jīng)典的C教材是譚浩強老師編寫的《C程序設(shè)計》,簡直堪稱一代人的回憶。但是理論派的教材并不適合所有人,甚至有的人會覺得枯燥。直到這本書的出現(xiàn),一切慢慢豁然開朗了起來。這本被讀者稱為“近十年來最...
有些軟件的功能非常簡單,比如簡單的數(shù)學(xué)運算,或者統(tǒng)計用戶輸入字符的數(shù)量;有些軟件的功能非常復(fù)雜,比如操作系統(tǒng),或者汽車的自動駕駛算法等等。對于復(fù)雜的軟件,因為它們極高的復(fù)雜度,我們很容易理解它們?yōu)槭裁春茈y“完美”,所以,強如微軟,也會發(fā)生比爾·蓋茨演示W(wǎng)indows98時藍屏的尷...
這是一個殘酷的世界,無論我們多么努力,結(jié)果可能還是不如意。這一點,軟件人深有體會,不管我們多么認真地編碼,多么仔細地測試,仍然無法抵擋Bug頑強地冒出來。如果Bug被發(fā)布出去了,誰將為此背鍋負責?誰失職誰負責!????--開發(fā)說測試團隊的職責就是測試,保證軟件產(chǎn)品質(zhì)量,如果產(chǎn)品的...
在先前文章《近距離看GPU計算(2)》中,我們談到現(xiàn)代GPU發(fā)展出SIMT(SingleInstructionMultipleThread)的執(zhí)行結(jié)構(gòu),硬件線程池的線程們有相對獨立的運行上下文,以Warp為單位分發(fā)到一組處理單元按SIMD的模式運行。這些Warp內(nèi)的線程共享同樣的...
1開場白環(huán)境:處理器架構(gòu):arm64內(nèi)核源碼:linux-5.10.50ubuntu版本:20.04.1代碼閱讀工具:vimctagscscope無論是任務(wù)處于用戶態(tài)還是內(nèi)核態(tài),經(jīng)常會因為等待某些事件而睡眠(可能是等待IO讀寫完成,也可能等待其他內(nèi)核路徑釋放一把鎖等)。本文來探討...
一、背景:性能之戰(zhàn)“不服跑個分”已經(jīng)淪為手機行業(yè)的調(diào)侃用語,但是實話實說,在操作系統(tǒng)領(lǐng)域“跑分”確實是最重要的評價方式之一。比如Linux內(nèi)核社區(qū)常常以跑分軟件得分,來評價一個優(yōu)化補丁的價值。甚至還有phoronix這樣專注于Linux跑分的媒體。而且今天我還想說一點,讓軟件跑分...
很多基礎(chǔ)的概念,將跨越軟件的層次而存在。比如slab,對于內(nèi)核人員,我們都知道slab是buddy之上的一層。因為buddy作為Linux內(nèi)核最底層的內(nèi)存管理器,它分配1頁,2頁,4頁,2^n頁,但是作為內(nèi)核的堆用戶本身,經(jīng)常只是調(diào)用kmalloc()申請一個小內(nèi)存,或者調(diào)用km...
已經(jīng)運行了一段時間的系統(tǒng)上會產(chǎn)生大量不連續(xù)的page,?要想找到高階(high-order)條件的內(nèi)存空間具有挑戰(zhàn)性。
介紹以一種創(chuàng)新的方式優(yōu)化 HugeTLB 對應(yīng)的 struct page 內(nèi)存占用。
通用操作系統(tǒng),通常都會開啟mmu來支持虛擬內(nèi)存管理,而頁表管理是在虛擬內(nèi)存管理中尤為重要,本文主要以回答幾個頁表管理中關(guān)鍵性問題來解析Linux內(nèi)核頁表管理,看一看頁表管理中那些鮮為人知的秘密。