The strace shows that the client? does lots of little send's
also, the response is handled in a different thread than the sender so they
spend a lot of time banging on futex's.
I got these by doing
strace -ff -o /tmp/foo eclipse
sched_getscheduler(15164) = 0 (SCHED_OTHER)
gettimeofday({1142026997, 896025}, NULL) = 0
futex(0x80b77ec, FUTEX_WAKE, 1) = 1
futex(0x80b77e8, FUTEX_WAKE, 1) = 0
futex(0x80ce014, FUTEX_WAIT, 3, NULL) = 0
futex(0x805c638, FUTEX_WAIT, 2, NULL) = -1 EAGAIN (Resource temporarily
unavailable)
futex(0x805c638, FUTEX_WAKE, 1) = 0
futex(0x80cca4c, FUTEX_WAIT, 5, NULL) = 0
futex(0x80cca48, FUTEX_WAIT, 2, NULL) = 0
futex(0x80cca48, FUTEX_WAKE, 1) = 0
futex(0x80cac18, FUTEX_WAKE, 1) = 0
send(3, "\0\0\0\37", 4, 0) = 4
send(3, "\0\0\0\2", 4, 0) = 4
send(3, "\200", 1, 0) = 1
send(3, "\0\0", 2, 0) = 2
send(3, "\0\0\0\4\0\0\0\4\0\0\0\10\0\0\0\10\0\0\0\10", 20, 0) = 20
futex(0x80cca4c, FUTEX_WAIT, 7, NULL) = 0
futex(0x80cca48, FUTEX_WAIT, 2, NULL) = 0
futex(0x80cca48, FUTEX_WAKE, 1) = 0
futex(0x80cac18, FUTEX_WAKE, 1) = 0
send(3, "\0\0\0\17", 4, 0) = 4
send(3, "\0\0\0\3", 4, 0) = 4
send(3, "\200", 1, 0) = 1
send(3, "\0\0", 2, 0) = 2
send(3, "\0\0\0\2", 4, 0) = 4