Third Encore

思い出すために忘れたことたち

KernelのPGO

2022年1月1日追記:

make KCFLAGS=-fprofile-use

を実行すると、gcovを--preserve-pathオプション付きで実行した際の出力ファイル名のファイルが求められるのに/sys/kernel/debug/gcov以下のファイルは元のソースのディレクトリ構造を維持しているので、ファイル名をリネームしないとPGOが適用されない。スクリプトを書けば良いのだろうけれど現状そこまで手が回ってません。

 

Kerelのver.が変わるとやり方も変わりそうだけど、2021年12月25日時点でver. 5.16は下記の方法で出来た。

https://linuxplumbersconf.org/event/7/contributions/771/attachments/630/1193/Exploring_Profile_Guided_Optimization_of_the_Linux_Kernel.pdf

 

下記の方法でlatencyをplot。

www.osadl.org

 

1枚目がCFLAGSに-O3 -mcpuを指定しただけのもの。

f:id:third-encore:20211226205642p:plain

 

2枚目が-O3 -mcpuにPGOをかけたもの。

f:id:third-encore:20211226205644p:plain

若干だけどlatencyの値が小さくなっています。

 

Clang / LLVMでbuildするとPGO + LTOが出来るはずなんだけど、起動しないimgが出来て困っている。