タグ

kernelに関するTamotsUのブックマーク (3)

  • TCP-BPF: Linuxはマイクロカーネルの夢を見るか|oraccha

    eBPFでcommit logを調べてみるといろいろと面白そうなものが出てくるな。例えば、TCP-BPF [netdev 2.2]。TCPコネクションのパラメータをBPFで操作できる。さらに最近(バージョン5.5以降)では、輻輳制御もeBPFで実装できるようになっているようだ。eBPFによりカーネルからどんどん機能を追い出してLinuxはマイクロカーネル化するのだという鼻息荒い発表も見かけるが(「eBPF - Rethinking the Linux Kernel」[QCon2020])、正直これが正しい方向性なのかよくわからない。面白いけど。 eBPFを使っているわけではないが、輻輳制御をユーザレベルで実装するという研究はいくつかある(「Restructuring Endpoint Congestion Control」 [SIGCOMM2018]、「Deploying Safe Use

    TCP-BPF: Linuxはマイクロカーネルの夢を見るか|oraccha
  • funcgraph で Linux カーネル内のボトルネックをミクロに追跡する - ablog

    perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog で Linux カーネル内のボトルネックをマクロに分析する方法を紹介しましたが*1、 strace でI/Oシステムコールのレスポンスを調べると遅く*2、 iostat の await でカーネルのブロックレイヤーのI/Oレスポンスを調べると速い場合、 システムコールインターフェースとカーネルのブロックレイヤーの中間(ファイルシステムレイヤーなど)で詰まっていると考えられます*3。 このようなケースで、1回のシステムコール発行の所要時間の内訳*4をミクロに追跡するには Brendan Gregg の funcgraph が便利です*5。 実行結果 # ./funcgraph -Htp 4511 vfs_write Tracing "vfs_write" for PID 4511...

    funcgraph で Linux カーネル内のボトルネックをミクロに追跡する - ablog
  • Linuxカーネルの時間管理 | EE Times Japan

    今回は、GNU/Linuxカーネルの機能の1つである時間管理について解説する。 バージョン2.6.15までのLinuxカーネルでは、必ずタイマー割り込みを用いて時間を管理していた。タイマー割り込みの間隔は、linux/jiffies.hというヘッダー・ファイルに定数HZの値として定義されており、設定値は100であった。この場合、1秒間に100回つまり、10msごとにタイマー割り込みが発生する。割り込み回数(tick)を記録する変数がjiffiesである。なお、32ビット環境では、HZが100の場合、497日でjiffiesの値があふれてしまう。もしHZを1000に設定した場合は50日であふれる。このため、現在のカーネルの内部ではjiffies_64という64ビットの変数を用いて割り込み回数を管理している。 カーネルの動作タイミングはタイマー割り込みによって決まる(図1)。10msごとにタイ

  • 1