Messages in this thread | | | Date | Mon, 03 Jul 2000 02:06:50 +1000 | From | Andrew Morton <> | Subject | Re: Low Latency |
| |
Paul Barton-Davis wrote: > > > However, I imagine that Ingo and/or his previous patches will have > some really good clues on where to look. Don't forget that the > empirical evidence is that his patches fixed more or less every > problem for 2.2-UP.
Sure. So one approach is for someone-not-me to sit down and incrementally back out the low-latency patch, see which bits are valuable.
> So before you go running off to write a lot of > code, it would be worth checking those out to see what specific > problem areas he fixed.
I lied (about the several days). I hadn't accounted for sneakiness :)
#calls min max avg total
start 0003:0 -> stop 0003:0 11984 .44 137335.63 79.00 946861.71 start 0036:0 -> switchout 0036:0 1 51636.55 51636.55 51636.55 51636.55 start 0006:0 -> stop 0006:0 8822 .22 47868.22 9.86 87004.02 switchin 0036:0 -> stop 0036:0 1 38198.23 38198.23 38198.23 38198.23 start 0004:0 -> stop 0004:0 3616 .28 25446.21 122.41 442662.70 switchin 0036:0 -> switchout 0036:0 5 344.51 9536.27 2231.37 11156.85 switchin 0120:0 -> switchout 0120:0 12 300.87 2231.35 1118.98 13427.84 start 0001:0 -> switchout 0001:0 277 165.86 1754.28 378.32 104797.19 start 0011:0 -> stop 0011:0 1509 3.42 995.88 123.24 185981.58 switchin 0003:0 -> switchout 0003:0 15 83.93 923.64 358.31 5374.81 start 0002:0 -> stop 0002:0 51 248.54 661.83 431.20 21991.57 start 0091:0 -> stop 0091:0 1801 2.85 409.20 15.75 28373.10 start 0038:0 -> stop 0038:0 2 147.49 303.00 225.25 450.50 start 0141:0 -> stop 0141:0 6026 .52 263.12 18.52 111657.39 start 0106:0 -> stop 0106:0 23485 1.86 254.12 13.91 326718.06 start 0045:0 -> stop 0045:0 27837 .23 229.38 12.53 348853.23 start 0003:0 -> switchout 0003:0 1136 1.59 223.38 17.87 20305.02 start 0005:0 -> stop 0005:0 9451 4.18 179.53 24.04 227235.87 start 0125:0 -> stop 0125:0 371 2.36 176.07 11.21 4160.32 start 0190:0 -> switchout 0190:0 233 73.96 157.05 98.82 23025.28 start 0010:0 -> stop 0010:0 9 67.38 153.94 136.28 1226.60 switchin 0003:0 -> stop 0003:0 1136 .54 149.06 42.52 48304.91 start 0042:0 -> stop 0042:0 111 9.08 137.98 53.35 5922.20 start 0102:0 -> stop 0102:0 12 43.79 130.50 88.73 1064.81 start 0004:0 -> switchout 0004:0 23 21.81 120.93 91.58 2106.46 switchin 0004:0 -> switchout 0004:0 1192 32.20 118.27 50.94 60721.34
What this represents is the microseconds between particular points in the kernel.
"start NNNN:0 -> stop NNNN:0" is the time between entering syscall number NNNN and leaving. There is no intervening call to schedule().
"start NNNN:0 -> switchout NNNN:0" is the time between entering syscall NNNN and hitting switch_to() in schedule().
"switchin NNNN:0 -> stop NNNN:0" is the time between returning from switch_to() and leaving the syscall.
sys_read() can remain in the kernel for a couple of hundred milliseconds. You'll note that sometimes sys_read() will call schedule() "start 0003:0 -> switchout 0003:0". But sometimes it doesn't.
It's possible that I've screwed up, and there really was an intervening schedule() in there. I'll take a look at the sys_read() code paths tomorrow...
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |