Мне нужно профилировать производительность приложения, для которого я использую 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
Я был бы признателен, если бы кто-нибудь мог вкратце объяснить на простом английском языке, что эти строки от (А) до (F) действительно означают с точки зрения ввода-вывода, передачи данных, значимости для производительности и т.д.
Я просмотрел страницы руководства strace, но все же не очень уверен. Если у вас есть другие указатели на чтение, это будет здорово.
У меня есть опыт работы с операционными системами и понимание того, какие системные вызовы, память, виртуальная память, планирование и т.д.