Что означает «событие перемещения кода для неизвестного кода» при обработке профилирования node.js? - PullRequest
0 голосов
/ 26 сентября 2019

В узле (v10.15.3) я профилировал с помощью node --prof <script>, затем суммировал вывод с помощью node --prof-process <output>.Результирующая сводка содержит много неучтенных тиков, которые могут быть связаны с множеством ошибок при выполнении этого второго шага, аналогично следующему:

...
Code move event for unknown code: 0x3663777f8b98
Code move event for unknown code: 0x3663777f9018
Code move event for unknown code: 0x3663777f9790
Code move event for unknown code: 0x36635f5fb5a8
Code move event for unknown code: 0x3663777f9b78
Code move event for unknown code: 0x3663777f9d00
Code move event for unknown code: 0x3663777fa150
Code move event for unknown code: 0x3663777fa7f8
Code move event for unknown code: 0x36635f5fe630

Что означает это «Событие перемещения кода для неизвестного кода»ошибка означает?Есть ли какое-нибудь средство от этого, которое дало бы мне больше деталей в моем расследовании профилирования?

1 Ответ

0 голосов
/ 26 сентября 2019

Короче говоря: это означает, что что-то странное, и (вероятно) вы ничего не можете с этим поделать: - (

Файл журнала, созданный с помощью --prof, содержит, помимо прочего, три связанных типа:записи:

(1) "объект кода для функции F, созданный по адресу A с размером S"

(2) "объект кода, перемещенный из адреса A1 в адрес A2"

(3) «образец выполнения был взят по адресу E»

Тиковый процессор использует записи типов (1) и (2) для построения карты объектов кода, соответствующих функциям, поэтому, когда он видитзапись типа (3) ищет правильную функцию, такую, что A <= E && E <= A + S, а затем сообщает, что эта функция получила тик профилировщика. </p>

Когда что-то в данных противоречивоможет случиться так, что файл журнала будет содержать событие перемещения (запись типа (2)) для предполагаемого объекта кода по адресу A1, который никогда ранее не упоминался в записи типа (1). В этом случае процессор тиковне знаю что делать, поэтому яt выводит предупреждение.

Ваше предположение, что это как-то связано с наблюдением множества неучтенных тиков, вполне вероятно, верно.

Один из возможных способов обхода (который может или не может помочь) - указать--nocompact-code-space вместе с --prof.Это не должно быть необходимым, но тогда вы не должны получать эти события перемещения для неизвестного кода либо ...

...