Тестирование скорости работы источника точного времени

При построении систем работы с событиями, одним из источников замедления работы может оказаться функция возврата точного времени. Особенно это актуально при использовании виртуализации или облаков.

Определение текущего источника

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

Пример вывода:

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

Для получение возможных источников используем команду:

cat /sys/devices/system/clocksource/clocksource0/available_clocksource

Пример:

cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc hpet acpi_pm

обычно самым быстрым оказывается tsc

устанавливаем источник командой

echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource

Для тестирования будем использовать скрипт написанный на Java:

public class TimeBench {
    public static void main(String[] args) {
        for (int i = 0; i < 100 * 1000 * 1000; i++) {
            long t0 = System.currentTimeMillis();
            if (t0 == 87362) {
                System.out.println("Bingo");
            }
        }
    }
}

Скрипт выполняет 100 миллионов вызовов операции System.currentTimeMillis, что достаточно для замеров.

 

вызов осуществляем командой

time java TimeBench.java

Пример работы для kvm-clock:

time java TimeBench.java

real 0m4.200s
user 0m4.583s
sys 0m0.048s

Пример работы для tcs:

time java TimeBench.java

real 0m3.708s
user 0m4.000s
sys 0m0.080s

Разница составила 0,5 секунды, для 100 миллионов операция, что в целом не значительно.

(Visited 4 times, 1 visits today)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *