1. 30 Jul, 2008 27 commits
  2. 29 Jul, 2008 6 commits
  3. 28 Jul, 2008 7 commits
    • Rusty Russell's avatar
      lguest: turn Waker into a thread, not a process · 8c79873d
      Rusty Russell authored
      lguest uses a Waker process to break it out of the kernel (ie.
      actually running the guest) when file descriptor needs attention.
      
      Changing this from a process to a thread somewhat simplifies things:
      it can directly access the fd_set of things to watch.  More
      importantly, it means that the Waker can see Guest memory correctly,
      so /dev/vring file descriptors will work as anticipated (the
      alternative is to actually mmap MAP_SHARED, but you can't do that with
      /dev/zero).
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      8c79873d
    • Rusty Russell's avatar
      lguest: Enlarge virtio rings · 0f0c4fab
      Rusty Russell authored
      With big packets, 128 entries is a little small.
      
      Guest -> Host 1GB TCP:
      Before: 8.43625 seconds xmit 95640 recv 198266 timeout 49771 usec 1252
      After: 8.01099 seconds xmit 49200 recv 102263 timeout 26014 usec 2118
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      0f0c4fab
    • Rusty Russell's avatar
      lguest: Use GSO/IFF_VNET_HDR extensions on tun/tap · 398f187d
      Rusty Russell authored
      Guest -> Host 1GB TCP:
      Before 20.1974 seconds xmit 214510 recv 5 timeout 214491 usec 278
      After 8.43625 seconds xmit 95640 recv 198266 timeout 49771 usec 1252
      
      Host -> Guest 1GB TCP:
      Before: Seconds 9.98854 xmit 172166 recv 5344 timeout 172157 usec 251
      After: Seconds 5.72803 xmit 244322 recv 9919 timeout 244302 usec 156
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      398f187d
    • Rusty Russell's avatar
      lguest: Remove 'network: no dma buffer!' warning · 9254926f
      Rusty Russell authored
      This warning can happen a lot under load, and it should be warnx not
      warn anwyay.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      9254926f
    • Rusty Russell's avatar
      lguest: Adaptive timeout · aa124984
      Rusty Russell authored
      Since the correct timeout value varies, use a heuristic which adjusts
      the timeout depending on how many packets we've seen.  This gives
      slightly worse results, but doesn't need tweaking when GSO is
      introduced.
      
      500 usec	19.1887		xmit 561141 recv 1 timeout 559657
      Dynamic (278)	20.1974		xmit 214510 recv 5 timeout 214491 usec 278
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      aa124984
    • Rusty Russell's avatar
      lguest: Tell Guest net not to notify us on every packet xmit · a161883a
      Rusty Russell authored
      virtio_ring has the ability to suppress notifications.  This prevents
      a guest exit for every packet, but we need to set a timer on packet
      receipt to re-check if there were any remaining packets.
      
      Here are the times for 1G TCP Guest->Host with different timeout
      settings (it matters because the TCP window doesn't grow big enough to
      fill the entire buffer):
      
      Timeout value	Seconds		Xmit/Recv/Timeout
      None (before)	25.3784		xmit 7750233 recv 1
      2500 usec	62.5119		xmit 207020 recv 2 timeout 207020
      1000 usec	34.5379		xmit 207003 recv 2 timeout 207003
      750 usec	29.2305		xmit 207002 recv 1 timeout 207002
      500 usec	19.1887		xmit 561141 recv 1 timeout 559657
      250 usec	20.0465		xmit 214128 recv 2 timeout 214110
      100 usec	19.2583		xmit 561621 recv 1 timeout 560153
      
      (Note that these values are sensitive to the GSO patches which come
       later, and probably other traffic-related variables, so take with a
       large grain of salt).
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      a161883a
    • Rusty Russell's avatar
      lguest: net block unneeded receive queue update notifications · 5dae785a
      Rusty Russell authored
      Number of exits transmitting 10GB Guest->Host before:
      	network xmit 7858610 recv 118136
      
      After:
      	network xmit 7750233 recv 1
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      5dae785a