teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

記載内容の修正

2017/01/17 08:49

投稿

sutasuta
sutasuta

スコア36

answer CHANGED
@@ -1,23 +1,25 @@
1
1
  > 先の認識とCPU使用率の増加がいまいち繋がりません。
2
2
 
3
3
  おそらく linux kernel でのトラブルの話をされているのかと思います。
4
- それを前提にものすごくざっくり説明しますとこの時の bug では、
4
+ それを前提にものすごくざっくり説明します
5
- うるう秒挿入時に CLOCK_REALTIME を1秒巻き戻したのに
5
+ この時の bug では、うるう秒挿入時に CLOCK_REALTIME を1秒巻き戻したのに
6
6
  clock_was_set() を呼び忘れたことです。
7
- この状況では、高精度カーネルタイマ(hrtimer) 1秒ずれが生じた状態になります。
7
+ この状況では、高精度カーネルタイマ(hrtimer) の処理時に1秒ずれが生じた状態になります。
8
8
 
9
- このため、hrtimer でタイマーを設定すると1秒早くタイマーが終了してしまう状況になります。
9
+ このため、hrtimer でタイマーを設定すると1秒早くタイマーが終了してしまう状況になります。
10
10
 
11
- ここで問題なのは1秒未満のタイマーを設定した場合で、場合はタイマーを設定した
11
+ ここで問題なのは1秒未満のタイマーを設定した場合で、1秒未満のタイマーを設定した
12
+ 即座にタイマーが終了してしまいます。
12
- タイマーが終了してしまう為、タイマー切れの処理を行います。
13
+ タイマーが切れたためプログラムはタイマー切れの処理を行います。
13
- タイマー切れの場合に再度タイマーを設定するプログラム場合この処理がループします。
14
+ タイマー切れの場合に必要な処理を行い、再度タイマーを設定するプログラムであった場合、
15
+ この一連の処理はループします。
14
16
 
15
- これらのプログラムが複数呼び出された場合は、負荷が高くなります。
17
+ これらのプログラムが複数呼び出された場合は、システム全体の負荷が高くなります。
16
18
  1秒ずれた状態は clock_was_set() を呼びだすまで解消されないため、
17
- うるう秒処理後からいろいろなプログラムで高負荷の状況を生み出す事になります。
18
- 1秒未満のタイマーを設定する処理を踏んだ場合
19
+ うるう秒処理後から1秒未満のタイマーを設定する様なプログラムで
20
+ 高負荷の状況を生み出す事になります。
19
21
 
20
- この問題の解消は clock_was_set() を呼びだして1秒のずれを解消する事です。
22
+ この問題の解消は clock_was_set() を呼びだして1秒のずれを解消する事です。
21
23
  date コマンドで解消する記事が多くあると思いますが、それは内部で clock_was_set() を
22
24
  呼びだしているからです。
23
25