Hello, 1. I have a simple one-threaded tcp server written in Java. I try to measure its receive-and-process-response latency. More preceisely, the client sends (by loopback) the 128-bytes message with a timestamp in the header. The server receives a message, reads a content byte by byte and compute a difference between `now` and the timestamp from the header. The difference is more or less 6μs.
Now, I am trying to make it faster. But, firstly I would like to examine a scheduling issue. So, I've collected results with: perf sched record -p <PID> -- sleep 10 and then: perf sched timehist -V Excerpt from the result is presented below: (I've filtered it for my server thread) wait time sch delay run time time cpu task name [tid/pid] (msec) (msec) (msec) --------------- ------ --------- ------------------------------ --------- --------- --------- 1849.531842 [0002] s java[7340/7338] 0.000 0.000 56.003 21849.587844 [0002] s java[7340/7338] 0.000 0.000 56.001 21849.607838 [0002] s java[7340/7338] 0.000 0.000 19.994 21849.615836 [0002] s java[7340/7338] 0.000 0.000 7.998 ............................................................................................... 21849.691834 [0002] s java[7340/7338] 0.000 0.000 4.000 21849.703837 [0001] s java[7340/7338] 0.000 0.000 38.330 21849.711838 [0005] s java[7340/7338] 0.000 0.000 0.000 21849.719834 [0005] s java[7340/7338] 0.000 0.000 7.996 My question is: How is it possible that wait_time is always zero? After all, it is impossible. My CPU is multicore but there is a lot of processes (threads) that needs CPU time. How to interpret that? >From the other hand I am gonna to reduce CPU migration. Perhaps it will help :-) 2. The second issue is: The excerpt from perf sched script java 7340 [002] 21848.012360: sched:sched_wakeup: comm=java pid=7511 prio=120 target_cpu=005 java 7340 [002] 21848.012375: sched:sched_wakeup: comm=java pid=7511 prio=120 target_cpu=005 java 7340 [002] 21848.012391: sched:sched_wakeup: comm=java pid=7511 prio=120 target_cpu=005 java 7340 [002] 21848.012406: sched:sched_wakeup: comm=java pid=7511 prio=120 target_cpu=005 ................................................................................................... swapper 0 [007] 21848.012554: sched:sched_wakeup: comm=java pid=7377 prio=120 target_cpu=007 swapper 0 [007] 21848.012554: sched:sched_wakeup: comm=java pid=7377 prio=120 target_cpu=007 ................................................................................................... java 7340 [002] 21848.012555: sched:sched_wakeup: comm=java pid=7511 prio=120 target_cpu=005 java 7377 [007] 21848.012582: sched:sched_stat_runtime: comm=java pid=7377 runtime=37420 [ns] vruntime=1628300433237 [ns] java 7340 [002] 21848.012585: sched:sched_wakeup: comm=java pid=7511 prio=120 target_cpu=005 java 7377 [007] 21848.012587: sched:sched_switch: prev_comm=java prev_pid=7377 prev_prio=120 prev_state=S ==> next_comm= swapper/7 next_pid=0 next_prio=120 Why my server receives sched_wakup that looks like spurious wakeups? What is a swapper? -- You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group. To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.