ΠΡΠ΅Π½Π΄Π°Π½ ΠΡΠ΅Π³ (Brendan Gregg), ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² DTrace, Π½ΡΠ½Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° Π±Π°Π·Π΅ BPF Π² ΡΠ΄ΡΠ΅ Linux, ΠΎΠ±ΠΎΠ±ΡΠΈΠ» ΠΎΠΏΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² Ρ ΠΎΠ΄Π΅ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Netflix ΡΡΠΎΠ»ΠΊΠ½ΡΠ»Π°ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π‘Π£ΠΠ Cassandra c CentOS Π½Π° Ubuntu Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ , Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ Amazon EC2 Π½Π° Π±Π°Π·Π΅ Xen. ΠΠΎΡΠ»Π΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° CPU ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π°ΡΡ Π½Π° 30% ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π²ΠΎΠ·ΡΠΎΡΠ»ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΠΊ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ½Π°ΡΠ°Π»Π΅ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΡΠ»Π° Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π½Π°ΡΠ°Π»Π°ΡΡ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡ top ΠΈ execsnoop. ΠΠΎ Π²ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΎ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π‘Π£ΠΠ Cassandra, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Java. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Cassandra, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ Π² CentOS ΠΈ Ubuntu ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, ΡΡΠΎ ΠΎΠΊΠΎΠ»ΠΎ 32% Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΡΡ Π½Π° Π²ΡΠ·ΠΎΠ² os::javaTimeMillis(), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π±ΡΠ» ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ, Π² Ρ ΠΎΠ΄Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Java, Π² ΡΠΈΠΊΠ»Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π΅ ΡΡΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΠ°Π· ΠΌΠ΅ΡΠΎΠ΄ System.currentTimeMillis(). ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ Π² CentOS Π΄Π»Ρ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ 13 ΡΠ΅ΠΊΡΠ½Π΄, Π° Π² Ubuntu — ΠΎΠΊΠΎΠ»ΠΎ 68 ΡΠ΅ΠΊΡΠ½Π΄, Ρ.Π΅. Π² 5 ΡΠ°Π· ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠΠ° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π±ΡΠ»Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΡ ΠΎΠΆΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΡΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΠ°Π· Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ gettimeofday(), Π½ΠΎ ΠΏΡΠΈ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°Π»ΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠ»ΠΎΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π‘ΡΠ΄Ρ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ «/sys/devices/system/clocksource/clocksource0/current_clocksource» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Linux Π² Π³ΠΎΡΡΠ΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ «xen». ΠΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° «tsc» Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Ubuntu ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ Ρ 68 Π΄ΠΎ 3.3 ΡΠ΅ΠΊΡΠ½Π΄, Ρ.Π΅. ΡΡΠ°Π»ΠΎ Π±ΡΡΡΡΠ΅Π΅ Π² 20 ΡΠ°Π·. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ» ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ kvm-clock, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π» ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ Π½Π° 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 0m29.875s $ echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench real 0m3.370s user 0m3.353s sys 0m0.026s
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° TSC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ RDTSC, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈ Π²ΡΠ΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² CPU ΡΡΡΡΡΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ TSC Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Π±ΡΠ»ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ°Π» ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠΉ Π΄ΡΠ΅ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ. ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠ΅Π³ΠΎΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠ΄Π²ΠΈΠ³Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ TSC ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ Π΄Π°Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π³ΠΎΠ΄Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠΈΡ
ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π² Netflix Π½Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊ TSC ΠΏΡΠΈΠ²ΡΠ» ΠΊ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° 43% ΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ubuntu ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², Π² 4 ΡΠ°Π·Π° ΠΏΡΠ΅Π²ΠΎΡΡ
ΠΎΠ΄ΡΡΠΈΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ CentOS Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ «xen». Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Amazon, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ
AWS EC2 Π½Π° Π±Π°Π·Π΅ Π³ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ° Xen ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ TSC (Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ
Π½Π° Π±Π°Π·Π΅ Π³ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ° Nitro ΠΎΡΡΠ°ΡΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ kvm-clock).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru