Ответ 1
__mac_get_pid
- это syscall за функцией библиотеки mac_get_pid
. Это описано в man-странице mac_get
: http://man.cx/mac_get(3)
mac_get_pid.. получить метку файла, сокета, сокета или процесса сокета Системные вызовы mac_get_pid() и mac_get_proc() возвращают метку процесса, связанную с произвольным идентификатором процесса или текущим процессом.
Хранилище ярлыков для использования с этими вызовами должно быть сначала выделено и подготовлено с использованием функций mac_prepare (3). Когда приложение выполняется с использованием метки, память может быть возвращена с использованием mac_free (3).
"MAC" здесь не Mac OS X/macOS, но POSIX.1e Обязательный контроль доступа ( "был введен в FreeBSD 5.0 как часть TrustedBSD Project "), mac_get_pid
реализован в macOS/Dawrin/XNU как "Расширенные интерфейсы без POSIX.1e".
Возможно, есть несколько методов в используемых библиотеках nodejs, которые пытаются выполнить детальную работу с списками процессов (например, ps/top), но они не смогли ограничить скорость своих запросов. Получение нескольких stacktraces с помощью mac_get_pid
либо с профилировщиком (не v8 profiler, в котором stacktraces только js, но какой-то внешний профилировщик подключен к процессу nodejs) или с помощью отладчика (gdb/lldb) вручную, останавливая и проверяя обратную линию, пока не найдете, кто звонит mac_get_pid
(продолжайте и остановите снова, когда вы не находитесь в mac_get_pid
) - это необходимый шаг, чтобы узнать, кто его назвал.