Hello, I'm trying to understand whether net.Conn.Read() is expected to use a lot more CPU than reading using the lower level socket interface or if I am doing something wrong(or perhaps comparing apples to oranges)?
Consumer and producer apps are running on two different Linux machines, in "top" the net.Conn.Read() app is showing 20-30% higher CPU than the app using Recvfrom() Thanks Anton *producer.go* import "net" func main() { l, _ := net.Listen("tcp", "192.168.1.7:3333") conn, _ := l.Accept() for { conn.Write([]byte("abcdefgh")) } } *consumer_recvfrom.go* import ( "golang.org/x/sys/unix" "net" ) func main() { var addr [4]byte copy(addr[:], net.ParseIP("192.168.1.7").To4()) fd, _ := unix.Socket(unix.AF_INET, unix.SOCK_STREAM, 0) unix.Connect(fd, &unix.SockaddrInet4{Port: 3333, Addr: addr}) b := make([]byte, 65536, 65536) for { unix.Recvfrom(fd, b, 0) } } *consumer_netread.go* import "net" func main() { conn, _ := net.Dial("tcp", "192.168.1.7:3333") b := make([]byte, 65536, 65536) for { conn.Read(b) } } *consumer_recvfrom:* $ vmstat 10 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 864 1568372 332 2072064 0 0 0 0 2 1 0 0 100 0 0 0 0 864 1568616 332 2071980 0 0 0 0 14950 10844 0 9 91 0 0 0 0 864 1568832 332 2071976 0 0 0 0 14307 12735 0 8 92 0 0 0 0 864 1568616 332 2071976 0 0 0 0 15106 10634 0 9 90 0 0 0 0 864 1568708 332 2071980 0 0 0 0 15214 10839 0 9 90 0 0 1 0 864 1568900 332 2071880 0 0 0 0 15466 13163 0 8 91 0 0 0 0 864 1568572 332 2072116 0 0 0 0 14579 11268 0 9 91 0 0 1 0 864 1568788 332 2071992 0 0 0 0 15278 11370 0 9 91 0 0 1 0 864 1568884 332 2071912 0 0 0 0 16468 11986 0 9 91 0 0 1 0 864 1568756 332 2071880 0 0 0 0 15769 11242 0 9 90 0 0 TX eth0: 126469 pkts/10s RX eth0: 558847 pkts/10s TX eth0: 127229 pkts/10s RX eth0: 530672 pkts/10s TX eth0: 113907 pkts/10s RX eth0: 572163 pkts/10s TX eth0: 114638 pkts/10s RX eth0: 519287 pkts/10s TX eth0: 119010 pkts/10s RX eth0: 553152 pkts/10s *consumer_netread:* $ vmstat 10 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 864 1570996 332 2071956 0 0 0 0 2 2 0 0 100 0 0 1 0 864 1571004 332 2072132 0 0 0 0 28082 32770 2 12 86 0 0 2 0 864 1571108 332 2071924 0 0 0 0 28370 29395 2 12 86 0 0 2 0 864 1571808 332 2071924 0 0 0 0 28847 29513 2 12 86 0 0 2 0 864 1571196 332 2071892 0 0 0 0 28499 31063 2 13 86 0 0 1 0 864 1571136 332 2071892 0 0 0 0 30216 33711 2 12 86 0 0 2 0 864 1570920 332 2071892 0 0 0 0 28224 30675 2 12 86 0 1 2 0 864 1570860 332 2071892 0 0 0 0 26453 29701 2 12 86 0 0 1 0 864 1571112 332 2071892 0 0 0 0 26917 29510 2 12 86 0 0 0 0 864 1571128 332 2071892 0 0 0 0 27030 29683 2 13 86 0 0 TX eth0: 80310 pkts/10s RX eth0: 584112 pkts/10s TX eth0: 88469 pkts/10s RX eth0: 512453 pkts/10s TX eth0: 89665 pkts/10s RX eth0: 512174 pkts/10s TX eth0: 84497 pkts/10s RX eth0: 480085 pkts/10s TX eth0: 92261 pkts/10s RX eth0: 540044 pkts/10s -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.