Linux を実行する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで使用されるクロックソースを判断する方法と、それを変更する方法を教えてください。
簡単な説明
SSH クライアントを使用して、現在のクロックソースの確認、利用可能なクロックソースの一覧表示、またはクロックソースの変更を行うことができます。
注: Hardware Virtual Machine (HVM) インスタンスには、Xen、Time Stamp Counter (TSC)、High Precision Event Time (HPET)、Advanced Configuration and Power Interface Specification (ACPI) など、さまざまなクロックソースが用意されています。AWS Xen Hypervisor で起動される EC2 インスタンスの場合は、tsc クロックソースを使用するのがベストプラクティスです。C5 や M5 などのその他の EC2 インスタンスタイプでは、AWS Nitro Hypervisor を使用します。AWS Nitro Hypervisor の推奨クロックソースは kvm クロックです。
注: AWS Graviton2 プロセッサは arch_sys_counter をクロックソースとして使用します。
解決方法
クロックソースの検索方法
SSH クライアントを EC2 インスタンスで開き、以下のコマンドを実行して現在のクロックソースと利用可能なクロックソースを確認します。
現在設定されているクロックソースを確認するには、 current_clocksource ファイルの内容を一覧表示します。
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
xen
利用可能なクロックソースを一覧表示するには、 available_clocksource ファイルの内容を一覧表示します。
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
xen tsc hpet acpi_pm
現在のクロックソースを別の値に設定する方法
1. スーパーユーザー権限で bash を実行し、current_clocksource を上書きします。
sudo bash -c 'echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource'
2. dmesg コマンドを実行して、カーネルメッセージを表示します。
dmesg | less
上書きが成功すると、次のメッセージが表示されます。
clocksource: Switched to clocksource tsc
**注:**システムを再起動すると、Linux カーネルがクロックソースをリセットします。
クロックソースを永続的に設定する方法
クロックソースを永続的に設定するには、システムブートローダーでソースを設定します。
1. カーネルコマンドラインパラメータで clocksource を設定します。
例えば、grub2 を使用し、クロックソースを「tsc」に設定する場合は、エディタで /etc/default/grub を開きます。次に、GRUB_CMDLINE_LINUX オプションに clocksource=tsc tsc=reliable を追加します。
GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200 clocksource=tsc tsc=reliable"
2. grub.cfg ファイルを生成します。
grub2-mkconfig -o /boot/grub2/grub.cfg
関連情報
Linux インスタンスの時刻の設定