EC2でClockSourceを変更する件

  • このエントリーをはてなブックマークに追加

EC2はxenで動いていて、clocksourceもxenになっています。
gettimeofdayvDSOという仕組みによってユーザーランドで実行してくれまうが、clocksourceがxenだとカーネルランドで実行されてしまいます。

例えばJavaでSystem.currentTimeMillisSystem.nanoTimeをループで実行する処理を書いてstraceを見てみると、大量のシステムコールが実行されているのが観測できます。(gettimeofday, clock_gettime)

clocksourceはtscに変更すると良いぞという情報はあるのですが、一方で危険なので変更すべきでは無いという情報もあります。

AWSのサポートに聞いたときは、新しめのInstance(C4)と新しめのAMIだったら大丈夫だよと言われたのですが、変更するとちょこちょこKernelメッセージ出るし、収益に直結しているサービスに投入するのも怖い。
というわけで、staging環境ではやってみたんだけど、productionには投入できていません。

参考