这是 的输出strace -T -ttt -ff -x -y -o pid.trace -p 2145
。跟踪如下。
1503431273.934716 semop(1204093022, {{0, 1, SEM_UNDO}}, 1) = 0 <0.000004> 1503431273.934737 clock_gettime(CLOCK_REALTIME, {1503431273, 934741536}) = 0 <0.000004> 1503431273.934763 写入(6</home/red/samples/debug/hexa.debug>,“17.08.23 01:17:53 [ hexa:2145”...,79)= 79 <0.000016> 1503431273.934960 brk(0) = 0x1adc000 <0.000004> 1503431273.934974 brk(0x1afd000) = 0x1afd000 <0.000006> 1503431273.934994 brk(0) = 0x1afd000 <0.000003> 1503431273.935006 brk(0) = 0x1afd000 <0.000004> 1503431273.935017 brk(0x1afc000) = 0x1afc000 <0.000008> 1503431273.935033 brk(0) = 0x1afc000 <0.000003> 1503431273.935045 brk(0) = 0x1afc000 <0.000004> 1503431273.935057 brk(0) = 0x1afc000 <0.000004> 1503431273.935068 brk(0x1afb000) = 0x1afb000 <0.000005> 1503431273.935080 brk(0) = 0x1afb000 <0.000003> 1503431291.010338 brk(0) = 0x1afb000 <0.000006> 1503431291.010366 brk(0x1b1c000) = 0x1b1c000 <0.000006> 1503431291.010391 brk(0) = 0x1b1c000 <0.000003> 1503431291.010403 brk(0) = 0x1b1c000 <0.000004> 1503431291.010414 brk(0x1b12000) = 0x1b12000 <0.000008> 1503431291.010430 brk(0) = 0x1b12000 <0.000004> 1503431291.010443 brk(0) = 0x1b12000 <0.000004> 1503431291.010455 brk(0) = 0x1b12000 <0.000003> 1503431291.010466 brk(0x1b11000) = 0x1b11000 <0.000004> 1503431291.010478 brk(0) = 0x1b11000 <0.000004> 1503431301.277050 clock_gettime(CLOCK_REALTIME, {1503431301, 277067441}) = 0 <0.000005> 1503431301.277094 写入(6</home/red/samples/debug/hexa.debug>,“17.08.23 01:18:21 [ hexa:2145”...,91)= 91 <0.000019> 1503431301.277201 clock_gettime(CLOCK_REALTIME, {1503431301, 277216542}) = 0 <0.000005> 1503431301.277234 写(6</home/red/samples/debug/hexa.debug>,“17.08.23 01:18:21 [ hexa:2145”...,126)= 126 <0.000018> 1503431301.277296 clock_gettime(CLOCK_REALTIME, {1503431301, 277301142}) = 0 <0.000004> 1503431301.277317 write(6</home/red/samples/debug/hexa.debug>, "17.08.23 01:18:21 [ hexa:2145"..., 126) = 126 <0.000012> 1503431301.288030 clock_gettime(CLOCK_REALTIME, {1503431301, 288037704}) = 0 <0.000004>
如果您在两个brk(0)s (请参阅 1503431273.935080 和 1503431291.010478)上查看上述跟踪,则分别花费了太多时间,分别约为17 秒和 10 秒(比较左侧时间)。但是右侧的执行时间很短。我已经在同一个Redhat Linux 盒子 (7.2) 中多次运行了这个程序,所有运行都在系统调用的同一位置 (brk(0)) 给出了相同的时间(微秒差异)。
可能是什么问题?它是在编程级别还是操作系统级别?我没有这方面的源代码,但我知道它是 ac/c++ 程序。