1

Я создаю код на удаленных машинах Linux, и это занимает очень много времени. Поскольку вся файловая система находится на NFS, я подозреваю, что NFS является узким местом. Могу ли я профилировать процесс сборки (сделать все) вплоть до системных вызовов чтения / записи? Или, проще говоря, какой инструмент мне нужен, чтобы найти узкое место. Strace поможет?

1 ответ1

0

Скорее всего, strace не поможет вам в этом случае, так как не предоставляет значимой информации о времени с течением времени. Вы можете получить резюме, используя команду

strace -t make all

Вывод показывает, сколько времени было использовано для ввода / вывода (чтение и запись вызовов), но трудно сделать разницу между обычным использованием и чрезмерным ожиданием.

Если вы можете, самый простой способ проверить, является ли NFS узким местом, состоит во времени компиляции по NFS, а затем на локальном диске, что должно быть быстрее. Если это невозможно, одним из полезных и тривиальных указателей является время ожидания, показанное, например, сверху. С вершины человека:

    wa  --  iowait
      Amount of time the CPU has been waiting for I/O to complete.

Например

ЦП: 0,0% сша, 0,3% с.и., 0,0% н.и., 10,7% идентификатора, 80,0% ва, 0,0% хай, 0,0% с.и., 10,0% ст

Показывает, что процессор в основном использует время ожидания завершения ввода-вывода. В этом случае виновником является другая виртуальная машина, интенсивно использующая диск, но она почти такая же, как ожидание NFS.

Это требует отслеживания лучших результатов во время процесса компиляции (по крайней мере, иногда), например, sar (man-страница) автоматически собирает системную статистику.

Надеюсь, это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .