LINUX.ORG.RU

Чем задетектить факт воровства времени CPU у виртуалки?

 


1

3

Работает себе виртуалка, вызывает usleep(30000), а просыпается не через 30 мсек, а через 40. Вот такое надо чем-то залогировать. Есть ли тулза существующая, которая подобное выдаёт? Да, usleep() может навернуться по разным причинам, в том числе из-за высокой загруженности шедулера и т.п. Причина не важна.

Часы виртуалки видимо проброшены в хост-систему и измерить время затраченное на usleep() реально. Измерятор показывает как usleep() тормозит ИНОГДА, когда и всё остальное на этой виртуалке лагает. Код на C++ имеется. Просто думаю может уже есть какая-то штатная тулза, чтобы не заставлять человека мой код у себя собирать.



Последнее исправление: hlamotron (всего исправлений: 2)

Ответ на: комментарий от Pinkbyte

Нет, время видимо проброшено в хост-систему и измерить usleep() реально. Измерятор показывает как usleep() тормозит.

hlamotron
() автор топика
Ответ на: комментарий от hlamotron

Беглый поиск выдаёт что в ядре есть Steal Time Accounting. Чем его тыкать из юзерленда - хз

Update: не до конца прочитал ссылку, которую сам же и прислал, лол. Варианты там описаны

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну, ТС не уточнил что у него там за виртуалки

Pinkbyte ★★★★★
()

Предлагаю кардинально решить эту проблему — сменить виртуализатор на xen.

anonymous
()

man usleep

The usleep() function suspends execution of the calling thread for (at least) usec microseconds ...

Тоесть в POSIX стантарте четко сказано что sleep не обязан просыпатся через указаное количество милисекунд, он обязан просыпаться НЕ мение чем указоное количество времени ...

Собственно все похожие вызовы (select, pool, epool и тд) имеют такое-же описание, в некоторых системах ОС сама принимает решение притормаживать слипы (например в OSX вы спокойно можете дернуть usleep на 40 милисикунд и проснуться через 10 СЕКУНД) - и это не бага, а в полне документированое поведение.

zaz ★★★★
()
Последнее исправление: zaz (всего исправлений: 1)
Ответ на: комментарий от zaz

Единственный коммент по делу :)

anonymous
()

Вы делаете чтото странное. Если вас смущает плюс-минус несколько сотен милисекунд то вы должны использовать чтото типа /dev/rtc. Если ваша виртуалка такое умеет. XEN тоже кстати правильная мысль. На нем поведение гостя на порядки предсказуемей по сравнению с KVM и К.

cvv ★★★★★
()
Последнее исправление: cvv (всего исправлений: 1)

mpstat -P ALL

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.