Questão nº 55
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 55)
No contexto de um sistema operacional que suporta execução paralela, o analista Léo é encarregado de otimizar um aplicativo que faz uso intensivo de threads. O aplicativo em questão tem experimentado tempos de resposta inconsistentes, suspeitando-se de uma ineficiência na forma como as threads são gerenciadas e escalonadas.
Considerando um ambiente com múltiplos núcleos de CPU, para melhorar o desempenho do aplicativo, o analista Léo deve:
- Aincrementar o número de threads para igualar o número de núcleos de CPU disponíveis, partindo do princípio de que mais threads resultarão em melhor paralelismo e desempenho;
- Bimplementar um algoritmo de escalonamento de threads baseado em prioridades, onde threads que realizam operações críticas para o desempenho recebem maior prioridade; (alternativa correta)
- Cforçar todas as threads a executarem em um único núcleo para evitar a sobrecarga associada à troca de contexto entre diferentes núcleos;
- Dutilizar um modelo de programação baseado em eventos em vez de threads, eliminando a necessidade de gerenciamento de threads;
- Ereduzir a prioridade do processo do aplicativo no gerenciador de tarefas do sistema operacional para que outros processos possam ser executados com maior eficiência, partindo do princípio de que isso indiretamente melhorará o desempenho do aplicativo multithreaded ao otimizar o uso geral de recursos do sistema.
Resposta comentada
Gabarito Alternativa B
Threads são unidades de execução dentro de um programa, e para que um aplicativo multithreaded funcione eficientemente em um sistema com múltiplos núcleos de CPU, o sistema operacional precisa gerenciar e escalonar (decidir qual thread roda quando) essas threads de forma inteligente, evitando gargalos e garantindo que as tarefas mais importantes sejam executadas rapidamente.
(A) Incorreta: Simplesmente aumentar o número de threads para igualar os núcleos não garante melhor desempenho; pode aumentar a sobrecarga de troca de contexto (context switching) e a contenção de recursos, piorando a performance. A armadilha aqui é a crença intuitiva de que mais threads sempre significam mais paralelismo e, consequentemente, melhor desempenho, ignorando os custos de gerenciamento e a natureza das tarefas.
(B) Correta: Implementar um escalonamento baseado em prioridades permite que as threads que executam operações críticas para o desempenho do aplicativo recebam mais tempo de CPU, reduzindo a latência e melhorando a consistência dos tempos de resposta, o que é fundamental para otimizar um aplicativo com uso intensivo de threads e problemas de inconsistência.
(C) Incorreta: Forçar threads a um único núcleo anula os benefícios de um ambiente multi-core, criando um gargalo e serializando a execução, o que degradaria drasticamente o desempenho do aplicativo.
(D) Incorreta: Mudar para um modelo de programação baseado em eventos é uma alteração arquitetural fundamental, não uma otimização do gerenciamento de threads existente; embora útil para certas cargas de trabalho (I/O-bound), não é a solução para otimizar o escalonamento de threads já existentes em um aplicativo multithreaded.
(E) Incorreta: Reduzir a prioridade do processo do aplicativo faria com que o sistema operacional dedicasse menos recursos a ele, piorando diretamente seu desempenho e seus tempos de resposta, o oposto do objetivo de otimização.
Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.