#linux #cpu-usage #performance
#linux #загрузка процессора #Производительность
Вопрос:
Некоторые из параметров, которые я хочу измерить, очень короткие, и я могу повторять их столько раз, только если не буду запускать какой-либо код установки / удаления в середине.
примечание: в Linux чтение /proc/stat
Комментарии:
1. Следовательно, вы имеете в виду » самое высокое временное разрешение»?
Ответ №1:
Не очень портативно, и вам придется проявлять большую осторожность, чтобы обеспечить его надежность, но счетчик отметок времени определенно имеет самое высокое доступное разрешение (увеличивается с каждым тактом процессора).
Счетчик временных меток до недавнего времени был отличным способом получения информации о времени процессора с высоким разрешением и низкими накладными расходами. С появлением многоядерных / гиперпоточных процессоров, систем с несколькими процессорами и операционных систем, находящихся в «спящем режиме», на TSC нельзя положиться в предоставлении точных результатов — если не предпринять больших усилий для исправления возможных недостатков: частоты тика и того, все ли ядра (процессоры) имеют одинаковые значения в своих регистрах учета времени. Нет никаких гарантий, что счетчики временных меток нескольких процессоров на одной материнской плате будут синхронизированы. В таких случаях программисты могут получить надежные результаты, только привязав свой код к одному процессору. Даже в этом случае скорость процессора может измениться из-за мер по энергосбережению, принятых ОС или BIOS, или система может перейти в режим гибернации, а затем возобновиться (сброс счетчика временных меток). В этих последних случаях, чтобы оставаться актуальными, счетчик необходимо периодически перекалибровать (в соответствии с временным разрешением, требуемым вашим приложением).
На странице также есть несколько заметок о решениях, специфичных для Linux:
В Linux аналогичная функциональность обеспечивается считыванием значения CLOCK_MONOTONIC clock с помощью функции POSIX clock_gettime.