2015年11月7日土曜日

TSC を読み出すことができるコマンド

今さら、古い話題ですが、Xeon E5 で reboot 時に TSC (Time Stamp Counter) がリセットされない(ゼロに初期化されない)という動作が影響して発生する 新208.5日問題 というのがあります。キーワード「208.5日問題」で検索すると、いろいろ情報が出てくるので、問題の詳細はそちらを参照。
TSC の値を読み出すには RDTSC 命令を使えばよいので、C言語でインラインアセンブラを使って、少々記述すれば出来そうですが、既成のコマンドがありますので、備忘録として書いておきます。
[root@hoge ~]# date
2015年 11月  7日 土曜日 16:19:50 JST
[root@hoge ~]# uptime
 16:19:53 up  6:52,  3 users,  load average: 0.06, 0.10, 0.13
[root@hoge ~]# lsmsr -r TSC
TSC = 0x00003836cd3926f0
このマシン(ThinkPad W520)の CPU は、Core i7 ですが、reboot するとリセットされる様子が読み取れます。
[root@hoge ~]# date
2015年 11月  7日 土曜日 16:22:18 JST
[root@hoge ~]# uptime
 16:22:20 up 1 min,  3 users,  load average: 0.12, 0.07, 0.03
[root@hoge ~]# lsmsr -r TSC
TSC = 0x0000003e244cb997    ※もしリセットされないなら、reboot 前より大きな値が見えるはず
このコマンドは、x86info というパッケージに収録されています。
[root@hoge ~]# which lsmsr
/usr/sbin/lsmsr
[root@hoge ~]# rpm -qf /usr/sbin/lsmsr
x86info-1.30-6.el7.x86_64
実際に Xeon E5 のマシンで、実験してみたいところですが、もちろん手元にはありませんので、以上です。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ