Skip to content
  • Rusty Russell's avatar
    lguest: improve interrupt handling, speed up stream networking · a32a8813
    Rusty Russell authored
    
    
    lguest never checked for pending interrupts when enabling interrupts, and
    things still worked.  However, it makes a significant difference to TCP
    performance, so it's time we fixed it by introducing a pending_irq flag
    and checking it on irq_restore and irq_enable.
    
    These two routines are now too big to patch into the 8/10 bytes
    patch space, so we drop that code.
    
    Note: The high latency on interrupt delivery had a very curious
    effect: once everything else was optimized, networking without GSO was
    faster than networking with GSO, since more interrupts were sent and
    hence a greater chance of one getting through to the Guest!
    
    Note2: (Almost) Closing the same loophole for iret doesn't have any
    measurable effect, so I'm leaving that patch for the moment.
    
    Before:
    	1GB tcpblast Guest->Host:		30.7 seconds
    	1GB tcpblast Guest->Host (no GSO):	76.0 seconds
    
    After:
    	1GB tcpblast Guest->Host:		6.8 seconds
    	1GB tcpblast Guest->Host (no GSO):	27.8 seconds
    
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    a32a8813