Mikio Hara
8f746af65d
runtime: drop EV_RECEIPT support from network pollster on kqueue
...
Currently Darwin and FreeBSD support and NetBSD and OpenBSD do not
support EV_RECEIPT flag. We will drop use of EV_RECEIPT for now.
Also enables to build runtime-integrated network pollster on
freebsd/amd64,386 and openbsd/amd64,386. It just does build but never
runs pollster stuff.
This is in preparation for runtime-integrated network pollster for BSD
variants.
Update #5199
R=dvyukov, minux.ma
CC=golang-dev
https://golang.org/cl/11759044
2013-07-25 00:24:17 +09:00
Mikio Hara
a0935cc979
runtime: fix throw message in netpoll
...
R=dvyukov, r
CC=golang-dev
https://golang.org/cl/11761043
2013-07-24 17:48:13 +09:00
Alex Brainman
6ea7bf253c
net: implement netpoll for windows
...
Moves the network poller from net package into runtime.
benchmark old ns/op new ns/op delta
BenchmarkTCP4OneShot 316386 287061 -9.27%
BenchmarkTCP4OneShot-2 339822 313424 -7.77%
BenchmarkTCP4OneShot-3 330057 306589 -7.11%
BenchmarkTCP4OneShotTimeout 341775 287061 -16.01%
BenchmarkTCP4OneShotTimeout-2 380835 295849 -22.32%
BenchmarkTCP4OneShotTimeout-3 398412 328070 -17.66%
BenchmarkTCP4Persistent 40622 33392 -17.80%
BenchmarkTCP4Persistent-2 44528 35736 -19.74%
BenchmarkTCP4Persistent-3 44919 36907 -17.84%
BenchmarkTCP4PersistentTimeout 45309 33588 -25.87%
BenchmarkTCP4PersistentTimeout-2 50289 38079 -24.28%
BenchmarkTCP4PersistentTimeout-3 51559 37103 -28.04%
BenchmarkTCP6OneShot 361305 345645 -4.33%
BenchmarkTCP6OneShot-2 361305 331976 -8.12%
BenchmarkTCP6OneShot-3 376929 347598 -7.78%
BenchmarkTCP6OneShotTimeout 361305 322212 -10.82%
BenchmarkTCP6OneShotTimeout-2 378882 333928 -11.86%
BenchmarkTCP6OneShotTimeout-3 388647 335881 -13.58%
BenchmarkTCP6Persistent 47653 35345 -25.83%
BenchmarkTCP6Persistent-2 49215 35736 -27.39%
BenchmarkTCP6Persistent-3 38474 37493 -2.55%
BenchmarkTCP6PersistentTimeout 56637 34369 -39.32%
BenchmarkTCP6PersistentTimeout-2 42575 38079 -10.56%
BenchmarkTCP6PersistentTimeout-3 44137 37689 -14.61%
R=dvyukov
CC=golang-dev
https://golang.org/cl/8670044
2013-07-22 12:49:57 +10:00
Alex Brainman
8486d96a27
runtime: change netpoll in preparation for windows implementation
...
- change runtime_pollWait so it does not return
closed or timeout if IO is ready - windows must
know if IO has completed or not even after
interruption;
- add (*pollDesc).Prepare(mode int) that can be
used for both read and write, same for Wait;
- introduce runtime_pollWaitCanceled and expose
it in net as (*pollDesc).WaitCanceled(mode int);
Full windows netpoll changes are
here https://golang.org/cl/8670044/ .
R=golang-dev, dvyukov
CC=golang-dev
https://golang.org/cl/10485043
2013-06-25 12:29:00 +10:00
Dmitriy Vyukov
5290e55164
runtime: use persistentalloc instead of SysAlloc in netpoll
...
Especially important for Windows because it reserves VM
only in multiple of 64k.
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/10138043
2013-06-09 21:39:47 +04:00
Alex Brainman
38abb09a2e
runtime: change PollDesc.fd from int32 to uintptr
...
This is in preparation for netpoll windows version.
R=golang-dev, bradfitz
CC=dvyukov, golang-dev, mikioh.mikioh
https://golang.org/cl/9569043
2013-05-20 12:55:50 +10:00
Dmitriy Vyukov
44840786ae
runtime: explicitly remove fd's from epoll waitset before close()
...
Fixes #5061 .
Current code relies on the fact that fd's are automatically removed from epoll set when closed. However, it is not true. Underlying file description is removed from epoll set only when *all* fd's referring to it are closed.
There are 2 bad consequences:
1. Kernel delivers notifications on already closed fd's.
2. The following sequence of events leads to error:
- add fd1 to epoll
- dup fd1 = fd2
- close fd1 (not removed from epoll since we've dup'ed the fd)
- dup fd2 = fd1 (get the same fd as fd1)
- add fd1 to epoll = EEXIST
So, if fd can be potentially dup'ed of fork'ed, it's necessary to explicitly remove the fd from epoll set.
R=golang-dev, bradfitz, dave
CC=golang-dev
https://golang.org/cl/7870043
2013-03-21 12:54:19 +04:00
Shenghou Ma
1d64d04da5
net, runtime: enable runtime-integrated pollster on Linux/ARM.
...
Results from linux/arm on a Samsung Chromebook (from dfc):
localhost(~/go/src/pkg/net) % ~/go/misc/benchcmp {old,new}.txt
benchmark old ns/op new ns/op delta
BenchmarkTCP4OneShot 568840 350526 -38.38%
BenchmarkTCP4OneShot-2 359054 206708 -42.43%
BenchmarkTCP4OneShotTimeout 637464 363550 -42.97%
BenchmarkTCP4OneShotTimeout-2 374255 216695 -42.10%
BenchmarkTCP4Persistent 184974 64984 -64.87%
BenchmarkTCP4Persistent-2 109902 47195 -57.06%
BenchmarkTCP4PersistentTimeout 210039 64789 -69.15%
BenchmarkTCP4PersistentTimeout-2 124284 43374 -65.10%
BenchmarkTCP6OneShot 672278 362116 -46.14%
BenchmarkTCP6OneShot-2 383631 216400 -43.59%
BenchmarkTCP6OneShotTimeout 680740 378306 -44.43%
BenchmarkTCP6OneShotTimeout-2 397524 230152 -42.10%
BenchmarkTCP6Persistent 172346 65292 -62.12%
BenchmarkTCP6Persistent-2 106229 42096 -60.37%
BenchmarkTCP6PersistentTimeout 161149 65138 -59.58%
BenchmarkTCP6PersistentTimeout-2 152276 44548 -70.75%
R=golang-dev, dave, bradfitz, dvyukov, rsc
CC=golang-dev
https://golang.org/cl/7820045
2013-03-16 04:01:56 +08:00
Dmitriy Vyukov
49e0300854
runtime: integrated network poller for linux
...
vs tip:
BenchmarkTCP4OneShot 172994 40485 -76.60%
BenchmarkTCP4OneShot-2 96581 30028 -68.91%
BenchmarkTCP4OneShot-4 52615 18454 -64.93%
BenchmarkTCP4OneShot-8 26351 12289 -53.36%
BenchmarkTCP4OneShot-16 12258 16093 +31.29%
BenchmarkTCP4OneShot-32 13200 17045 +29.13%
BenchmarkTCP4OneShotTimeout 124814 42932 -65.60%
BenchmarkTCP4OneShotTimeout-2 99090 29040 -70.69%
BenchmarkTCP4OneShotTimeout-4 51860 18455 -64.41%
BenchmarkTCP4OneShotTimeout-8 26100 12073 -53.74%
BenchmarkTCP4OneShotTimeout-16 12198 16654 +36.53%
BenchmarkTCP4OneShotTimeout-32 13438 17143 +27.57%
BenchmarkTCP4Persistent 115647 7782 -93.27%
BenchmarkTCP4Persistent-2 58024 4808 -91.71%
BenchmarkTCP4Persistent-4 24715 3674 -85.13%
BenchmarkTCP4Persistent-8 16431 2407 -85.35%
BenchmarkTCP4Persistent-16 2336 1875 -19.73%
BenchmarkTCP4Persistent-32 1689 1637 -3.08%
BenchmarkTCP4PersistentTimeout 79754 7859 -90.15%
BenchmarkTCP4PersistentTimeout-2 57708 5952 -89.69%
BenchmarkTCP4PersistentTimeout-4 26907 3823 -85.79%
BenchmarkTCP4PersistentTimeout-8 15036 2567 -82.93%
BenchmarkTCP4PersistentTimeout-16 2507 1903 -24.09%
BenchmarkTCP4PersistentTimeout-32 1717 1627 -5.24%
vs old scheduler:
benchmark old ns/op new ns/op delta
BenchmarkTCPOneShot 192244 40485 -78.94%
BenchmarkTCPOneShot-2 63835 30028 -52.96%
BenchmarkTCPOneShot-4 35443 18454 -47.93%
BenchmarkTCPOneShot-8 22140 12289 -44.49%
BenchmarkTCPOneShot-16 16930 16093 -4.94%
BenchmarkTCPOneShot-32 16719 17045 +1.95%
BenchmarkTCPOneShotTimeout 190495 42932 -77.46%
BenchmarkTCPOneShotTimeout-2 64828 29040 -55.20%
BenchmarkTCPOneShotTimeout-4 34591 18455 -46.65%
BenchmarkTCPOneShotTimeout-8 21989 12073 -45.10%
BenchmarkTCPOneShotTimeout-16 16848 16654 -1.15%
BenchmarkTCPOneShotTimeout-32 16796 17143 +2.07%
BenchmarkTCPPersistent 81670 7782 -90.47%
BenchmarkTCPPersistent-2 26598 4808 -81.92%
BenchmarkTCPPersistent-4 15633 3674 -76.50%
BenchmarkTCPPersistent-8 18093 2407 -86.70%
BenchmarkTCPPersistent-16 17472 1875 -89.27%
BenchmarkTCPPersistent-32 7679 1637 -78.68%
BenchmarkTCPPersistentTimeout 83186 7859 -90.55%
BenchmarkTCPPersistentTimeout-2 26883 5952 -77.86%
BenchmarkTCPPersistentTimeout-4 15776 3823 -75.77%
BenchmarkTCPPersistentTimeout-8 18180 2567 -85.88%
BenchmarkTCPPersistentTimeout-16 17454 1903 -89.10%
BenchmarkTCPPersistentTimeout-32 7798 1627 -79.14%
R=golang-dev, iant, bradfitz, dave, rsc
CC=golang-dev
https://golang.org/cl/7579044
2013-03-14 19:06:35 +04:00
Dmitriy Vyukov
f51ec00722
runtime: fix build
...
R=golang-dev
CC=golang-dev
https://golang.org/cl/7529049
2013-03-14 10:59:55 +04:00
Dmitriy Vyukov
0bee99ab3b
runtime: integrated network poller for darwin
...
vs tip:
benchmark old ns/op new ns/op delta
BenchmarkTCP4Persistent 67786 33175 -51.06%
BenchmarkTCP4Persistent-2 49085 31227 -36.38%
BenchmarkTCP4PersistentTimeout 69265 32565 -52.98%
BenchmarkTCP4PersistentTimeout-2 49217 32588 -33.79%
vs old scheduler:
benchmark old ns/op new ns/op delta
BenchmarkTCP4Persistent 63517 33175 -47.77%
BenchmarkTCP4Persistent-2 54760 31227 -42.97%
BenchmarkTCP4PersistentTimeout 63234 32565 -48.50%
BenchmarkTCP4PersistentTimeout-2 56956 32588 -42.78%
R=golang-dev, bradfitz, devon.odell, mikioh.mikioh, iant, rsc
CC=golang-dev, pabuhr
https://golang.org/cl/7569043
2013-03-14 10:38:37 +04:00