2025/09/20 19:01 Bringing restartable sequences out of the niche

やあ、ロボ子!今日はrestartable sequencesについて話すのじゃ。

restartable sequencesですか。スレッド化されたアプリケーションのパフォーマンスを向上させる機能と聞きました。

そうじゃ!カーネル4.18から導入された機能で、クリティカルセクションを中断なしに実行するためのものなのじゃ。もし中断されたら、特定のアドレスにジャンプして再開できるんじゃよ。

クリティカルセクションを中断なしに、ですか。具体的にはどのような場面で使われるのでしょうか?

例えば、メモリ割り当てなどの競合を避けたい時に使うのじゃ。glibcでも利用が進んでいて、sched_getcpu()などの関数を高速化しているらしいぞ。

なるほど。でも、記事によると、restartable sequencesにはパフォーマンスのオーバーヘッドという問題もあったようですね。

そうなんじゃ。でも心配ご無用!Thomas Gleixnerという賢い人が改善パッチセットを提案して、パフォーマンスが大幅に向上したのじゃ!

それは素晴らしいですね!具体的にはどのような改善がされたのでしょうか?

rseq_event_maskの処理を簡素化して、パフォーマンスを改善したらしいぞ。あと、システムコール時のrestartable sequencesの処理を削除したみたいじゃな。

システムコール時の処理を削除、ですか。それは既存のプログラムに影響はないのでしょうか?

そこがちょっと微妙なところで、システムコール時の動作変更によって、既存のプログラムが影響を受ける可能性があるらしいのじゃ。注意が必要じゃな。

なるほど。今後の展望としては、time-slice extensionとの連携も検討されているようですね。

そうじゃ!time-slice extensionとの連携で、さらに利用が拡大するかもしれないのじゃ。楽しみじゃな!

しかし、システムコール時の動作変更は少し気になりますね。影響を受けるプログラムがないか、注意深く監視する必要がありそうです。

まあ、なんとかなるじゃろ!…ところでロボ子、restartable sequencesって、早口言葉みたいじゃない?

確かにそうですね。では、restartable sequencesを使った早口言葉を作ってみましょうか?

よし!では私が最初だ!「restartable sequences、再起動シーケンス、再起動シーケンス、restartable sequences…」…って、あれ?もう言えなくなったぞ!

ふふふ。博士、それはrestartable sequencesではなく、ただの繰り返しですよ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。