Brendan Gregg α’αααα’αα·ααααααααααΆαααα DTrace ααααα αα α»αααααααααα»ααααααΎαα§ααααααα·ααΆαααΆαα’αα»ααααααα’ααααΎ BPF αα αααα»αααΊαααααΈαα»α ααΆααααααααααα·ααααααααααα½αααΆαααΈααΆααα·ααΆααααα αΆααααΎαααΆαααα Netflix αα½αααααααα αααααααα Cassandra DBMS ααΈ CentOS αα Ubuntu α ααα Amazon EC2 ααα’ααααΎ Xen α αααααΆααααΈααΆαααααΎα αααΆααααα»α ααΆααααα»ααααΈααΈααΌααΎαα‘αΎα 30% α αΎαααΆααααααΆαααααααα»αα’αα‘α»ααααααααα·ααααα·ααΆααααααααΎαα‘αΎααααα ααα ααα½αααΌα ααααΆα ααΌα αααααΆααααααΆααΆαα’αα»αααααααααααα·ααΈαααααααΎαα»αααααααΆααααααααΆαααΆαααααΆααα’αΆαααααααΎααααααααααααΆαα·αααααΆαααααααΆαααααΎαααΎααα αααα»αααααααααα
ααααΌαα‘αΎα α ααα»αααααααΆααααΆαααα α»αααααΆαα’αα»ααααααΊαα·αα αααΆαααα α αΎαααΆαααααΎααααα·αα·α ααααααΆαα αΆααααααΎαααΆαα½αααΉαααΆααααα½ααα·αα·ααααααααααΆαααααα’αΆα ααΎαααΆαααααΆαααααΎαααΆαα₯αααααα α¬ααααΎαααΆααααααααααααααΉαααα’ααααΎααααΆαααααααααΆαααααααααΎα§αααααααααΎααααΆααααααΌα αα·α execsnoop α ααα»ααααα’αααΈααααααααΆαααΆααααα αΆαααΆααΆαααααΎααααΆααααααΆαααΆαααΎαα‘αΎαααΆαα·ααααα αααα»α Cassandra DBMS ααααααααααΆααΆααΆα αΆαααΆα ααΆααααααααααααααΆααααααααααααααΎαααΆα Cassandra ααΈαααααααα»αααααΎαααΆαααααααααΆαα ααΎ CentOS αα·α Ubuntu αααααααΎαααΆααααα½αααΌα ααααΆααΆααααα αΆαααΆαααα αα 32% αααααααααΆααα»αααααΌαααΆαα αααΆααααα»αααΆαα α os::javaTimeMillis() αααααααΌαααΆαααααΎααΎααααΈααα½αααΆαααααααΆαα’αααΈαααααααΆαα αα α»ααααααα .
αααααΆααααΈααα ααΆααα·ααααααα½αααααΌαααΆαααααΎα‘αΎαααααααααα·ααΈ Java ααΆαααααα½αααααΌαααΆαααααααααα α ααΆαα·ααΈααΆααααα System.currentTimeMillis() αα½αααααΆααααααα»αααααα·ααα»ααα½αα ααΆαααααΎαααΆααααααα·ααΈααΆααααα αΆαααΆααΆα αααΆαααα 13 αα·ααΆααΈααΎααααΈαααα αααα ααΎ CentOS αα·ααααα αα 68 αα·ααΆααΈαα ααΎ Ubuntu αααααΊα§α ααΊαααΆα 5 ααα αααααα·ααΈααααααααααΆαααααααΌαααΆαααααααα αααα»α C αααα α ααΆαα»αααΆα gettimeofday() αα½αααααΆααα ααα»αααααα αααααααα·ααααα· ααααααααααααααααΆααααΌαααΆαααα½αα
αααααΆαααΆα αααΆααααΆααααααααααα αΆααΊααΆαα»αααΆαααααΆααααααααααα·αααΌααααααααΆαα αα α»αααααα ααΆαααα α·ααααα»αααΆααααΆαααΆααα ααααΆαααααΆααααααΌαααΌα ααΆαααα αααααααΎαααΎααααααααααααααααΆαααααααααΆαα·αααααΆαααα αααα»αααααααααα ααααα·αα·α αααααααααΆαα·ααΆαα β/sys/devices/system/clocksource/clocksource0/current_clocksourceβ αααααα·ααΈααααααααα βxenβ ααααΌαααΆαααααΎααΆαααααΆαααΎααα αααααααΎαααΆαααΈαα»α αα αααα»ααααααααααααααα αααααΆααααΈααααΆααααααΌαααααααααααααΆαα ααΆ "tsc" αααααααΆααααα·ααααα·αααααααα·ααΈααΆααααααα αααα»αα’ααΌααα»αααΌααΆαααα α»αααΈ 68 αα 3.3 αα·ααΆααΈαααααΊα§α ααΆααΏαααΆα 20 ααα ααΎαααΈααααααααΆαααααΎαααααααααΎαααΆαααααααααααα kvm ααααΌαααΆαα’αα»ααααααααααα αΆαααΈααΆαααΎαα‘αΎαααααΆααααααΆαααα 20% ααΎαααααααααα ααΉα TSC α $ cat /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource xen $time java TimeBench real 1m8.300s user 0m38.337s $ sys.0m echo tsc > /sys/devices/system/clocksource/clocksource29.875/current_clocksource $time java TimeBench real 0m0s user 3.370m0s sys 3.353m0s
ααΎααααΈααα½αααΆααααααααΆαα αααααααΎαααΎαααααα TSC ααΆαααααΆαααααΎαααΆα RDTSC ααααΌαααΆαααααΎ ααΆαααααα·ααααα·ααααα·ααααααΌαα±ααααΆαααΆαα α αααααααα (ααΆαααααΆααα·ααααααΌαα±ααααΆααα·αααα·ααΎαα‘αΎα αα·ααααααΎααααααααΈαααααααΆααΆαααααα αΌααααα»α CPU) α ααΆαααααΆαααΎα TSC αα·αααααΌαααΆαααααΎα±ααααααααα ααΈαααααααΆαααΈααααααΎααααααααααα·αααΆαααααα αΌαααΆααααα·ααααααααΆααααα·α ααααα ααααα αααα»α processors ααααααααααααΌαααΆααααααααΌαααααααααα·ααΈ ααΎααααΈαααααα ααΆαααΌαααΆαα’αΆαααααΉαααααΌαααΆααα»αα αααααΆααα·ααααααααααΆαα―αααααααα»αααΆαα’αα·ααααααααααααααααααΎαααΆα ααΆααααααααΆα α’αααΈααΆαααααΆααααααΌααααααααΆαα αααααααΎ TSC ααΊαα·ααα·αααΆααΌαααα αΎα α αΎααα αααα»α processors ααααΎαααααααααα’αΆα αααααΎαααΆαα’αΆααααααΆααααααααΆαα’ααααααααααΆα αααΎαααααΆαα
ααΆαααααΆααααααΌααααΆαααΈαααααα·ααααααα
Netflix αα
ααΆααααα TSC αααααΆαα±ααααΆαααΆαααα
α»α 43% αααα»αααΆααααααααΊα αα·αααα½αααΆααααααααααααααΎα’ααΌααα»αααΌ αααααΏαααΆαααΆαααααααα
ααΆααααααααααααΎαααΆα CentOS 4 ααααΆαα½αααΉαααααααααααααΆ "xen" α ααααααααααΆααα·ααααΆααααΌαααΆαααααααα
αααα»αα αα»α Amazon αααααΆαααααΆαααΆααααΌαααΆααααααααΎααααααααααααΆ TSC ααααΆαααΎααα
αααα»αααα·ααααΆα AWS EC2 αααααα’ααααΎ Xen hypervisor (kvm-clock αα
ααααααΌαααΆαααααΆααα
αααα»αααα·ααααΆααααααα’ααααΎ Nitro hypervisor) α
ααααα: opennet.ru