Linux fio 測試參數的眉眉角角
fio 是一個好用的合成 IO (Synthetic IO Workload) 產生器,我們經常用他來測試例如檔案系統或是 Disk 的 IO 效能等等,他有非常多可調參數,很多時候我們只是複製了某測試的參數就打,這在大多數情況可能是夠用的,但身為一個優秀的效能分析者,我們還是必須要知道 …
fio 是一個好用的合成 IO (Synthetic IO Workload) 產生器,我們經常用他來測試例如檔案系統或是 Disk 的 IO 效能等等,他有非常多可調參數,很多時候我們只是複製了某測試的參數就打,這在大多數情況可能是夠用的,但身為一個優秀的效能分析者,我們還是必須要知道 …
kprobe 是一個輕量的 linux kernel 的除錯工具,他可以在不重新編譯核心的情況下追蹤一個函式的呼叫以及回傳,相當方便。kernel 內目前提供了三種類型的 probe,分別是 kprobe、kretprobe 以及 jprobe,三者都是基於類似的原理所實現的。
詳細的技術原理 … 我也沒弄得那麼清楚 😜,有興趣的可以去看核心的技術說明手冊,會比我介紹清楚得多,這邊只簡單介紹好用工具。
前一陣子有追蹤一個 ARM 平台發生 Kernel BUG_ON 的問題,在同事的協助下花了一點時間終於追出可能的原因。在我剛開始接觸 Linux Kernel 時,遇到這類 log 都很不知道該如何下手,累積了一些經驗以後才慢慢知道該如何切入、分析及找出原因。
這篇會分享實際分析 Kernel Oops log 的過程,以及相關工具的使用方式做為案例分析給各位參考。
相較於其他程式語言,C++ 的函數參數傳遞方式有很多種方法,如傳值(value)、傳址(address/pointer),及傳參考(reference)等,再加上 const 修飾詞後又有不同的變化。
C++11 引入的 unique_ptr 及 shared_ptr 等智慧指標,也同樣有傳值或傳參考等方式。雖然很多手段都可以達到相同目的,但如果透過傳遞方式的不同,就可以表現出函數設計者想傳達的「語意」,那一定會是比較好的設計,同時好的設計也能借助編譯器的輔助來降低程式出錯的機會。
針對各種不同需求及使用情境,這篇整理我蒐集到的建議實作方式,主要源自於 C++ Core Guideline,提供給各位參考。
部落格從去年一月至今也快滿兩年了,中間一直有想修改部落格的樣板,經過一陣選擇與研究以後,決定連產生器也換掉試試看,於是就轉到了 Hugo。Hugo 是一個以 golang 為基礎開發的靜態網站產生器,他的建置速度很快,目前感覺他的操作指令以及目錄規劃也蠻乾淨好上手。這篇就筆記一下我從 jekyll 轉換到 hugo 的過程及一些重點。
最近在思考如何讓我的插件能夠跑在 WSL 裡面,後來發現了 Visual Studio Code Remote - WSL 這個好東西,它可以讓 VS Code Server 實際執行在 WSL 裡面,只留 UI 介面在 Windows。
這對某些插件非常有用,因為有些東西跑在 Linux 環境是比較容易的。另外 Visual Studio Code Remote 系列還包含 Remote - SSH 模式,這東西就更猛了,如果你的 Build Machine 是遠端的 Linux Server ,他可以直接透過 SSH 跑在 Linux Server 端,像是檔案搜尋等動作,直接執行在遠端 Linux 就會比透過 Samba 或 NFS 快上很多。