AFP: Um Escalonador de Requisições de Microsserviços Guiado por Feedback
Resumo
Aplicações que atendem milhões de usuários na Internet, como redes sociais e jogos online, são tipicamente decompostas em microsserviços para escalar e prover baixos tempos de resposta. Muitas dessas aplicações processam requisições com alta dispersão de tempo de serviço, o que leva ao problema de Head-Of-Line Blocking em que requisições com altos tempos de serviço bloqueiam outras requisições e aumentam as latências médias e de cauda das requisições. Este trabalho apresenta AFP (Application Feedback Policy), uma política de escalonamento que mitiga esse problema. Resultados experimentais mostram que AFP processa 4,5× mais carga de trabalho que a melhor solução conhecida para SLOs da ordem de alguns microssegundos.Referências
Ardelean, D. et al. (2018). Performance Analysis of Cloud Applications. In USENIX NSDI’18.
Barbette, T. et al. (2019). RSS++ Load and State-aware Receive Side Scaling. In ACM CoNEXT’19.
Belay, A. et al. (2012). Dune: Safe User-level Access to Privileged CPU Features. In USENIX OSDI’12.
Benson, T. et al. (2010). Network Traffic Characteristics of Data Centers in the Wild. In ACM IMC’10.
Carvalho, F. B. et al. (2022). Dyssect: Dynamic Scaling of Stateful Network Functions. In IEEE INFOCOM 2022.
Dean, J. and Barroso, L. A. (2013). The Tail at Scale. Communications of the ACM.
Delgado, P. et al. (2016). Job-aware Scheduling in Eagle: Divide and Stick to Your Probes. In ACM SoCC’16.
Demoulin, H. M. et al. (2021). When Idling is Ideal: Optimizing Tail-latency for Heavy-tailed Datacenter Workloads with Perséphone. In ACM SOSP’21.
Didona, D. and Zwaenepoel, W. (2019). Size-Aware Sharding for Improving Tail Latencies in In-Memory Key-Value Stores. In USENIX NSDI’19.
Foundation, L. (2024). The Linux Kernel. Disponível em [link].
Fried, J. et al. (2020). Caladan: Mitigating Interference at Microsecond Timescales. In USENIX OSDI’20.
Intel (2023). Intel® 64 and IA-32 Architectures Software Developer’s Volumes 3C: System Programming Guide. Seção 26.5.5.
Kaffes, K. et al. (2019). Shinjuku: Preemptive Scheduling for µsecond-scale Tail Latency. In USENIX NSDI’19.
McClure, S. et al. (2022). Efficient Scheduling Policies for Microsecond-Scale Tasks. In USENIX NSDI’22.
Nishtala, R. et al. (2013). Scaling Memcache at Facebook. In USENIX NSDI’13.
Ousterhout, A. et al. (2019). Shenango: Achieving High CPU Efficiency for Latency-Sensitive Datacenter Workloads. In USENIX NSDI’19.
Ousterhout, J. et al. (2015). The RAMCloud Storage System. ACM Transactions on Computer Systems (TOCS).
Peter, S. et al. (2015). Arrakis: The Operating System is the Control Plane. ACM Transactions on Computer Systems (TOCS).
Prekas, G. et al. (2017). Zygos: Achieving Low Tail Latency for Microsecond-Scale Networked Tasks. In ACM SOSP’17.
Qin, H. et al. (2018). Arachne: Core-Aware Thread Management. In USENIX OSDI’18.
Redis Ltd. (2023). Redis. Disponível em [link].
Schöne, R. et al. (2015). Wake-up Latencies for Processor Idle States on Current x86 Processors. Computer Science-Research and Development.
Sohil Mehta (2023). x86 User Interrupts support. Disponível em [link].
Wierman, A. and Zwart, B. (2012). Is Tail-Optimal Scheduling Possible? Operations Research.
Zhang, Z. et al. (2022). CRISP: Critical Path Analysis of Large-Scale Microservice Architectures. In USENIX ATC’22.
Barbette, T. et al. (2019). RSS++ Load and State-aware Receive Side Scaling. In ACM CoNEXT’19.
Belay, A. et al. (2012). Dune: Safe User-level Access to Privileged CPU Features. In USENIX OSDI’12.
Benson, T. et al. (2010). Network Traffic Characteristics of Data Centers in the Wild. In ACM IMC’10.
Carvalho, F. B. et al. (2022). Dyssect: Dynamic Scaling of Stateful Network Functions. In IEEE INFOCOM 2022.
Dean, J. and Barroso, L. A. (2013). The Tail at Scale. Communications of the ACM.
Delgado, P. et al. (2016). Job-aware Scheduling in Eagle: Divide and Stick to Your Probes. In ACM SoCC’16.
Demoulin, H. M. et al. (2021). When Idling is Ideal: Optimizing Tail-latency for Heavy-tailed Datacenter Workloads with Perséphone. In ACM SOSP’21.
Didona, D. and Zwaenepoel, W. (2019). Size-Aware Sharding for Improving Tail Latencies in In-Memory Key-Value Stores. In USENIX NSDI’19.
Foundation, L. (2024). The Linux Kernel. Disponível em [link].
Fried, J. et al. (2020). Caladan: Mitigating Interference at Microsecond Timescales. In USENIX OSDI’20.
Intel (2023). Intel® 64 and IA-32 Architectures Software Developer’s Volumes 3C: System Programming Guide. Seção 26.5.5.
Kaffes, K. et al. (2019). Shinjuku: Preemptive Scheduling for µsecond-scale Tail Latency. In USENIX NSDI’19.
McClure, S. et al. (2022). Efficient Scheduling Policies for Microsecond-Scale Tasks. In USENIX NSDI’22.
Nishtala, R. et al. (2013). Scaling Memcache at Facebook. In USENIX NSDI’13.
Ousterhout, A. et al. (2019). Shenango: Achieving High CPU Efficiency for Latency-Sensitive Datacenter Workloads. In USENIX NSDI’19.
Ousterhout, J. et al. (2015). The RAMCloud Storage System. ACM Transactions on Computer Systems (TOCS).
Peter, S. et al. (2015). Arrakis: The Operating System is the Control Plane. ACM Transactions on Computer Systems (TOCS).
Prekas, G. et al. (2017). Zygos: Achieving Low Tail Latency for Microsecond-Scale Networked Tasks. In ACM SOSP’17.
Qin, H. et al. (2018). Arachne: Core-Aware Thread Management. In USENIX OSDI’18.
Redis Ltd. (2023). Redis. Disponível em [link].
Schöne, R. et al. (2015). Wake-up Latencies for Processor Idle States on Current x86 Processors. Computer Science-Research and Development.
Sohil Mehta (2023). x86 User Interrupts support. Disponível em [link].
Wierman, A. and Zwart, B. (2012). Is Tail-Optimal Scheduling Possible? Operations Research.
Zhang, Z. et al. (2022). CRISP: Critical Path Analysis of Large-Scale Microservice Architectures. In USENIX ATC’22.
Publicado
20/05/2024
Como Citar
BERGHETTI, Mayco S.; CARVALHO, Fabrício B.; FERREIRA, Ronaldo A..
AFP: Um Escalonador de Requisições de Microsserviços Guiado por Feedback. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS DISTRIBUÍDOS (SBRC), 42. , 2024, Niterói/RJ.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2024
.
p. 1148-1161.
ISSN 2177-9384.
DOI: https://doi.org/10.5753/sbrc.2024.1554.