原创 DEFINE_PER_CPU(struct runqueue, runqueues)宏
首先,在arch/i386/kernel/vmlinux.lds中有 /* will be freed after init */ . = ALIGN(4096); /* Init code and data */ __
原创 輕鬆理解 struct pid
1. 基本概念 每個進程控制塊都有4個有關ID、含義不同的值,內核根據它們組成了4個全局的2維的HASH表,每個進程都要鏈接到這四個不同含義的Has
原创 Linux 3.14 特性彙總
Linux內核追蹤[3.14] 用戶態死鎖檢測--UserMode lockdep 持續更新中...... 參考: 更完整的版本:https://kernelnewbies.org/Linux_3.14 所有Linux歷史版本:ht
原创 Linux內核追蹤[4.11] perf ftrace
4.11在perf中實現了一個ftrace的功能,其實就是把ftrace的功能集成在perf工具中進行顯示。由於原先操作debugfs的接口還是要操作幾個文件來配合使用的,比如: a) 設置/sys/kernel/de
原创 Linux 4.3 特性彙總
Linux內核追蹤[4.3] Ext3的終結 持續更新中...... 參考: 更完整的版本:https://kernelnewbies.org/Linux_4.3 所有Linux歷史版本:https://kernelnewb
原创 Linux內核追蹤[4.3] Ext3的終結
在4.3內核,有可能會合入一個patch:刪除ext3文件系統。由於ext3只是ext4的子集,而且從mount的接口上ext4也做了兼容,用戶可以完全不感知ext3文件系統已經被刪除了。遇到問題,maintainer會繼續支持和
原创 Linux內核追蹤[3.14] 用戶態死鎖檢測--UserMode lockdep
想必大家都用過內核態的lockdep,它有死鎖預測的功能。能夠在運行態動態地去識別一些潛在的、發生概率較小的(也許一輩子都很難碰到)死鎖風險。目前有人把它移植到了用戶,並加入到內核主線($root/tools/lib/lockde
原创 OSDI, SOSP與美國著名計算機系的調查報告
【序言】 按照USnews的分類,Computer Science被分爲四個大類:AI, Programming Language, Sy stems, Theory.。毫無疑問,Systems是這四個大類中最要緊也是最大的一個。根據ci
原创 【CGROUP】10分鐘深入理解cgroup與css之間的多對多的關係
這就是經典的cgroup與css之間的多對多關係,它們之間的聯繫依靠cg_group_link對象組織在一起,每一個css與cgroup的配對都會有一個cg_cgroup_link對象。
原创 Linux內核追蹤[4.13] Blk層的出錯處理優化
之前的版本在IO軟件棧中存在着錯誤信息不能很好地返回FS層或者用戶態APP的情況,4.13版本優化了兩個場景的錯誤處理。(參考: https://lwn.net/Articles/724307/) 一、Reportin
原创 【CGROUP】10分鐘深入理解CGROUP V1本質
本文作爲cgroup內核代碼的開篇文檔,只介紹cgroup的設計理念,不介紹具體代碼。理解了本文即理解了cgroup的核心思想,可以更容易地理解其它cgroup的源碼分析文章。文中出現的內核源碼來源於
原创 Linux內核追蹤[4.13] Linux Kernel TLS
內核的4.13版本實現了一個TLS功能(根據 RFC 5288),google員工Dave Watson受到FreeBSD的Netflix的項目啓發(FreeBSD網絡很強大啊),實現這個功能的初衷是爲了優化tls應用協議的
原创 Linux內核追蹤[4.14] 網絡報文send的ZERO-COPY(零拷貝)
需求: ZERO-COPY對於有性能要求的大數據報文的網絡應用來說是一個比較好的優化思路。在之前的內核中,ZERO-COPY只發生在sendfile、splice接口中。send接口無法做到ZERO-COPY。因此通
原创 Linux內核追蹤[4.14] X86的5級頁表管理
X86的4級頁表已經能夠管理48bit(256TB)的VA,以及64TB的PA。不過由於某些供應商發佈了超過64T的超大物理內存,因此需要實現了一個5級頁表特性來進行支持。 下面是原來4級頁表的48bitVA
原创 微內核相對於單內核優勢之我見
我認爲微內核相對於單內核上沒有明顯的技術優勢,微內核一般都宣稱有如下的技術優勢: 1. 各服務可以動態加載插入,使內核很小,減少內存。 2. 系統非常靈活。當運行一個應用程序時,只需把選定的系統服務加載到