我需要对一个应用程序进行性能分析,我使用了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)的代码对于I/O、数据传输、性能等方面的重要性。
我阅读了strace的man页面,但仍然不太自信。如果您有其他建议让我阅读,那将是非常好的。
我有一些关于操作系统的背景知识,并且理解什么是系统调用、内存、虚拟内存、调度等等。
man lseek
,man open
,man mmap
等等。 - nos