Задержка между тестами потока: Linux машина без железа и QNX на виртуальной машине - PullRequest
0 голосов
/ 14 апреля 2020

Недавно я провел сравнение задержек для этих двух установок: a) Ubuntu 16.04, работающий на 12-ядерном хосте; б) гостевой QNX, на котором запущена VMware на хост-компьютере ноутбука (4 ядра назначены для виртуальной машины QNX). У меня нет лучшей настройки для QNX.

Тестовый сценарий: работает 10 потоков, каждый поток отправляет отправлять сообщение в случайно выбранный принимающий поток каждые 30 мс-i sh - очень низкая скорость передачи сообщений; Механизм сообщений реализован с использованием условных переменных, и каждый поток имеет свою собственную выделенную очередь-получателя rx и свою собственную условную переменную и мьютекс, поэтому нет помех между очередями. Я измеряю время между созданным / отправленным сообщением и получающим потоком, получающим сообщение. Среднее и std_dev min max все фиксируются для каждого потока.

Результат удивительно благоприятствует QNX (хотя он работает на виртуальной машине). 10US против 40US.

для потока в Linux (секунды): среднее значение = 0,000038076 std_dev = 2,7523e-05 мин = 0,000000254 макс = 0,000177410 sampleSize = 1023 для потока QNX (секунды): среднее = 0,000011351 std_dev = 0,000105937 мин = 0,000000000 макс. = 0,000999987 sampleSize = 969

Я заметил, что сторона QNX на часах не такая точная (с точки зрения разрешения), как сторона Linux, поскольку я вижу, что измеряемая минимальная задержка равна 0.

Мне просто интересно, соответствует ли это опыту других людей - Linux поток условного пробуждения в среднем занимает 40us? Кстати, если точность времени QNX в 100 мсек, а Linux - в наносексе c, влияет ли эта разница на стат? Спасибо.

1 Ответ

0 голосов
/ 15 апреля 2020

Тест на задержку оказывается более чувствительным (иным образом) к HW, чем я думал ранее. В более новом 12-ядерном хосте ЦП включен гиперпоток, и он генерирует значения задержки 40us. Я перешел на более старый 4-х ЦП с машиной с отключенным гиперпотоком, время задержки упало до 15-16us. Это в том же диапазоне парковки, что и номер виртуальной машины QNX. I sh Я мог бы сделать платформу более выровненной в тестах, чтобы получить более убедительный ответ в будущем.

новый Linux результат: среднее = 0,000015819 std_dev = 1,39205e-05 мин = 0,000000503 макс. = 0.000117652 sampleSize = 1528

...