pg_test_timing
pg_test_timing â опÑеделиÑÑ Ð¸Ð·Ð´ÐµÑжки замеÑа вÑемени
СинÑакÑиÑ
pg_test_timing [паÑамеÑÑ...]
ÐпиÑание
ÐÑогÑамма pg_test_timing позволÑÐµÑ Ð¾ÑениÑÑ Ð¸Ð·Ð´ÐµÑжки замеÑа вÑемени в ваÑей ÑиÑÑеме и ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо ÑиÑÑемное вÑÐµÐ¼Ñ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не идÑÑ Ð½Ð°Ð·Ð°Ð´. СиÑÑемÑ, в коÑоÑÑÑ
Ð·Ð°Ð¼ÐµÑ Ð²Ñемени ÑвлÑеÑÑÑ Ð´Ð»Ð¸ÑелÑной опеÑаÑией, даÑÑ Ð¼ÐµÐ½ÐµÐµ ÑоÑнÑе ÑезÑлÑÑаÑÑ EXPLAIN ANALYZE.
ÐаÑамеÑÑÑ
pg_test_timing пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑие аÑгÑменÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки:
-dдлиÑелÑноÑÑÑ--duration=длиÑелÑноÑÑÑÐадаÑÑ Ð¿ÑодолжиÑелÑноÑÑÑ ÑеÑÑа (в ÑекÑÐ½Ð´Ð°Ñ ). Чем болÑÑе ÑÑа пÑодолжиÑелÑноÑÑÑ, Ñем вÑÑе ÑоÑноÑÑÑ Ð¸ болÑÑе веÑоÑÑноÑÑÑ Ð¾Ð±Ð½Ð°ÑÑжиÑÑ Ð°Ð½Ð¾Ð¼Ð°Ð»Ð¸Ñ Ñ Ð¾Ð±ÑаÑнÑм Ñ Ð¾Ð´Ð¾Ð¼ ÑиÑÑемнÑÑ ÑаÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑÐµÐ¼Ñ ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â 3 ÑекÑндÑ.
-V--versionÐÑвеÑÑи веÑÑÐ¸Ñ pg_test_timing и завеÑÑиÑÑÑÑ.
-?--helpÐÑвеÑÑи ÑпÑÐ°Ð²ÐºÑ Ð¾Ð± аÑгÑменÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки pg_test_timing и завеÑÑиÑÑÑÑ.
ÐÑполÑзование
ÐнÑеÑпÑеÑаÑÐ¸Ñ ÑезÑлÑÑаÑов
РблагопÑиÑÑном ÑлÑÑае пÑакÑиÑеÑки вÑе (>90%) оÑделÑнÑе вÑÐ·Ð¾Ð²Ñ Ð·Ð°Ð¼ÐµÑов вÑемени Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполнÑÑÑÑÑ Ð±ÑÑÑÑее одной микÑоÑекÑндÑ. СÑедние издеÑжки замеÑа на Ñикл Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÐµÑÑ Ð¼ÐµÐ½ÑÑе, в пÑÐµÐ´ÐµÐ»Ð°Ñ 100 наноÑекÑнд. ÐÑа пÑоба, взÑÑÐ°Ñ Ð² ÑиÑÑеме Intel i7-860 ÑеÑез иÑÑоÑник вÑемени TSC, показÑÐ²Ð°ÐµÑ Ð¾ÑлиÑнÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ:
Testing timing overhead for 3 seconds.
Per loop time including overhead: 35.96 ns
Histogram of timing durations:
< us % of total count
1 96.40465 80435604
2 3.59518 2999652
4 0.00015 126
8 0.00002 13
16 0.00000 2
ÐамеÑÑÑе, ÑÑо вÑÐµÐ¼Ñ Ð²Ñзова в Ñикле и вÑÐµÐ¼Ñ Ð² гиÑÑогÑамме вÑÑажаеÑÑÑ Ð² ÑазнÑÑ ÐµÐ´Ð¸Ð½Ð¸ÑÐ°Ñ . ÐÑÐµÐ¼Ñ Ð² Ñикле Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделÑÑÑÑÑ Ñ ÑоÑноÑÑÑÑ Ð´Ð¾ наноÑекÑнд (ns), а длиÑелÑноÑÑÑ Ð¾ÑделÑного вÑзова замеÑа вÑемени â ÑолÑко Ñ ÑоÑноÑÑÑÑ Ð´Ð¾ микÑоÑекÑнд (us).
ÐзмеÑение издеÑжек иÑполниÑÐµÐ»Ñ Ð½Ð° Ð·Ð°Ð¼ÐµÑ Ð²Ñемени
Ðогда иÑполниÑÐµÐ»Ñ Ð·Ð°Ð¿ÑоÑа вÑполнÑÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð¿Ð¾Ð´ конÑÑолем EXPLAIN ANALYZE, замеÑÑеÑÑÑ Ð½Ðµ ÑолÑко обÑее вÑемÑ, но и вÑÐµÐ¼Ñ Ð¾ÑделÑнÑÑ
опеÑаÑий. ÐÐ°ÐºÐ¾Ð²Ñ Ð¸Ð·Ð´ÐµÑжки ÑÑиÑ
опеÑаÑий в ваÑей ÑиÑÑеме, можно ÑзнаÑÑ, подÑÑиÑав ÑÑÑоки ÑеÑÑовой ÑаблиÑÑ Ð² пÑогÑамме psql:
CREATE TABLE t AS SELECT * FROM generate_series(1,100000); \timing SELECT COUNT(*) FROM t; EXPLAIN ANALYZE SELECT COUNT(*) FROM t;
Ð ÑиÑÑеме i7-860 ÑÑÐ¾Ñ Ð·Ð°Ð¿ÑÐ¾Ñ Ð²ÑполнÑеÑÑÑ 9.8 мÑ, а веÑÑÐ¸Ñ Ñ EXPLAIN ANALYZE â 16.6 мÑ, пÑи ÑÑом обÑабаÑÑваеÑÑÑ Ð¾ÐºÐ¾Ð»Ð¾ 100 000 ÑÑÑок. ÐÑо ÑазлиÑие в 6.8 Ð¼Ñ Ð¾Ð·Ð½Ð°ÑаеÑ, ÑÑо издеÑжки замеÑа вÑемени Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑоки ÑоÑÑавлÑÑÑ Ð¾ÐºÐ¾Ð»Ð¾ 68 нÑ, пÑимеÑно вдвое болÑÑе, Ñем пÑедÑказала pg_test_timing. Ðаже Ñ Ñакими оÑноÑиÑелÑно неболÑÑими издеÑжками опеÑаÑÐ¸Ñ COUNT Ñ Ð¿Ð¾Ð»Ð½Ñм подÑÑÑÑом вÑемени вÑполнÑеÑÑÑ Ð¿Ð¾ÑÑи на 70% долÑÑе. Ðа более ÑложнÑÑ
запÑоÑаÑ
издеÑжки замеÑа вÑемени могÑÑ Ð±ÑÑÑ Ð½Ðµ Ñак важнÑ.
Смена иÑÑоÑника вÑемени
РнекоÑоÑÑÑ ÑовÑеменнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Linux можно в лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑмениÑÑ Ð¸ÑÑоÑник вÑемени, коÑоÑÑй иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÑа вÑемени. ÐÑоÑой пÑÐ¸Ð¼ÐµÑ Ð¸Ð»Ð»ÑÑÑÑиÑÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ðµ замедление Ð¾Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð½Ð° более медленнÑй иÑÑоÑник вÑемени acpi_pm time в Ñой же ÑиÑÑеме, в коÑоÑой бÑли полÑÑÐµÐ½Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð½Ñе вÑÑе Ñ Ð¾ÑоÑие ÑезÑлÑÑаÑÑ:
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
# echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource
# pg_test_timing
Per loop time including overhead: 722.92 ns
Histogram of timing durations:
< us % of total count
1 27.84870 1155682
2 72.05956 2990371
4 0.07810 3241
8 0.01357 563
16 0.00007 3
Ð ÑÑой конÑигÑÑаÑии ÑÐ¾Ñ Ð¶Ðµ EXPLAIN ANALYZE вÑполнÑеÑÑÑ 115.9 мÑ. Таким обÑазом издеÑжки ÑоÑÑавили 1061 нÑ, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑÐ²ÐµÐ½Ð½Ð¾Ð¼Ñ ÑезÑлÑÑаÑÑ ÑÑой ÑÑилиÑÑ Ñ Ð½ÐµÐ±Ð¾Ð»ÑÑим коÑÑÑиÑиенÑом. Такие болÑÑие издеÑжки ознаÑаÑÑ, ÑÑо Ñам запÑÐ¾Ñ Ð²ÑполнÑеÑÑÑ Ð»Ð¸ÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑой пÑоÑÐµÐ½Ñ Ð²Ñего вÑемени, а оÑновное вÑÐµÐ¼Ñ ÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð° замеÑÑ Ð²Ñемени. Ð Ñакой конÑигÑÑаÑии вÑеменнÑе показаÑели EXPLAIN ANALYZE Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов Ñо множеÑÑвом замеÑÑемÑÑ
опеÑаÑий знаÑиÑелÑно ÑвелиÑаÑÑÑ Ð·Ð° ÑÑÑÑ Ð¸Ð·Ð´ÐµÑжек замеÑа вÑемени.
FreeBSD Ñак же позволÑÐµÑ ÑменÑÑÑ Ð¸ÑÑоÑник вÑемени «на леÑÑ» и вÑÐ²Ð¾Ð´Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ вÑбÑанном ÑаймеÑе пÑи загÑÑзке:
# dmesg | grep "Timecounter" Timecounter "ACPI-fast" frequency 3579545 Hz quality 900 Timecounter "i8254" frequency 1193182 Hz quality 0 Timecounters tick every 10.000 msec Timecounter "TSC" frequency 2531787134 Hz quality 800 # sysctl kern.timecounter.hardware=TSC kern.timecounter.hardware: ACPI-fast -> TSC
ÐÑÑгие ÑиÑÑÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð´Ð¾Ð¿ÑÑкаÑÑ ÑÐ¼ÐµÐ½Ñ Ð¸ÑÑоÑника вÑемени ÑолÑко пÑи загÑÑзке. Ð ÑÑаÑÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Linux ÑÑо можно бÑло ÑделаÑÑ ÑолÑко Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа ÑдÑа «clock». Рдаже в некоÑоÑÑÑ ÑамÑÑ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑвидеÑÑ ÑолÑко один иÑÑоÑник вÑемени â jiffies. ÐÑо ÑÑаÑÐ°Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ð½Ð°Ñ ÑеализаÑÐ¸Ñ ÑаÑов в Linux, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ Ñ Ð¾ÑоÑее ÑазÑеÑение, когда поддеÑживаеÑÑÑ Ð´Ð¾ÑÑаÑоÑно Ñ Ð¾ÑоÑим обоÑÑдованием, как в ÑÑом пÑимеÑе:
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
jiffies
$ dmesg | grep time.c
time.c: Using 3.579545 MHz WALL PM GTOD PIT/TSC timer.
time.c: Detected 2400.153 MHz processor.
$ pg_test_timing
Testing timing overhead for 3 seconds.
Per timing duration including loop overhead: 97.75 ns
Histogram of timing durations:
< us % of total count
1 90.23734 27694571
2 9.75277 2993204
4 0.00981 3010
8 0.00007 22
16 0.00000 1
32 0.00000 1
ÐппаÑаÑнÑе ÑаÑÑ Ð¸ ÑоÑноÑÑÑ Ð·Ð°Ð¼ÐµÑа вÑемени
ÐзмеÑение вÑемени обÑÑно оÑÑÑеÑÑвлÑеÑÑÑ Ð½Ð° компÑÑÑеÑÐ°Ñ Ð¿Ð¾ аппаÑаÑнÑм ÑаÑам, ÑоÑноÑÑÑ ÐºÐ¾ÑоÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñазного ÑÑовнÑ. С некоÑоÑÑм обоÑÑдованием опеÑаÑионнÑе ÑиÑÑÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÐµÑедаваÑÑ Ð²ÑÐµÐ¼Ñ ÑиÑÑемнÑÑ ÑаÑов непоÑÑедÑÑвенно пÑогÑаммам. Также ÑиÑÑемное вÑÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑÑпаÑÑ Ñ Ñипа, коÑоÑÑй пÑоÑÑо генеÑиÑÑÐµÑ Ð¿ÑеÑÑÐ²Ð°Ð½Ð¸Ñ Ð¿Ð¾ вÑемени, Ñ Ð·Ð°Ð²ÐµÐ´Ð¾Ð¼Ð¾ извеÑÑнÑм пеÑиодом. РлÑбом ÑлÑÑае ÑдÑа опеÑаÑионнÑÑ ÑиÑÑем пÑедоÑÑавлÑÑÑ Ð¸ÑÑоÑник вÑемени, коÑоÑÑй ÑкÑÑÐ²Ð°ÐµÑ ÑÑи деÑали. Ðо ÑоÑноÑÑÑ ÑÑого иÑÑоÑника и Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ ÑкоÑоÑÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑов Ð¾Ñ Ð½ÐµÐ³Ð¾ завиÑÐ¸Ñ Ð¾Ñ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñего обоÑÑдованиÑ.
ÐеÑоÑноÑÑÑ Ð² замеÑÐ°Ñ Ð²Ñемени Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиводиÑÑ Ðº неÑÑабилÑноÑÑи ÑиÑÑемÑ. ÐоÑÑÐ¾Ð¼Ñ ÑÑÐ¾Ð¸Ñ Ð¾ÑÐµÐ½Ñ ÑÑаÑелÑно пÑоÑеÑÑиÑоваÑÑ Ð²ÑбÑаннÑй иÑÑоÑник вÑемени. Ðногда по ÑмолÑÐ°Ð½Ð¸Ñ Ð² ÐС вÑбиÑаеÑÑÑ Ð¸ÑÑоÑник не более ÑоÑнÑй, а более надÑжнÑй. РеÑли Ð²Ñ Ð¸ÑполÑзÑеÑе виÑÑÑалÑнÑÑ Ð¼Ð°ÑинÑ, поинÑеÑеÑÑйÑеÑÑ, какие иÑÑоÑники вÑемени ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ñ Ð½ÐµÐ¹. ÐмиÑаÑÐ¸Ñ ÑаймеÑов на виÑÑÑалÑном обоÑÑдовании ÑвÑзана Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑми ÑложноÑÑÑми, и пÑоизводиÑели ÑÑедÑÑв виÑÑÑализаÑии ÑаÑÑо ÑекомендÑÑÑ Ð¾Ð¿ÑеделÑннÑе паÑамеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑем.
ÐÑÑоÑник вÑемени TSC (Time Stamp Counter, СÑÑÑÑик оÑмеÑки вÑемени) наиболее ÑоÑнÑй из вÑÐµÑ Ð´Ð»Ñ Ð¿ÑоÑеÑÑоÑов ÑекÑÑего поколениÑ. Ðго ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑиÑÑемного вÑемени, когда он поддеÑживаеÑÑÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемой и Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¸Ñ TSC надÑжнÑ. ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÑиÑÑаÑии, когда TSC не ÑвлÑеÑÑÑ ÑоÑнÑм иÑÑоÑником вÑемени, и Ñаким обÑазом, оказÑваеÑÑÑ Ð½ÐµÐ½Ð°Ð´ÑжнÑм. ÐапÑимеÑ, в ÑÑаÑÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¸Ñ TSC могÑÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ ÑемпеÑаÑÑÑÑ Ð¿ÑоÑеÑÑоÑа, ÑÑо не годиÑÑÑ Ð´Ð»Ñ ÑоÑного замеÑа вÑемени. ÐÑи попÑÑке иÑполÑзоваÑÑ TSC в некоÑоÑÑÑ ÑÑаÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ÑдеÑнÑÑ Ð¿ÑоÑеÑÑоÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ Ñазное вÑÐµÐ¼Ñ Ð½Ð° ÑазлиÑнÑÑ ÑдÑÐ°Ñ . Ð ÑезÑлÑÑаÑе Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ, ÑÑо вÑÐµÐ¼Ñ Ð¸Ð´ÑÑ Ð½Ð°Ð·Ð°Ð´ (ÑÑÑ Ð°Ð½Ð¾Ð¼Ð°Ð»Ð¸Ñ Ð²ÑÑвлÑÐµÑ Ð´Ð°Ð½Ð½Ð°Ñ Ð¿ÑогÑамма). Рдаже на ÑамÑÑ ÑовÑеменнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Ð½Ðµ вÑегда можно полÑÑиÑÑ ÑоÑное вÑÐµÐ¼Ñ ÑеÑез TSC в ÑÐµÐ¶Ð¸Ð¼Ð°Ñ Ð¾ÑÐµÐ½Ñ Ð°Ð³ÑеÑÑивного ÑнеÑгоÑбеÑежениÑ.
ÐовÑе опеÑаÑионнÑе ÑиÑÑÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑовеÑÑÑÑ Ð½Ð°Ð»Ð¸Ñие извеÑÑнÑÑ Ð¿Ñоблем TSC и пеÑеклÑÑаÑÑÑÑ Ð½Ð° более медленнÑй, но более ÑÑабилÑнÑй иÑÑоÑник вÑемени, еÑли они пÑоÑвлÑÑÑÑÑ. ÐÑли ваÑа ÑиÑÑема поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸ÑÑоÑник TSC, но не вÑбиÑÐ°ÐµÑ ÐµÐ³Ð¾ по ÑмолÑаниÑ, возможно, он оÑклÑÑÑн обоÑнованно. С дÑÑгой ÑÑоÑонÑ, некоÑоÑÑе опеÑаÑионнÑе ÑиÑÑÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð½Ðµ вÑÑвлÑÑÑ Ð²Ñе возможнÑе пÑоблемÑ, либо ÑазÑеÑаÑÑ Ð¸ÑполÑзоваÑÑ TSC даже в ÑиÑÑаÑиÑÑ , когда он опÑеделÑнно неÑоÑен.
HPET (High Precision Event Timer, Ð¢Ð°Ð¹Ð¼ÐµÑ ÑобÑÑий вÑÑокой ÑоÑноÑÑи) ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð² ÑиÑÑÐµÐ¼Ð°Ñ , где он имееÑÑÑ, а TSC неÑоÑен. Сам ÑÑÐ¾Ñ Ñип можно запÑогÑаммиÑоваÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑоÑноÑÑи до 100 наноÑекÑнд, но ÑиÑÑемное вÑÐµÐ¼Ñ Ñ Ñакой ÑоÑноÑÑÑÑ Ð²Ñ Ð½Ðµ полÑÑиÑе.
ACPI (Advanced Configuration and Power Interface, РаÑÑиÑеннÑй инÑеÑÑÐµÐ¹Ñ ÐºÐ¾Ð½ÑигÑÑаÑии и пиÑаниÑ) обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð¹Ð¼ÐµÑ PM (УпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¸Ñанием), коÑоÑÑй в Linux назÑваеÑÑÑ acpi_pm. ÐÑемÑ, поÑÑÑпаÑÑее из acpi_pm, в лÑÑÑем ÑлÑÑае бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÑазÑеÑение 300 наноÑекÑнд.
Ðа ÑÑаÑом обоÑÑдовании PC пÑименÑлиÑÑ ÑаймеÑÑ 8254 PIT (Programmable Interval Timer, ÐÑогÑаммиÑÑемÑй инÑеÑвалÑнÑй ÑаймеÑ), RTC (Real-Time Clock, ЧаÑÑ ÑеалÑного вÑемени), ÑÐ°Ð¹Ð¼ÐµÑ APIC (Advanced Programmable Interrupt Controller, РаÑÑиÑеннÑй пÑогÑаммиÑÑемÑй конÑÑÐ¾Ð»Ð»ÐµÑ Ð¿ÑеÑÑваний) и Cyclone. ÐÑе ÑÑи ÑаймеÑÑ Ð¾Ð±ÐµÑпеÑивали ÑоÑноÑÑÑ Ð´Ð¾ миллиÑекÑнд.