VPSに不具合が起きた→kvm-clockからHPETに変更

VPSの不具合が起こったので、とりあえずメモしておこう。
数カ月間なんの文句もなく稼動していたサーバが何かの拍子で徐々に言うことを聞かない子になってしまった。
前触れだったのか不具合が起こる前はWordPressの動作が遅かった気がする。
でも、なんとか動いてた。
数日前からは、不定期的にカーネルログを吐き出して、動作が不安定になる。
Webサーバは停止してSSHでログイン出来ない時もあれば、出来る時もあるみたいな状態になった。

ログの一部(めちゃめちゃ出てくるので・・)こんな感じで吐き出してくる。
Aug 15 09:13:13 brokendish kernel: [34669.589331] kjournald     D 0000000000000000     0   750      2
Aug 15 09:13:13 brokendish kernel: [34669.589331]  ffff81001d953d30 0000000000000046 0000000000000000 ffffffff8021f26e
Aug 15 09:13:13 brokendish kernel: [34669.589331]  ffff81001f8cb630 ffffffff804fa480 ffff81001f8cb8b8 0000000080a31000
Aug 15 09:13:13 brokendish kernel: [34669.589331]  ffff8100010016c0 0000000000000000 00000000fffffffd 0000000000000001
Aug 15 09:13:13 brokendish kernel: [34669.589331] Call Trace:
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] pvclock_clocksource_read+0x3a/0x71
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] sync_buffer+0x0/0x3f
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] io_schedule+0x5c/0x9e
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] sync_buffer+0x3b/0x3f
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] __wait_on_bit+0x40/0x6e
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] sync_buffer+0x0/0x3f
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] out_of_line_wait_on_bit+0x6c/0x78
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] wake_bit_function+0x0/0x23
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] :jbd:journal_commit_transaction+0x710/0xbf2
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] lock_timer_base+0x26/0x4b
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] :jbd:kjournald+0xc1/0x1fb
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] autoremove_wake_function+0x0/0x2e
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] :jbd:kjournald+0x0/0x1fb
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] kthread+0x47/0x74
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] schedule_tail+0x27/0x5c
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] child_rip+0xa/0x12
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] lapic_next_event+0xf/0x13
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] kthread+0x0/0x74
Aug 15 09:13:13 brokendish kernel: [34669.589331]  [] child_rip+0x0/0x12
Aug 15 09:13:13 brokendish kernel: [34669.589331]
Aug 15 09:14:29 brokendish kernel: [34715.574650] master        D ffff810001001eb8     0  1889      1
Aug 15 09:14:29 brokendish kernel: [34715.574650]  ffff81001e1dbb98 0000000000000082 ffff81001e1dbb58 0000000000000292
Aug 15 09:14:29 brokendish kernel: [34715.574650]  ffff81001f870d60 ffff81001f98c480 ffff81001f870fe8 00000000000c8407
Aug 15 09:14:29 brokendish kernel: [34715.574650]  ffff81001f002b50 ffffffff802ba771 0000000000000000 ffffffff80246133
	:
	:
	:

ヤバイ。。これはいつものパターンから言って「いじくりまわして壊す」フラグが立った、
お盆で休みっぽいけど、さくらさんに問い合せてみた。
そしたら以下のような回答を頂けたので、やってみたよ。(早々な回答ありがとうございます。)

高精度タイマーHPETを導入する
「HEPT」= High Precision Event Timer (高精度イベント タイマー)らしい

 

・まずは、利用可能のclocksourceを確認する

# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
 
kvm-clock hpet acpi_pm jiffies tsc
↑
hpetが入ってるので使える

 

・そして、現在のclocksourceを確認する

 

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
 
kvm-clock

・kvm-clock→hpetに変更する

# echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource

・このままだと、再起動したら戻ってしまうのでGrubに記述しておく

・/boot/grub/menu.lst の kernelの行に clocksource=hpet を追記してgrub反映
コマンドを実行する。

vi /boot/grub/menu.lst
 
## ## End Default Options ##
 
title Debian GNU/Linux, kernel 2.6.26-2-amd64
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-2-amd64 root=/dev/hda1 ro console=tty0 console=ttyS0,115200n8r quiet clocksource=hpet
initrd /boot/initrd.img-2.6.26-2-amd64
 
title Debian GNU/Linux, kernel 2.6.26-2-amd64 (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-2-amd64 root=/dev/hda1 ro console=tty0 console=ttyS0,115200n8r single
initrd /boot/initrd.img-2.6.26-2-amd64
 
### END DEBIAN AUTOMAGIC KERNELS LIST

 

・grub反映コマンドを実行

# grub-install /dev/hda

これで完了。
対応してからは(2日目だけど)上のようなカーネルログも出さないし、なんとか回避出来てる感じ。。よかった。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です