メールを追いかけたりインターネットの情報を検索すれば出てくるのですが、ここでいくつかの疑問が生じてきます。タイムアウトにつながるのか、等々。これらの疑問について、少し掘り下げてみます。呼ばれていないと思う」とのことでした。関数が呼ばれることが予想できます。通知している関数であることがわかります。ことで、カーネルで高精度タイマーを実現する仕組みです。タイマーというのは、「xx秒後に指定した処理を実行する」的な処理をするときに使います。コマンドで時刻を設定すると、カーネル内の「時計」を設定して時刻を変更した後、時刻の変化に応じて「タイマー」の情報も調整しているわけです。調整をしていなかった、ということになります。更新する」というのは必ずセットで実施しないといけないのですが、うるう秒処理の場合になぜ後者の処理が抜け落ちていたのでしょうか。呼んでいたのに、この変更によって削除されていたのでした。バージョンのときにうるう秒処理で発生した問題に対応するために削除してしまったようです。呼ばなくなっているので、同様の問題が発生することになります。しないの境界になりそうです。発生するのも納得できます。-0700marc.infolkml.orgというメールで説明されています。秒未満で発火するようにセットされたタイマーの場合です。負荷が急激に上がる状態になります。関連のロック待ちや同期処理でよく使われるロジックだそうです。(この辺りもしかしたら読み違えているかもしれない...)。呼んでいなかった」という根本原因がすぐにわかったにも関わらず、意外と修正に時間がかかります。具体的なパッチの内容を説明する前に、その理由を書いてみます。よる時刻更新がカーネル内部でどのように書かれているかについて記載します。中井さんの本に書いてあるのとちょっと異なります)。更新する」関数で、タイマー割り込みごとに下記のコールパスで呼ばれます。特徴的なのは、この関数はハードウェア割り込みのコンテキストでは呼ぶことができない点です。@kernel/smp.cというパスで実行されます。ハードウェア割り込みコンテキストで使えないのです。ような仕組みを使わざるを得ないのですが、そのためには「ハードウェア割り込みコンテキストでは呼べない」という特性をなんとかしないといけないわけです。相当の処理をハードウェア割り込みのコンテキストからでも安全に呼べるように、カーネルコードを修正していくことになります。カーネル独自のデータ配置の方法です。キャッシュラインの無効化が頻発するため、キャッシュフィルに時間がかかってしまいスケールしにくくなる場合があります。自分のデータにアクセスできるようになります。情報をそれぞれ更新する必要があるのです。使ってブロック図にしてみました。フォントがうまくおさまりませんでした。投稿された修正パッチ、それにまつわる議論やバグ報告などを見ていきます。