• David Wilson's avatar
    core: replace Queue with Latch · e6a107c5
    David Wilson authored
    On Python 2.x, operations on pthread objects with a timeout set actually
    cause internal polling. When polling fails to yield a positive result,
    it quickly backs off to a 50ms loop, which results in a huge amount of
    latency throughout.
    
    Instead, give up using Queue.Queue.get(timeout=...) and replace it with
    the UNIX self-pipe trick. Knocks another 45% off my.yml in the Ansible
    examples directory against a local VM.
    
    This has the potential to burn a *lot* of file descriptors, but hell,
    it's not the 1940s any more, RAM is all but infinite. I can live with
    that.
    
    This gets things down to around 75ms per playbook step, still hunting
    for additional sources of latency.
    e6a107c5
mitogen.py 3.83 KB