Linux concurrency - 3: architecture atomic instruction

我們透過變數來維護程式的狀態及流程,SMP 下同時多個 core 共同存取 share data 時 ,程式設計上除了重入性以及可能被亂序執行的考量外,另一個就是存取時需確保操作是 atomic:表示說我們對於某個共享記憶體的操作,相對於系統的其他部分來說是完整完成 不可中斷的 [10][11] 。包含 load/store atomic 與 Read-Modify-Write(RMW) atomic。 我們可以從 [11] 的例子對於 64-bit share memory 的處理很明顯的了解這個概念,以及 可能發生的問題(race condition)。

Linux concurrency - 2: Barrier

現在的 Compiler 與 CPU 為了最佳化執行效能,必要時可能重新安排執行程式的流程與順 序。從 [1] 中我們可以大略認識幾個可能造成存取亂序的軟硬體最佳化,

Linux concurrency - 1: 簡介

kernel 本身就是個 multithread concurrent 的系統。在 沒有適當保護下,存取共享資 源很容易發生 race condition。共享資源包含周邊IO及共用的變數資料結構等。可透過適 當的 synchronization 機制提供 critical section 來保護資源的存取。

Eudyptula Challenge 心得

The Eudyptula Challenge is a series of programming exercises for the Linux
kernel, that start from a very basic "Hello world" kernel module, moving on up
in complexity to getting patches accepted into the main Linux kernel source
tree.

Linux CPU mask

In Linux kernel, we can see some CPU masks are set during SMP bootup procedure. According to include/linux/cpumask.h, there are different kinds of masks,

關於smp_load_acquire()/smp_store_release()

最近 trace linux kernel 時看到一對 function smp_load_acquire()smp_store_release(), 一直很納悶這跟 read/write memory barrier 有什麼不同。

Thinking Methodically about Performance 整理

原作來源:https://queue.acm.org/detail.cfm?id=2413037

閱讀assembly code

有朋友問看 assembly 時遇到一些奇怪的符號如%或是=時,哪裏有文件可以參考這些語法? 後來覺得東西太雜了,乾脆寫一篇心得文好了!

Setup github page

有朋友在問怎麼轉移到 github page ,本來 logdwon 用得好好的,只是測一下 github page , 沒想到要打包 logdown 時發現功能不能用,乾脆怒轉到github來。

請求翻譯心得文

最近看了Brendan Gregg在ACM Queue上發表的Thinking Methodically about Performance後, 作者提出了完整而系統化的方法,且看起來對於效能分析的問題更有效率。回頭 想想以前做效能分析的經驗,看起來似乎可以套用。 一時興奮之下想做翻譯,一方面強化記憶, 一方面練習一下英文。