On Mon, 23 Jul 2001, Justin Erenkrantz wrote: | Thanks for the heads-up. | | I just committed the relevant bits. Please check it out and give me | feedback if it doesn't work as expected. | | I'll say that the Solaris implementation is actually very nice compared | to all of the other ones out there. Too bad it's taken this long for | Sun to implement this. -- justin
I just used the latest CVS checkout, and the use of sendfilev() looks great so far. I noticed that during the xfer, httpd used alot less CPU time, while I got around a 130Kb/s (this was across a T1) xfer rate. The only thing I saw amiss were the following compiler warnings: /bin/sh /local/src/apache-dev/httpd-2.0/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -pthreads -DHAVE_CONFIG_H -DSOLARIS2=8 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -I../../include -I../../include/arch/unix -I../../include/arch/unix -c sendrecv.c && touch sendrecv.lo sendrecv.c: In function `apr_sendfile': sendrecv.c:784: warning: assignment makes integer from pointer without a cast sendrecv.c:805: warning: assignment makes integer from pointer without a cast The test machine is a Sun Ultra 2, 2x300Mhz, 1768MB RAM, Sol8 4/01 with sendfile patches. Here's a truss of the tail-end of a 15MB file xfer: /7: poll(0xFE8FEF88, 1, 300000) = 1 /7: fd=59 ev=POLLOUT rev=POLLOUT /7: sendfilev(0, 59, 0x001AE388, 1, 0xFE8FF2DC) Err#11 EAGAIN sfv_fd=60 sfv_flag=0x0 sfv_off=15769544 sfv_len=323640 /7: poll(0xFE8FEF88, 1, 300000) = 1 /7: fd=59 ev=POLLOUT rev=POLLOUT /7: sendfilev(0, 59, 0x001AE398, 1, 0xFE8FF2DC) Err#11 EAGAIN sfv_fd=60 sfv_flag=0x0 sfv_off=15832728 sfv_len=260456 /7: poll(0xFE8FEF88, 1, 300000) = 1 /7: fd=59 ev=POLLOUT rev=POLLOUT /7: sendfilev(0, 59, 0x001AE3A8, 1, 0xFE8FF2DC) Err#11 EAGAIN sfv_fd=60 sfv_flag=0x0 sfv_off=15895912 sfv_len=197272 /7: poll(0xFE8FEF88, 1, 300000) = 1 /7: fd=59 ev=POLLOUT rev=POLLOUT /7: sendfilev(0, 59, 0x001AE3B8, 1, 0xFE8FF2DC) Err#11 EAGAIN sfv_fd=60 sfv_flag=0x0 sfv_off=15961448 sfv_len=131736 /7: poll(0xFE8FEF88, 1, 300000) = 1 /7: fd=59 ev=POLLOUT rev=POLLOUT /7: sendfilev(0, 59, 0x001AE3C8, 1, 0xFE8FF2DC) Err#11 EAGAIN sfv_fd=60 sfv_flag=0x0 sfv_off=16024632 sfv_len=68552 /7: poll(0xFE8FEF88, 1, 300000) = 1 /7: fd=59 ev=POLLOUT rev=POLLOUT /7: sendfilev(0, 59, 0x001AE3D8, 1, 0xFE8FF2DC) = 5368 sfv_fd=60 sfv_flag=0x0 sfv_off=16087816 sfv_len=5368 /7: read(59, 0x0022AF10, 8192) Err#11 EAGAIN /7: time() = 996002507 /7: write(44, 0x001DF8D0, 287) = 287 /7: 0x001DF8D0: " 1 6 4 . 1 0 9 . 1 2 0 .".. /7: times(0xFF08BFC8) = 17429004 /7: utim=16 stim=84 cutim=0 cstim=0 (HZ=100) /7: close(60) = 0 /7: read(59, 0x00236F90, 8192) Err#11 EAGAIN /1: lwp_mutex_lock(0xFF1E0000) (sleeping...) /1: mutex type: USYNC_PROCESS|LOCK_PRIO_INHERIT|LOCK_ROBUST_NP /2: signotifywait() (sleeping...)
