Мне нужно профилировать производительность приложения, для которого я использую strace. Однако я действительно не знаю, как интерпретировать различные системные вызовы, которые излучает strace. Примеры некоторых из них приведены ниже:
(A) lseek(3, 1600, SEEK_SET) = 1600
(B) write(3, "G_DATA 300 0 "..., 800) = 800
(C) close(3) = 0
(D) mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b600b179000
(E) munmap(0x2b600b179000, 4096) = 0
(F) fstat(3, {st_mode=S_IFREG|0644, st_size=1600, ...}) = 0
Я был бы признателен, если бы кто-нибудь кратко объяснил простым языком, что эти строки от (A) до (F) на самом деле означают с точки зрения ввода-вывода, передаваемых данных, значимости для производительности и т.д.
Я просмотрел man-страницы strace, но все еще не очень уверен. Если вы хотите мне прочитать какие-либо другие указатели, это было бы здорово.
У меня есть некоторый опыт работы с операционными системами и я понимаю, что такое системные вызовы, память, виртуальная память, планирование и т. Д.
Для каждой команды есть страница справочника, вы можете прочитать ее, набрав man
и название функции C, например, man lseek
(также проверьте apropos
). У них также есть описание переданных параметров.
Вот краткие описания:
lseek
- переместить смещение файла для чтения / записи дескриптора файла write
- записать в дескриптор файла из буфера close
- удалить дескриптор из справочной таблицы объектов для процесса mmap
- выделить память или отобразить файлы или устройства в память munmap
- удалить сопоставление для указанного диапазона адресов fstat
- получить состояние файла, на которое указывает путь Обратите внимание, что интерпретация одиночных / случайных сискалей не будет иметь смысла с точки зрения производительности , Чтобы проверить значимость этих системных вызовов, вы должны использовать параметр -c
, который может подсчитывать время, вызовы и ошибки для каждого системного вызова и сообщать сводку. Тогда вы можете прочитать больше о них, которые занимают больше всего времени.
Чтобы узнать больше о выходных данных и параметрах strace
, проверьте man strace
.