週刊? Linux Kernel Patch Watch 20180504

前書き

今週もなんとか小ネタを集めて。。。

今週のpatch

IRQのon/off切り替わり時のトレースポイントでパフォーマンス劣化してた

[PATCH RFC] tracepoint: Introduce tracepoint callbacks executing with preempt onです。hackbenchで〜10%のパフォーマンス劣化があったということです。RCUからSRCUを使うような修正になっています。

kdumpで大きなサイズのメモリを確保する時の処理を修正

[PATCH 1/2] kdump/x86: crashkernel=X try to reserve below 896M first then below 4G and MAXMEMです。crashkernelオプションに指定するメモリサイズが〜896MB以下のアドレス範囲から取得できなかった場合の処理が追加されています。内容としては〜896MB以下から取得できなければ〜4GBの範囲から、それでもダメならMAXMEMの範囲まで含めて確保しにいくようになってます。

GCCデバッグ向けの最適化オプションを使うようにする

[PATCH 0/5] kernel hacking: GCC optimization for debug experience (-Og)です。GCCの最適化オプション(-O2とか-Os)に-Ogというのもあって、ドキュメントにはOptimize debugging experience. -Og enables optimizations that do not interfere with debugging. と説明されています。これを使うようにしては?というpatchですね。やはり多少のパフォーマンス劣化はあるみたいです。

boot処理の早い段階でvsprintf()の%pでhash値を出せるようにする

[PATCH 0/3] enable early printing of hashed pointersです。boot処理の早い段階でフォーマット指定子の%pが使われるときに乱数のキーが決まっていない場合は、hash地ではなくて(ptrval)という文字列になるけど、これはデバッグしにくいのでカーネルコマンドラインオプションにキーを渡せるようにしてはどうかというpatchです。

lib/vsprintf.cにあるptr_to_id()の以下の部分が文字列返しているとこです。

 if (unlikely(!have_filled_random_ptr_key)) {
        spec.field_width = default_width;
        /* string length must be less than default_width */
        return string(buf, end, "(ptrval)", spec);
    }

printk()の%p系のフォーマット指定子を処理しているのはpointer()という関数です。

nanoMIPSアーキテクチャ

Introducing a nanoMIPS port for Linuxです。New MIPS I7200 Processor Core Delivers Unmatched Performance and Efficiency For Advanced LTE/5G Communications And Networking IC Designs – MIPSでアナウンスされたCPUのportingです。このCPUについてはMIPS、初のnanoMIPS命令セット対応CPUコア「I7200」 - PC Watchでも取り上げられてます。

その他

rt-testsの最新版リリース

[ANNOUNCE]rt-tests-1.3 New Devlopment version of rt-testsです。realtime:documentation:howto:tools:rt-tests [Linux Foundation Wiki]に説明があります。hackbenchとかのテストツールのコレクションですかね。fedoradebianubuntuなどはパッケージもあります。

あとがき

(´-`).。oO(hash値のアドレスを使ってうまくデバッグするのはどうやるんだろ?

例解UNIX/Linuxプログラミング教室: システムコールを使いこなすための12講

例解UNIX/Linuxプログラミング教室: システムコールを使いこなすための12講