AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 254158
Accepted
Frederik Vanderhaegen
Frederik Vanderhaegen
Asked: 2019-11-27 05:10:38 +0800 CST2019-11-27 05:10:38 +0800 CST 2019-11-27 05:10:38 +0800 CST

Comprimento da fila do processador, mas não muito alto uso da CPU

  • 772

Eu tenho um servidor virtual executando o SQL Server 2016 (4 vcores) onde na maioria das vezes há um comprimento de fila do processador de 4 (às vezes até 15), mas a CPU está usando 25% em média. Existem cerca de 3000 lotes/s.

Usando uma consulta encontrada em um artigo de Glenn Berry encontrado no SQLSkills.com, descobri que existe um avg_task_countde 15 e um avg_runnable_task_countde 2 (mas não constantemente):

SELECT AVG(current_tasks_count) AS [Avg Task Count], 
AVG(work_queue_count) AS [Avg Work Queue Count],
AVG(runnable_tasks_count) AS [Avg Runnable Task Count],
AVG(pending_disk_io_count) AS [Avg Pending DiskIO Count]
FROM sys.dm_os_schedulers WITH (NOLOCK)
WHERE scheduler_id < 255 OPTION (RECOMPILE);

É correto dizer que o tamanho da fila do processador e o avg_task_countsão uma indicação de que há muitas solicitações e o servidor tem problemas para processá-las? Mas o que eu não entendo é por que o uso da CPU não é maior?

O host físico tem um uso de CPU de 25%, não há reserva de memória, mas não há comprometimento excessivo de memória no host.

sql-server performance
  • 1 1 respostas
  • 1775 Views

1 respostas

  • Voted
  1. Best Answer
    Hannah Vernon
    2019-11-30T06:31:56+08:002019-11-30T06:31:56+08:00

    Embora as recomendações abaixo possam não reduzir especificamente o comprimento da fila do processador abaixo de 4 em uma VM de 4 CPUs, elas ajudarão no desempenho geral, e é provavelmente por isso que você está fazendo sua pergunta.

    As práticas recomendadas publicadas pela VMware e pela Microsoft recomendam explicitamente que você defina uma reserva de CPU e uma reserva de memória para qualquer VM que execute o SQL Server.

    Consulte Architecting Microsoft SQL Server on vSphere - Best Practices Guide by VMware para obter todos os detalhes sobre como fazer o SQL Server funcionar de forma confiável com o melhor desempenho possível.

    Eu sei que você não está usando o produto Hyper-V da Microsoft, mas para futuros usuários que possam ver esta postagem, consulte Executando o SQL Server com memória dinâmica Hyper-V para obter suas recomendações.

    As recomendações específicas para obter o melhor desempenho do SQL Server incluem:

    1. Configure a "memória máxima do servidor" para uma configuração que faça sentido para o seu ambiente. Esta postagem pode ajudá-lo a determinar o que deve ser definido.

    2. Certifique-se de definir "min server memory" para um valor que faça sentido. Para SQL Servers de produção, é "típico" definir isso para o mesmo valor de "memória máxima do servidor" ou para um valor 1 ou 2 GB inferior à memória máxima do servidor, caso o sistema operacional sofra extrema pressão de memória.

    3. Configure a conta de serviço usada pelo SQL Server com o direito "Bloquear páginas na memória". Veja este post para detalhes.

    4. Certifique-se de ter pelo menos 2 núcleos configurados para a VM. Você provavelmente quer muito mais do que 2, mas configurar a VM com um único núcleo é uma receita para o desastre. Para instalações de produção do SQL Server, recomendo pelo menos 8 núcleos.

    5. No Hyper-V, configure a VM para reconhecer NUMA e desative a "Memória Dinâmica". Muitos servidores rejeitarão essa sugestão, pois ela reduz o número de VMs que podem ser executadas em um único servidor host; no entanto, é fundamental para o bom desempenho de qualquer serviço que precise consistentemente de muita memória, como um sistema de gerenciamento de banco de dados. No VMWare, configure a VM com uma reserva de memória que corresponda à quantidade total de memória atribuída à VM. Isso impede que o driver de balão VMware consuma memória na VM, o que, por sua vez, reduziria a memória disponível para o SQL Server e, portanto, reduziria o desempenho.

    6. Certifique-se de usar configurar a VM com uma interface SCSI de alta fila e uma interface de rede - leia os documentos de práticas recomendadas vinculados acima para obter recomendações específicas.

    Como @SqlWorldWide mencionou em um comentário sobre sua pergunta, você deve olhar para este arquivo . Extraído desse post do grupo de notícias:

    Antes de tudo, qualquer coisa abaixo de 10 é normal para o contador de comprimento da fila do processador no perfmon (de acordo com a documentação do perfmon)

    Em segundo lugar, se você tiver vários processadores, precisará dividir o comprimento da fila pelo número de processadores. Porque há apenas um agendador no sistema SMP também.

    E por último o comprimento da fila é um contador instantâneo. Ele mostra o número de threads prontos no momento, o que é uma espécie de nome incorreto porque IMHO leva em consideração apenas a fila de prioridade mais alta (observe que há fila por prioridade). Esses threads eventualmente serão bloqueados em algo como E/S ou mecanismo de sincronização.

    Agora o contador de uso da CPU é diferente: é calculado medindo a duração do thread ocioso ativo no intervalo de amostra e subtraindo esse tempo da duração do intervalo O thread ocioso será executado apenas quando não houver nenhum thread pronto com prioridade mais alta. E esta é essencialmente a suposição básica de qualquer sistema preemtivo. Eu posso ter um único thread (além do Idle), mas se ele executar um código como este:

    while ( true );

    O contador de uso da CPU mostrará 100%. Observe que neste caso hipotético o comprimento da fila é 1 :o)

    • 2

relate perguntas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve