• DocumentCode
    2011528
  • Title

    Optimizing Event Polling for Network-Intensive Applications: A Case Study on Redis

  • Author

    Xingbo Wu ; Xiang Long ; Lei Wang

  • Author_Institution
    Sch. of Comput. Sci. & Eng., Beihang Univ., Beijing, China
  • fYear
    2013
  • fDate
    15-18 Dec. 2013
  • Firstpage
    687
  • Lastpage
    692
  • Abstract
    In today´s data centers supporting Internet-scale computing and I/O services, increasingly more network-intensive applications are deployed on the network as a service. To this end, it is critical for the applications to quickly retrieve requests from the network and send their responses to the network. To facilitate this network function, operating system usually provides an event notification mechanism so that the applications (or the library) know if the network is ready to supply data for them to read or to receive data for them to write. As a widely used and representative notification mechanism, epoll in Linux provides a scalable and high-performance implementation by allowing applications to specifically indicate which connections and what events on them need to be watched. As epoll has been used in some major systems, including KV systems, such as Redis and Memcached, and web server systems such as NGINX, we have identified a substantial performance issue in its use. For the sake of efficiency, applications usually use epoll´s system calls to inform the kernel exactly of what events they are interested in and always keep the information up-to-date. However, in a system with demanding network traffic, such a rigid maintenance of the information is not necessary and the excess number of system calls for this purpose can substantially degrade the system´s performance. In this paper, we use Redis as an example to explore the issue. We propose a strategy of informing the kernel of the interest events in a manner adaptive to the current network load, so that the epoll system calls can be reduced and the events can be efficiently delivered. We have implemented the strategy, named as FlexPoll, in Redis without modifying any kernel code. Our evaluation on Redis shows that the query throughput can be improved by up to 46.9% on micro benchmarks, and even up to 67.8% on workloads emulating real-world access patterns. FlexPoll can be extended to other applications an- event libraries built on the epoll mechanism in a straightforward manner.
  • Keywords
    Internet; Linux; operating system kernels; FlexPoll; I/O services; Internet-scale computing; Linux; Memcached; NGINX; Redis; Web server systems; data centers; epoll mechanism; epoll system calls; event notification mechanism; event polling; kernel code; network function; network traffic; network-intensive applications; operating system; representative notification mechanism; Benchmark testing; Kernel; Linux; Servers; Subscriptions; Throughput; Writing; Operating systems; Performance evaluation and modeling; Storage systems and networks; Workload characterization;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Parallel and Distributed Systems (ICPADS), 2013 International Conference on
  • Conference_Location
    Seoul
  • ISSN
    1521-9097
  • Type

    conf

  • DOI
    10.1109/ICPADS.2013.122
  • Filename
    6808259